Está en la página 1de 2

UNIVERSIDAD DE ALCAL

DEPARTAMENTO DE AUTOMTICA
REA DE ARQUITECTURA Y TECNOLOGA DE COMPUTADORES
ASIGNATURA DE PROGRAMACIN AVANZADA
GRADO EN G.I.T. / G.I.T.T. Pgina 1

PRCTICA 4: Ampliacin de la clase implementada en la prctica 3 (en sus dos
versiones).

OBJETIVOS: Manejo de los conceptos de constructor y destructor. Parmetros por
defecto. Constructor copia.

TEMPORIZACIN:
Publicacin del enunciado: Semana del 17 de febrero.
Entrega: Semana del 10 de marzo junto con las prcticas 3 y 5.
Lmite de entrega (con penalizacin): Semana del 17 de marzo.

BIBLIOGRAFA
Programacin orientada a objetos con C++
Autor: Fco. J avier Ceballos
Editorial: RA-MA.


Se aadirn a la clase CHor a implementada en la prctica 3 los siguientes elementos:

Un constructor que permita iniciar un objeto con ninguno, todos o algunos de los
datos (horas, minutos, segundos y formato). Esto implica que se han de definir
parmetros con valores por omisin.

Un constructor copia (no utilizar el operador =para la implementacin de este
constructor).

Un destructor.

La sobrecarga del operador de asignacin.

Hacer que los constructores, el destructor y el operador de asignacin visualicen un
mensaje indicando que han sido invocados.

Hacer que el mtodo EsHor aCor r ect a de CHor a sea pblico.

El programa principal se escribir en un fichero pr ct i ca4. cpp y mostrar el siguiente
men desde su funcin mai n:

1. Cr ear un obj et o l ocal . Def i na un obj et o de mbi t o l ocal en l os bl oques
donde sea necesar i o. (Esta opcin mostrar el siguiente submen)

a. Con una hor a pr edet er mi nada.
b. I nt r oduci endo l a hor a.
c. I nt r oduci endo l a hor a y l os mi nut os.
d. I nt r oduci endo l a hor a, l os mi nut os y l os segundos.
e. I nt r oduci endo l a hor a, l os mi nut os, l os segundos y el f or mat o.
f . Vol ver al men pr i nci pal .

2. Cr ear un obj et o di nmi cament e. Par a el l o, def i ni r un punt er o a ni vel de
main y cr ear l o i nvocando a new donde sea necesar i o. El objeto ser
destruido en la opcin 5.

UNIVERSIDAD DE ALCAL
DEPARTAMENTO DE AUTOMTICA
REA DE ARQUITECTURA Y TECNOLOGA DE COMPUTADORES
ASIGNATURA DE PROGRAMACIN AVANZADA
GRADO EN G.I.T. / G.I.T.T. Pgina 2

3. Const r uct or copi a.
(Crear un objeto de mbito local a partir del objeto dinmico del punto 2)

4. Oper ador de asi gnaci n.
(Copiar en un objeto de mbito local el dinmico del punto 2)

5. Ter mi nar (liberar los objetos dinmicos)

Cada opcin invocar a la funcin externa VisualizarHora de la prctica 3.

En la prctica 2 escribi los ficheros ut i l s. h y ut i l s. cpp que incluan las funciones
Leer I nt , Leer Doubl e, Leer Cadena, Cr ear Menu, Mi nscul as, etc. Utilizando el
concepto de funcin sobrecargada, escriba las sobrecargas de bool Leer Dat o( tipo&
dat o) que sustituyan a las funciones Leer . . . anteriores. Por ejemplo:
Leer I nt ( ) ser sustituida por bool Leer Dat o( i nt & dat o)
Leer Doubl e( ) ser sustituida por bool Leer Dat o( doubl e& dat o)
Leer Cadena( ) ser sustituida por bool Leer Dat o( st r i ng& dat o) y por
bool Leer Dat o( char *dat o)
...

Todas estas funciones, junto con las funciones Cr ear Menu, Mi nscul as y cualquier otra
que se estime necesaria, se implementarn como mtodos static de una clase CUt i l s
perteneciente al espacio de nombres ut i l s:

namespace ut i l s
{
cl ass CUt i l s
{
publ i c:
. . .
};
};

En la versin de la prctica con char * debe ponerse un cuidado especial en el manejo
de la memoria dinmica del miembro m_pszFor mat o. Es habitual poner a 0 ( NULL) los
datos miembro de tipo puntero que no apuntan a ningn espacio de memoria reservada.
Sin embargo, en esta prctica es ms sencillo reservar memoria en los constructores y
liberarla en el destructor (sin llegar a usar NULL para ese puntero en ningn momento),
ya que las cadenas de formato de fecha tienen siempre la misma longitud.

Todas las funciones que reciban punteros como parmetros debern contemplar la
posibilidad de recibir el valor NULL.

En la versin de la prctica que utiliza el tipo string en lugar de char *, razone
qu mtodos de la clase CHora pueden eliminarse por resultar innecesarios.

También podría gustarte