You are on page 1of 4

UNIVERSIDADPOLITCNICADEMADRID

ESCUELAUNIVERSITARIADEINFORMTICA
DPTO.LENGUAJES,PROYECTOSYSISTEMASINFORMTICOS

PROGRAMACINORIENTADAAOBJETOS
EXAMEN23demarzode2012GRUPOGSM12

.
APELLIDOS.NOMBRE.

NDEMATRCULA.............................................................FIRMA
Valoracindelaprueba:1punto

Calificacin:

1. La siguiente figura muestra el diagrama de clases de un cierto programa C++.


Considerando estas relaciones, codificar en C++ unos ficheros de cabecera (.h) para las
clasescClase1,cClase2,cClase3,cClase4ycClase5.
Losmtodosyatributosdecadadecadaclasesernalmenoslosnecesariosparapermitir
mostrartodaslasrelacionesqueseindican.

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).

4. Para realizar un proyecto en C++ correspondiente a un estudio de grabacin donde se


grabanCDsconcancionessenecesitandesarrollarlasclasescCDycCancion.

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;
}

You might also like