Professional Documents
Culture Documents
ESCUELAUNIVERSITARIADEINFORMTICA
DPTO.LENGUAJES,PROYECTOSYSISTEMASINFORMTICOS
PROGRAMACINORIENTADAAOBJETOS
EXAMEN23demarzode2012GRUPOGSM12
.
APELLIDOS.NOMBRE.
NDEMATRCULA.............................................................FIRMA
Valoracindelaprueba:1punto
Calificacin:
cClase2
cClase4
cClase1
cClase3
cClase5
classcClase1{
classcClase2{
private:
private:
cClase2obj1;
cClase3*p3;
cClase3obj2;
public:
public:
cClase2();
cClase1();
voidmet1(cClase4);
...
cClase5met2();
};
classcClase4{
...
private:
};
classcClase3{
private:
cClase5*p5
public:
cClase3();
classcClase5{
private:
...
...
public:
public:
cClase4();
cClase4();
...
...
};
};
...
};
2. CmoseestableceunarelacindeusoodependenciaconvisibilidadprivadaenC++?
Atravsdeladeclaracindeunobjetolocalenlaimplementacindeunmtododelaclase.
3. Aquobjetossetieneaccesoenlaimplementacindelosmtodosdeunaclase?
losatributosdelaclase;
losparmetrosdelmtodo;
lasvariablesyobjetoslocalesdelmtodo;
this (puntero al objeto que reciba el mensaje correspondiente al mtodo que se est
definiendo).
LaclasecCDtienelassiguientescaractersticas:
Atributos:
canciones:unarraydepunterosaobjetosdelaclasecCancion.
contador:nmerodeelementosdelarraycanciones.
ElnmeromximodecancionesquepuedentenerlosobjetosdelaclasecCDes20.
Mtodos:
constructorpordefecto
constructorcopia
destructor
numCanciones():devuelveelvalordelcontadordecanciones.
dameCancion(int): devuelve la cancin que se encuentra apuntada por la posicin
indicada.
grabarCancion(int,cCancion): hace que el puntero correspondiente a la posicin
indicadaapuntealacancinproporcionada.Siesepunteroyaapuntabaaunacancin,
laborraantesdeintroducirlanueva.
aniadir(cCancion): aade la cancin proporcionada al final de las grabadas hasta el
momento.
eliminar(int): elimina la cancin que se encuentra apuntada por el puntero de la
posicinindicada.
SedisponedelaclasecCancinyaimplementada.
ficherocCancin.h
classcCancion{
public:
cCancion();
cCancion(string,string);
cCancion(constcCancion&);
voidoperator=(cCancion);
stringsetTitulo();
stringsetAutor();
voidgetTitulo(string);
voidgetAutor(string);
voidleer();
voidmostrar();
private:
stringtitulo;
stringautor;
};
a) EscribirelficherocCD.h
#ifndefCCD_H_
#defineCCD_H_
#include"cCancion.h"//sedebeincluirestaclaseparapoderutilizarla
#definenumC20
classcCD{
private:
cCancion*canciones[numC];//atributos
intcontador;
public:
cCD();
cd(constcCd&);
~cCD();
intnumCanciones();
cCanciondameCancion(int);
voidgrabarCancion(int,cCancion&);
voidaniadir(cCancion);
voideliminar(int);
};
#endif//CCD_H_
b)
EscribirlaimplementacindelossiguientesmtodosenelficherocCD.cpp
Constructor
dameCancion(int)
grabarCancion(int,cCancion)
aniadir(cCancion)
cCD::cCD(){
contador=0;
for(inti=0;i<numC;i++)
canciones[i]=NULL;
}
cCancioncCD::dameCancion(intpos){
if(pos<=contador)
return*canciones[pos1];
else{
cout<<"nohayningunacancionenesaposicion"<<endl;
cCancionaux;//devuelveunaposicinvaca
returnaux;
}
}
voidcCD::grabarCancion(intpos,cCancionC){//unaposiblesolucion
if(pos<=contador){
delete(canciones[pos1]);
canciones[pos1]=newcCancion;
*canciones[pos1]=C;
else{
cout<<"nohayningunacancionenesaposicion"<<endl;
}
}
voidcCD::aniadir(cCancionC){
if(contador==0){
canciones[0]=newcCancion;
*canciones[0]=C;
contador=1;
else{
if(contador<numC){
canciones[contador]=newcCancion;
canciones[contador]=C;
contador++;
else{
cout<<"yanoquedasitioenelCD"<<endl;
}
}
}
c) Codificar una funcin main, con acceso a las clases cCD y cCancion de un programa
C++querealicelassiguientesacciones:
CreaunobjetodelaclasecCD
CreaunacancindecCancinconundeterminadottuloyautor
AadeesacancinalCDcreado
EscribeenpantallalosdatosdelaprimeracancindelCD
EliminadelCDlaltimacancingrabada
#include"cCD.h"
intmain(){
cCDoCD;
cCancionoC("titulo1","autor1");
oCD.aniadir(oC);
oCD.dameCancion(1).mostrar();
oCD.eliminar(oCD.numCanciones());
return0;
}