Examen Tema 3 POO (Solucion)

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 3

UNIVERSIDADPOLITCNICADEMADRID

ESCUELAUNIVERSITARIADEINFORMTICA
DPTO.LENGUAJES,PROYECTOSYSISTEMASINFORMTICOS

PROGRAMACINORIENTADAAOBJETOS
SOLUCINEXAMEN27deabrilde2011GRUPOGSM12

1. Indicar cmo se puede especializar una clase derivada respecto a su clase base en una
jerarquadeherencia.

Aadiendoatributosomtodosyredefiniendomtodosheredadosdelaclasebase.

2. Indicarlasdiferenciasmsconsiderablesentrelasrelacionesdecomposicin,asociaciny
dependenciafrentealarelacindeherencia.

Composicin, asociacin y dependencia se establecen a travs de colaboraciones entre


objetos de las clases que se reflejan en el cdigo en la existencia de mensajes entre
objetosdedichasclases.
La relacin de herencia implica la transmisin de atributos y mtodos de unas clases a
otras,loquenosucedeenlasotrasrelaciones

3. Explicarquesunaclaseabstractaysidadaunaclaseabstractasepueden:
Construirobjetosdeesaclase
Declararpunterosaesaclase
Declararparmetrosporreferenciaaesaclase

Lasclasesabstractassonaquellasenlasquealmenosunmtodonoestimplementado.
Tienenalmenosunmtodovirtualpuro

Nosepuedenconstruirobjetosdelasclasesabstractas
Ssepuedendeclararpunterosaesaclase
Ssepuedendeclararparmetrosporreferenciaaesaclase

4. Explicarlasllamadasaconstructoresydestructoresdelaclasebasealconstruirydestruir
unobjetodesuclasederivada.

Cuandosecreaunobjetodeunaclasederivada,siempreseinvocaenprimerlugar
(implcitaoexplcitamente)aunconstructordelaclasebase.
Explcitamente:mediantelalistadeinicializacionesenlosconstructoresdelaclase
hija.(ej:Hija(inta,intb):Base(a,b),{};)
Implcitamente:Sinoseespecificauno,seejecutaelconstructorpordefectodela
clasebase.

Paraelcasodelosdestructores:cuandosedestruyeunobjetodeunaclasederivada,seinvoca
primeroaldestructordelaclasederivadayalfinalseinvocaaldestructordelaclasebase

UNIVERSIDADPOLITCNICADEMADRID
ESCUELAUNIVERSITARIADEINFORMTICA
DPTO.LENGUAJES,PROYECTOSYSISTEMASINFORMTICOS

PROGRAMACINORIENTADAAOBJETOS
SOLUCINEXAMEN27deabrilde2011GRUPOGSM12

5. ApartirdeladefinicinenC++delaclasecAsignaturadadaacontinuacin.

classcAsignatura{

private:

stringnombre;

stringtemario[10];

public:

cAsignatura();

cAsignatura(constcAsignatura&);
stringgetNombre();

stringgetTemariol();

voidoperator=(cAsignatura);

voidmostrar();//muestraenpantallaelvalordetodoslosatributosdelobjeto

};

Se ha definido la clase cAsignaturaOptativa como clase heredada de cAsignatura,


aadiendounatributoparaindicarlaespecialidadalaqueperteneceyotroparaindicarel
semestreenelqueseimparte.
Definir e implementar la clase cAsignaturaOptativa, que proporcione la misma
funcionalidadquelaclasecAsignatura.Paraelloaadiroredefinirlosconstructoresylos
mtodosheredadosnecesariosdelaclasecAsignaturaenestaclase.
SedebeescribircAsignaturaOptativa.hycAsignaturaOptativa.cpp

FicherocAsignaturaOptativa.h

classcAsignaturaOptativa:publiccAsignatura{
private:
stringespecialidad;
stringsemestre;
public:
cAsignaturaOptativa();
cAsignaturaOptativa(constcAsignaturaOptativa&);
voidoperator=(cAsignaturaOptativa);
voidmostrar();
};

FicherocAsignaturaOptativa.pp
cAsignaturaOtativa::cAsignaturaOptativa():cAsignatura(){
especialidad=;
semestre=;
}
cAsignaturaOtativa::cAsignaturaOptativa(constcAsignaturaOptativa&Asig):cAsignatura(Asig){
especialidad=Asig.especialidad;
semestre=Asig.semestre;
}
voidcAsignaturaOptativa::operator=(cAsignaturaOptativaAsig){
cAsignatura::operator=(Asig);
especialidad=Asig.especialidad;
semestre=Asig.semestre;
}
voidcAsignaturaOptativa::mostrar(){;
cAsignatura::mostrar();
cout<<laespeciadidades:<<especialidad<<endl;
cout<<elsemestrees:<<semestre<<endl;
}

UNIVERSIDADPOLITCNICADEMADRID
ESCUELAUNIVERSITARIADEINFORMTICA
DPTO.LENGUAJES,PROYECTOSYSISTEMASINFORMTICOS

PROGRAMACINORIENTADAAOBJETOS
SOLUCINEXAMEN27deabrilde2011GRUPOGSM12

6. EnelanlisisdeunaaplicacinaparecenlasclasescPilaFaccionycColaFraccionquenos
permitenoperarconestructurasdinmicasdeobjetosdelaclasecFraccion.

ClasecPilaFraccion
ClasecColaFraccion
Mtodos:
Mtodos:
constructorpordefecto

constructorpordefecto
sacar,queextraelasiguiente

sacar,queextraelasiguientefraccin

delacola
fraccindelapila

meter,queintroducelasiguiente
meter,queintroducelasiguiente
fraccinenlacola
fraccinenlapila

vacia,quecompruebasilacolaest

vacia,quecompruebasilapilaest

vaca
vaca

Atributos:
Atributos:

cNodoFraccion*pInicio;
cNodoFraccion*pInicio;
//ConesteatributodeclasecNodoFraccionse
//ConesteatributodeclasecNodoFraccionse
apuntaalprimerelementodelapila
apuntaalprimerelementodelacola

Ambasclasestienenlamismaimplementacin,exceptoelmtodosacarqueesdiferenteen
ambas clases., por lo que se ha decidido disear una nueva clase cContenedor, de la que
hereden las dos clases anteriores, as como otras de caractersticas similares que se
incorporarnposteriormente.
SedisponedelasclasescNodoFraccionycFraccionyadiseadaseimplementadas.
EscribirenC++losficheros.hdelastresclasescContenedor,cPilaFraccionycColaFraccion

classcContenedor{
classcPilaFraccion:publiccContenedor{

public:
public:

cContenedor();

cPilaFraccion();

virtualcFraccionSacar()=0;

cFraccionSacar();

voidmeter(cFracccion)
};

boolvacia();

classcColaFraccion:publiccContenedor{
private:

public:
cNodoFraccion*pInicio;

cColaFraccion();

};

cFraccionSacar();

};

También podría gustarte