Sei sulla pagina 1di 3

Programacin Orientada a Objetos

Apellidos, Nombre

DepartamentodeInformtica

/ GRUPO

____________________________________/______
Examen Junio 2014

1.(2puntos)
Respondaalassiguientespreguntas(15lneascomomximo)

a) Qu es el miembro
this
? Describa las tres situaciones en que se debe utilizar y escriba un
pequeoejemplodecadaunadeellas.
b)
Clasesabstractas:quson?paraqusirven?cmoseutilizan?

2.(2puntos)

Respondabrevementelassiguientescuestiones(entre3y7lneascomomximo)

a)
Expliqueladiferenciaentreunaclaseyunobjeto

b) Por qu es(casisiempre)necesariodefinirexpresamenteelconstructordecopiayeloperador
deasignacin?

c) Suponiendo elcdigo delcuadro inferior, expliquecmocambialavisibilidaddelosatributos


y mtodos de la superclase Equipo en las subclases en base al carcter de la herencia (puedes
haceruncuadroresumen)

classEquipo{
private:
std::stringnombre
protected:
intnumJugadores
}

classFutbol:publicEquipo{}
classBaloncesto:protectedEquipo{}
classTenis:privateEquipo{}

d) Cmo se puede comunicar internamente (esto es: sin mostrar mensajes al usuario) un error
producidoenunconstructor,paratratarloadecuadamente?PonunejemploencdigoC++

1/3

3. (3 puntos)
El Departamento de Informtica ha decidido construir una aplicacin para gestionar
repositorios de objetos de aprendizaje. Cada repositorio tiene asociado un nombre y una fecha de
creacin, e incluye una coleccin
nicadeobjetosdeaprendizaje.Unobjetodeaprendizajepuedeserun
fichero (de cualquier tipo), una actividad (guardamos solo el nmero de ejercicios que contiene) o un
enlace a un recurso web (guardamossudireccin URL). Por motivos dederechosdeautor,unobjetode
aprendizaje solo puede pertenecer a un repositorio. Cada objeto de aprendizaje lleva asociados un
nombre
y un pesomedidoenKilobytes. El peso de una actividad se calcula como nmero de ejercicios
quecontiene multiplicado por0.5KB eldeunenlaceaunrecursoessiempre0.5KBmientrasqueelde
un fichero es el peso que se leasigne en el constructor. Por motivosdeespacio, el peso de un fichero
nuncapuedesersuperiora16000KB.

a) Modele en UML el diagrama de clases detallando la mxima informacin posible sobre


atributos (tipos y visibilidad) y relaciones (tipo, nombre, cardinalidad). Refleje cualquier
suposicinadicionalquehaga.

b) ImplementeenC++larepresentacin(estoes,atributos)delasclases
Repositorio
,el
Objetode
aprendizaje y
Actividad
. Implementar los mtodos get
/
set bsicos necesarios de objeto de
aprendizajeyactividad.

c) Implemente los siguientes mtodos de la clase


Repositorio segn las especificaciones del
modelo:
Constructor de copia
de un repositorio
Aadir una nueva actividad a un repositorio
Obtenerel peso total
delrepositorio(comolasumadelospesosdelosobjetosdeaprendizajeque
contiene)

Nota: en los anteriores apartados implemente cualquier otro mtodo que fuera necesario y detallar
cualquiersuposicinqueconsidereoportunoparajustificarsusdecisionesdediseo

(Elexamencontinapordetrs)

2/3

4.(1 punto)
Este diagramaUML representa unsistemadepublicacinysubscripcindecontenidos. El
sistema dispone de diferentes canales de contenidos identificados por un ttulo. Para un canal, los
usuariospuedensubscribirsepararecibirsuscontenidos.Cuandosepublicaunmensajealcanal,seenva
a todos los usuarios subscritos utilizando respectivamente su mtodo
Usuario::envia()
. Los contenidos
queseaceptandebenimplementarlainterfaz
Mensaje
.

a) Definir en C++ la clase


Canal junto con todos sus atributos necesarios e implementar un
constructorparametrizado
quetambinpuedausarsepordefecto.
Omitalosmtodosget/set

b)
Implementardeforma
inline
losmtodos
Canal::alta(usuario)
y
Canal::totalUsuarios()

5.(2puntos)
Sobreelmodelodelejercicio4:

a) Definir en C++ la Interfaz Mensaje. Definir tambin las clases


Noticia y
Anuncio (
omitalos
mtodosenla definicin para estas ltimas
).Implementarlosmtodosdelainterfazpara
Noticia
y
Anuncio teniendo en cuenta que en el caso de anuncios, el asunto del mensaje debe tener la
forma
Consejopublicitariode
yacontinuacinlamarcaquelopatrocina.
b) Implementar el mtodo
Canal::publicar(mensaje),
tal y como se indica en el diagrama, de
formaque se enve el mensaje indicadoatodoslossubscriptoresdelcanal.Sielcanalesdepago,
no se admitir el envo de Anuncios, en cuyo casoselanzarlaexcepcin
std::invalid_argument
juntoconunmensajedescriptivoasociado.

Nota para ejercicios 4 y 5: Suponer que estn implementados todos los mtodos get y set para los
atributos de tipossimplesentodaslasclases.Implementecualquierotromtodoofuncindelcualdeba
hacerusopararesolverlosmtodosaqusolicitados.

3/3

Potrebbero piacerti anche