Está en la página 1de 3

Estructura de Datos I

Pgina:

COMPOSICION
// Definicin de la clase Empleado: empleado.h #ifndef FECHA_H #define FECHA_H class Fecha { public: Fecha( int = 1, int = 1, int = 1900 ); void imprime() const; ~Fecha(); private: int mes; int dia; int anio; int verificaDia( int ); }; #endif

//Definicin de las funciones miembro de la clase Fecha #include <iostream> using namespace std; #include fecha.h Fecha::Fecha( int mm, int dd, int aa ) { if ( mm > 0 && mm <= 12 ) mes = mm; else { mes = 1; cout << Mes << mm << no valido. Establece en 1 al mes. \n; } anio = aa; dia = verificaDia( dd ); cout << Constructor del Objeto Fecha para la fecha ; imprime(); cout << endl; } void Fecha::imprime() const { cout << mes << / << dia << / << anio; } Fecha::~Fecha(){ cout << Destructor del objeto Fecha para la fecha ; imprime(); cout << endl; } //funcin de utilidad para confirmar el valor apropiado de //dia de acuerdo con el mes y el ao. int Fecha::verificaDia( int pruebaDia ) { static const int diasPorMes[ 13 ] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; if ( pruebaDia > 0 && pruebaDia <= diasPormes[ mes ] ) return pruebaDia;

M.Sc. Karim Guevara Puente de la Vega

Estructura de Datos I

Pgina:

if ( mes == 2 && pruebaDia == 29 && ( anio % 400 == 0 || ( anio % 4 == 0 && anio % 100 = 0 ))) return pruebadia; cout << Dia << pruebaDia << no valido. Establece en 1 al dia.\n; return 1; }

// Declaracin de la clase Empleado: Empleado1.h #ifndef EMPLEADO1_H #define EMPLEADO1_H #include fecha.h class Empleado { public: Empleado( char *, char *, int, int, int, int, int, int ); void imprime() const; ~Empleado(); private: char nombre[ 25 ]; char apellido [ 25 ]; const Fecha fechaNacimiento; const Fecha fechaContratacin; }; #endif

//Definicin de las funciones miembro de la clase Empleado: //empleado1.cpp #include <iostream> using namespace std; #include <cstring> #include <cassert> #include empleado1.h #include fecha.h Empleado::Empleado( char *nomb, char *apell, int mesnacim, int dianacim, int anionacim, int mescontra, int diacontra, int aniocontra ) : fechaNacimiento( mesnacim, dianacim, anionacim ), fechaContratacion( mescontra, diacontra, aniocontra ) { int longitud = strlen( nomb ); longitud = ( longitud < 25 ? longitude : 24 ); strncpy( nombre, nomb, longitud ); nombre[ longitud ] = \0; cout << Constructor del objeto Empleado: << nombre << << apellido << endl; } void Empleado::imprime() const { cout << apellido << , << nombre << \nContratado: ; fechaContratacion.imprime(); cout << Fecha de nacimiento: ; fechaNacimiento.imprime(); cout << endl; }

M.Sc. Karim Guevara Puente de la Vega

Estructura de Datos I Empleado::~Empleado(){ cout << Destructor del objeto Empleado: << apellido << , << nombre << endl; }

Pgina:

//Demostracin de la composicin #include <iostream> using namespace std; #include empleado1.h int main() { Empleado e( Roberto, Jimenez, 7, 24,1949, 3, 12,1988 ); cout << \n; e.imprime(); cout << \nPrueba el constructor Fecha con valores no validos:\n; fecha f( 14, 35, 1994 ); cout << \n; return 0; }

M.Sc. Karim Guevara Puente de la Vega

También podría gustarte