#include #include #include #include class Persona { char Nombre[40]; char Direccion[40]; char FechaNac[11]; public: Persona(char *, char *, char *); virtual void MuestraDatos(void)=0; char *DameNombre(void); char *DameDireccion(void); char *DameFechaNac(void); }; Persona::Persona(char *N, char *D, char *F) { strcpy(Nombre, N); strcpy(Direccion, D); strcpy(FechaNac, F); } char *Persona::DameNombre(void) { return Nombre; } char *Persona::DameDireccion(void) { return Direccion; } char *Persona::DameFechaNac(void) { return FechaNac; } class Profesor : public Persona { char Categoria[30]; char Dedicacion[5]; public : Profesor(char *, char *, char *, char *, char *); void MuestraDatos(void); char *DameCategoria(void); char *DameDedicacion(void); }; Profesor::Profesor(char *N, char *D, char *F, char *C, char *De): Persona(N, D, F) { strcpy(Categoria, C); strcpy(Dedicacion, De); } void Profesor::MuestraDatos(void) { cout << "Datos del Profesor: " << endl; cout << "Nombre: " << DameNombre() << endl; cout << "Categoria: " << DameCategoria() << endl; cout << "Dedicación: " << DameDedicacion() << endl; } char *Profesor::DameCategoria(void) { return Categoria; } char *Profesor::DameDedicacion(void) { return Dedicacion; } class Alumno: public Persona { char Especialidad[40]; int NumeroDeCreditos; public: Alumno(char *, char *, char *, char *, int); void MuestraDatos(void); char *DameEspecialidad(void); int DameNumeroDeCreditos(void); }; Alumno::Alumno(char *N, char *D, char *F, char *E, int C): Persona(N, D, F) { strcpy(Especialidad, E); NumeroDeCreditos = C; } void Alumno::MuestraDatos(void) { cout << "Datos del Alumno: " << endl; cout << "Nombre: " << DameNombre() << endl; cout << "Especialidad: " << DameEspecialidad() << endl; cout << "Número de Créditos: " << DameNumeroDeCreditos() << endl; } char *Alumno::DameEspecialidad(void) { return Especialidad; } int Alumno::DameNumeroDeCreditos(void) { return NumeroDeCreditos; } class Empleado: public Persona { char Departamento[40]; char Cargo[40]; public: Empleado(char *, char *, char *, char *, char *); void MuestraDatos(void); char *DameDepartamento(void); char *DameCargo(void); }; Empleado::Empleado(char *N, char *D, char *F, char *De, char *C): Persona(N, D, F) { strcpy(Departamento, De); strcpy(Cargo, C); } void Empleado::MuestraDatos(void) { cout << "Datos del Empleado: " << endl; cout << "Nombre: " << DameNombre() << endl; cout << "Departamento: " << DameDepartamento() << endl; cout << "Cargo: " << DameCargo() << endl; } char *Empleado::DameDepartamento(void) { return Departamento; } char *Empleado::DameCargo(void) { return Cargo; } // Prototipos: void Imprime(Persona *); void main(void) { Profesor P("Mario Pérez", "Av. ABC 123", "14/03/70" , "Auxiliar","TC") ; Alumno A("Sofía Guzmán", "Av. XYZ","14/09/80", "Ing. Informática",120); Empleado E("Ana Ruiz", "Jr. PQR 555","07/12/72","RR. HH.", "Secretaria"); Imprime(&P); cout << endl; Imprime(&A); cout << endl; Imprime(&E); } void Imprime(Persona *Objeto) { Objeto->MuestraDatos(); } /* Al ejecutar el programa se obtiene: Datos del Profesor: Nombre: Mario Pérez Categoria: Auxiliar Dedicación: TC Datos del Alumno: Nombre: Sofía Guzmán Especialidad: Ing. Informática Número de Créditos: 120 Datos del Empleado: Nombre: Ana Ruiz Departamento: RR. HH. Cargo: Secretaria */