Logo Studenta

Ejercicio 4 jerarquía persona empleado-estudianteuniversitario.

¡Este material tiene más páginas!

Vista previa del material en texto

5
Ejercicio 4
Candia Arias Jessica
Sanchez Silva Isaac
Sección 003
Periodo Otoño 2020
Programación Avanzada
Índice
1. Objetivos 
2. Marco teórico 
3. Algoritmo
4. Código 
5. Evidencias de funcionamiento
6. Resultados y conclusiones
7. Bibliografía 
1. Objetivos
Se realizará la creación de un programa que lleve a cabo la implementación de jerarquía persona/ empleado-estudiante/universitario.
2. Marco teórico 
Se realiza la implementación de la jerarquía de clases mostrada en la siguiente figura (Herencia Simple):
Persona
Empleado
Para ello se define una clase “Persona” formada por atributos protegidos y públicos, y se usa como clase base para definir la clase “Empleado”. Los objetos que sean del tipo Empleado tendrán los atributos de esta clase (por ejemplo “Salario”), además de los atributos heredados de la clase “Persona”.
#include <iostream>
#include <iomanip> /* Contiene prototipos de función para manipuladores de flujo que dan formato a flujos de datos. Permitirá formatear y organizar la salida de datos. */
using namespace std;
class Persona
// Clase Base Persona
{	protected:
char nombre[40]; int edad;
public:
// Funciones Miembro
Persona( ) { };	// constructor por defecto void leerdatos( );
void imprimirdatos( );
};
// Declaración del Método para dar valor a los atributos de la clase Persona void Persona :: leerdatos( )
{		cout << “Digitar el Nombre:" << endl; gets(nombre);
cout << "Digitar la Edad: " << endl; cin >> edad;
}
// Método que despliega los valores de los atributos de una persona void Persona :: imprimirdatos( )
{	cout << endl << endl;
cout << "----- Imprimir los Datos del Empleado	" << endl;
cout << "Nombre : " << nombre << endl; cout << "Edad : " << edad << " a";
printf("%c",164);	// Para mostrar la letra "ñ" cout << "os" << endl;
}
/* Definición de la Clase Empleado como clase derivada de la clase Persona. Se utiliza herencia pública */
class Empleado : public Persona
{	protected:
float salarioanual; char cargo[60];
public:
Empleado( ){ };	// constructor por defecto void leeremp( );
void imprimiremp( );
};
// Declaración del Método para dar valor a los atributos de la clase Empleado void Empleado :: leeremp( )
{	Persona::leerdatos();
cout << "Introducir Cargo:" << endl; cin >> cargo;
cout << "Introducir Sueldo:" << endl; cin >> salarioanual;
}
fflush(stdin);
// para liberar buffer de memoria
cout << "Numero de Boleto: "; gets(NumBol);
cout << "Tipo de Habitacion: "; gets(TH);
cout << "Precio de la Habitacion: "; cin >> PrecHab;
cout << "Numero de habitacion asignada: "; cin >> NumHab;
fflush(stdin);
cout << "Tipo de Paquete: "; gets(Desc);
cout << "Total de Dias: "; cin >> TD;
PlanVacac Paquete(Prec, NumBol, CO, CD, PrecHab, NumHab, TH, Desc, TD); return Paquete;
}
int main()
{ PlanVacac Viaje;	// Se crea obbjeto de tipo PlanVacac
Viaje = Lee( );	/* Se le proporcionan valores a todos los datos miembros del objeto de tipo PlanVacac */
Viaje.imprimirdatos( ); system("pause>nul"); return 0;
}
3. Algoritmo 
Realice las modificaciones necesarias al ejemplo No. 1, de tal manera que se construya una solución para la jerarquía de clases mostrada en la siguiente figura:Empleado
Persona
Estudiante
Pasante
Universitario
Para la clase Estudiante considerar los atributos: número de carnet, nivel de estudios.
Para la clase Universitario considerar los atributos: nombre de la universidad, carrera, materias inscritas, notas, CUM.
Para la clase Pasante considerar los atributos: nombre del proyecto, total de horas (duración de la pasantía), número de horas completadas.
La solución se debe manejar a través de un menú que permita realizar las siguientes acciones:
a) Crear los objetos de tipo Pasante, solicitando los datos al usuario.
b) Verificar que universidad proporciona la mayoría de pasantes en una empresa.
c) Visualizar el promedio de notas de los estudiantes para seleccionar los pasantes.
d) Salir de la aplicación.
El menú deberá estar siempre activo, en la misma posición en pantalla, hasta que el usuario seleccione la opción salir.
El programa debe estar debidamente comentado.
4. Código 
#include <iostream>
#include <iomanip> 
#include <string>
#include <cstdlib>
using namespace std;
class Persona 
{
private:
	string name;
	int age;
public:
	Persona(string Nombre, int Edad) {
		this->name = Nombre;
		this->age = Edad;
	}
	string getNombre() {
		return name;
	}
	int getEdad() {
		return age;
	}
};
class Empleado : public Persona {
private:
	float sueldo;
public:
	Empleado(string Nombre, int Edad, float Sueldo) :Persona(Nombre, Edad) {
		this->sueldo = Sueldo;
	}
	float getSueldo() {
		return sueldo;
	}
};
class Estudiante : public Persona {
private:
	string Nivestudios;
	float carnet;
public:
	Estudiante(string Nombre, int Edad, float Carnet, string NEstudios) :
		Persona(Nombre, Edad) {
		this->carnet = Carnet;
		this->Nivestudios = NEstudios;
	}
	float getCarnet() {
		return carnet;
	}
	string getNEstudios() {
		return Nivestudios;
	}
};
class Universitario : public Estudiante {
private:
	string Universidad;
	string Carrera;
	string Materias;
	float Notas;
	float CUM;
public:
	Universitario(string Nombre, int Edad, float Carnet, string NEstudios, string
		Universidad, string Carrera, string Materias, float Notas, float CUM) :Estudiante(Nombre,
			Edad, Carnet, NEstudios) {
		this->Universidad = Universidad;
		this->Carrera = Carrera;
		this->Materias = Materias;
		this->Notas = Notas;
		this->CUM = CUM;
	}
	string getUniversidad() {
		return Universidad;
	}
	string getCarrera() {
		return Carrera;
	}
	string getMaterias() {
		return Materias;
	}
	float getNotas() {
		return Notas;
	}
	float getCUM() {
		return CUM;
	}
};
class Pasante : public Universitario, public Empleado {
private:
	string NProyecto;
	int HTotales;
	int HCompletas;
public:
	Pasante(string Nombre, int Edad, string NProyecto, int HTotales, int
		HCompletas, float Carnet, string NEstudios, string Universidad, string Carrera, string
		Materias, float Notas, float CUM, float Sueldo) :Universitario(Nombre, Edad,
			Carnet, NEstudios, Universidad, Carrera, Materias, Notas, CUM), Empleado(Nombre,
				Edad, Sueldo) {
		this->NProyecto = NProyecto;
		this->HTotales = HTotales;
		this->HCompletas = HCompletas;
	}
	string getNProyecto() {
		return NProyecto;
	}
	int getHTotales() {
		return HTotales;
	}
	int getHCompletas() {
		return HCompletas;
	}
};
Código principal:
#include <iostream>
#include <iomanip> 
#include <string>
#include <cstdlib>
#include "Persona.h"
using namespace std;
int main() {
	Empleado* E1 = new Empleado("Isaac", 20, 1000);
	cout << "__Empleado__" << endl;
	cout << "Nombre: " << E1->getNombre() << endl;
	cout << "Edad: " << E1->getEdad() << endl;
	cout << "Sueldo: " << E1->getSueldo() << endl << endl;
	Estudiante* S1 = new Estudiante("Jessica", 22, 745, "Preparatoria");
	cout << "__Estudiante__" << endl;
	cout << "Nombre: " << S1->getNombre() << endl;
	cout << "Edad: " << S1->getEdad() << endl;
	cout << "Numero de Carnet: " << S1->getCarnet() << endl;
	cout << "Nivel de estudios: " << S1->getNEstudios() << endl << endl;
	Universitario* U1 = new
		Universitario("Rebeca", 25, 120, "Maestria", "Buap", "Mecatronica", "Metodos Matematicoa,Electromagnetismo,Circuitos lineales",10,30);
			cout << "__Universitario__" << endl;
	cout << "Nombre: " << U1->getNombre() << endl;
	cout << "Edad: " << U1->getEdad() << endl;
	cout << "Numero de Carnet: " << U1->getCarnet() << endl;
	cout << "Universidad: " << U1->getUniversidad() << endl;
	cout << "Carrera: " << U1->getCarrera() << endl;
	cout << "Materias inscritas: " << U1->getMaterias() << endl;
	cout << "Notas: " << U1->getNotas() << endl;
	cout << "Coeficiente de Unidades de Merito: " << U1->getCUM() << endl << endl;
	Pasante * P1 = new
		Pasante("Nahum", 24, "Practicas", 25, 22, 2587, "Ingeniero", "ITP", "Electronico", "Manufactura,Sistemas Lineales",9,25,7000);
			cout << "__Pasante__" << endl;
	cout << "Nombre: " << P1->Universitario::getNombre() << endl;
	cout << "Edad: " << P1->Universitario::getEdad() << endl;cout << "Nombre de Proyecto: " << P1->getNProyecto() << endl;
	cout << "Horas Totales de Pasantia: " << P1->getHTotales() << endl;
	cout << "Horas Completadas: " << P1->getHCompletas() << endl;
	cout << "Numero de Carnet: " << P1->getCarnet() << endl;
	cout << "Universidad: " << P1->getUniversidad() << endl;
	cout << "Carrera: " << P1->getCarrera() << endl;
	cout << "Materias Inscritas: " << P1->getMaterias() << endl;
	cout << "Notas: " << P1->getNotas() << endl;
	cout << "Coeficiente de Unidades de Merito: " << P1->getCUM() << endl << endl;
	return 0;
}
5. Evidencias 
En la imagen, podemos comprobar que nuestro programa realiza los cálculos correctamente por lo que el código está bien.
6. Resultados y/o conclusiones 
Los resultados fueron los estimados pues la creación del programa puedo calcular los datos pedidos para la clase estudiante, universitario y pasante y concluimos con el hecho de que algo sencillo puede realizarse a partir de la programación.
7. Bibliografía
[1] Jorge Cervantes Ojeda, María del Carmen Gómez Fuentes, Pedro Pablo González Pérez y Abel García Nájera, introducción a la programación orientada a objetos, primera edición, universidad autónoma metropolitana.
[2] Vicente Benjumea y Manuel Roldan, fundamentos de programación con el lenguaje de programación C++, primera edición, universidad de Málaga Dpto. lenguaje y CC. Computación E.T.S.I. Informática.
Benemérita Universidad Autónoma de Puebla

Continuar navegando

Otros materiales