0% encontró este documento útil (0 votos)
14 vistas7 páginas

Herencia en C++: Guía Práctica

La guía aborda la herencia de clases en C++, presentando ejemplos prácticos con las clases cPersona y cAlumno. Se detalla la implementación de métodos y atributos, así como la creación de una aplicación para gestionar arreglos de alumnos y docentes. Además, se proponen ejercicios para aplicar los conceptos aprendidos, incluyendo la creación de nuevas clases relacionadas con vehículos.

Cargado por

bubalooplop
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
14 vistas7 páginas

Herencia en C++: Guía Práctica

La guía aborda la herencia de clases en C++, presentando ejemplos prácticos con las clases cPersona y cAlumno. Se detalla la implementación de métodos y atributos, así como la creación de una aplicación para gestionar arreglos de alumnos y docentes. Además, se proponen ejercicios para aplicar los conceptos aprendidos, incluyendo la creación de nuevas clases relacionadas con vehículos.

Cargado por

bubalooplop
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

LABORATORIO DE PROGRAMACIÓN DIGITAL 2

GUIA 03 - Herencia en C++ (Parte 1)


Departamento Académico de Ing. Informática

1. Introducción

En la presente guía aprenderemos cómo definir la herencia de clases en C++ y cómo utilizar dichas
clases en una aplicación.

2. Ejemplo de herencia de clases y su aplicación

Crear un archivo con el nombre cPersona.h que contendrá los atributos y métodos de la clase
cPersona.

#ifndef CPERSONA_H // Si CPERSONA_H no está definido


#define CPERSONA_H // Definir CPERSONA_H

#include <iostream>
#include <string>

using namespace std;

class cPersona
{

protected: // ATRIBUTOS
string aAP;
string aAM;
string aNombres;
string aDNI;

// MÉTODOS
public:
// ******************************** Constructores *******************************
cPersona()
{
aAP = "";
aAM = "";
aNombres = "";
aDNI = "";
}

cPersona(string pAP, string pAM, string pNombres, string pDNI)


{
aAP = pAP;
aAM = pAM;
aNombres = pNombres;
aDNI = pDNI;
}

// ****************************** Métodos Get y Set *******************************


// ----------------------------------------------------------------
string GetAP()
{
return aAP;
}

// ----------------------------------------------------------------
void SetAP(string pAP)
{
aAP = pAP;
}

// ----------------------------------------------------------------
string GetAM()
{
return aAM;
}

// ----------------------------------------------------------------
void SetAM(string pAM)
{
aAM = pAM;
}

// ----------------------------------------------------------------
string GetNombres()
{
return aNombres;
}

// ----------------------------------------------------------------
void SetNombres(string pNombres)
{
aNombres = pNombres;
}

// ----------------------------------------------------------------
string GetDNI()
{
return aDNI;
}

// ----------------------------------------------------------------
void SetDNI(string pDNI)
{
aDNI = pDNI;
}

// **************************** Métodos de Proceso *******************************

// ----------------------------------------------------------------
virtual void LeerDatosPersona()
{
cout << "Apellido Paterno: ";
getline(cin, aAP);
cout << "Apellido Materno: ";
getline(cin, aAM);
cout << "Nombres: ";
getline(cin, aNombres);
cout << "DNI: ";
getline(cin, aDNI);
}

// ----------------------------------------------------------------
virtual void MostrarDatosPersona()
{
cout << "Apellido Paterno: " << aAP << endl;
cout << "Apellido Materno: " << aAM << endl;
cout << "Nombres: " << aNombres << endl;
cout << "DNI: " << aDNI << endl;
}

// ----------------------------------------------------------------
virtual void Leer()
{
cout << endl;
cout << "DATOS DE PERSONA" << endl;
cout << "===============" << endl;
LeerDatosPersona();
}

// ----------------------------------------------------------------
virtual void Mostrar()
{
cout << endl;
cout << "DATOS DE PERSONA" << endl;
cout << "===============" << endl;
MostrarDatosPersona();
}

// ----------------------------------------------------------------
virtual void Escribir()
{
cout << aDNI << aAP << aAM << aNombres << endl;
}

};
#endif

Luego, crear otro archivo con el nombre cAlumno.h que contendrá los atributos y métodos de la
clase cAlumno y que además va a heredar los atributos y métodos de la clase cPersona.

#include <iostream>
#include <string>
#include "cPersona.h"

using namespace std;

/* **************** DEFINIR LA CLASE **************** */


class cAlumno : public cPersona
{

protected: // ATRIBUTOS
string aCodigo;
string aEscuelaProf;

public: // MÉTODOS
// ******************************** Constructores *******************************
cAlumno() : cPersona()
{
aCodigo = "";
aEscuelaProf = "";
}

cAlumno(string pCodigo, string pAP, string pAM, string pNombres, string pDNI, string
pEscuelaProf)
{
aCodigo = pCodigo;
aAP = pAP;
aAM = pAM;
aNombres = pNombres;
aDNI = pDNI;
aEscuelaProf = pEscuelaProf;
}

// ****************************** Métodos Get y Set *******************************


// ----------------------------------------------------------------
string GetCodigo()
{
return aCodigo;
}

// ----------------------------------------------------------------
void SetCodigo(string pCodigo)
{
aCodigo = pCodigo;
}

// ----------------------------------------------------------------
string GetEscuelaProf()
{
return aEscuelaProf;
}

// ----------------------------------------------------------------
void SetEscuelaProf(string pEscuelaProf)
{
aEscuelaProf = pEscuelaProf;
}

// *************************** Métodos de Proceso *******************************

// ----------------------------------------------------------------
void LeerDatosAlumno()
{
cout << "Codigo: ";
getline(cin, aCodigo);
LeerDatosPersona();
cout << "Escuela Profesional: ";
getline(cin, aEscuelaProf);
}

// ----------------------------------------------------------------
void MostrarDatosAlumno()
{
cout << "Codigo: " << aCodigo << endl;
MostrarDatosPersona();
cout << "Escuela Profesional: " << aEscuelaProf << endl;
}

// ----------------------------------------------------------------
void Leer() override
{
cout << endl;
cout << "DATOS DE ALUMNO" << endl;
cout << "===============" << endl;
LeerDatosAlumno();
}

// ----------------------------------------------------------------
void Mostrar() override
{
cout << endl;
cout << "DATOS DE ALUMNO" << endl;
cout << "===============" << endl;
MostrarDatosAlumno();
}

// ----------------------------------------------------------------
void Escribir() override
{
cout << aCodigo << aAP << aAM << aNombres << aEscuelaProf << endl;
}
};

Ahora vamos a crear un archivo con el nombre [Link] que contendrá una
aplicación para manejar los arreglos de alumnos y docentes.

#include <iostream>
#include <string>
#include "cPersona.h"
#include "cAlumno.h"
#include "cDocente.h"

using namespace std;


void MostrarAlumnos(int N, cAlumno** AA, string Escuela)
{
for (int K = 0; K < N; K++)
if (AA[K]->GetEscuelaProf() == Escuela)
AA[K]->Mostrar();
}

void MostrarDocentes(int N, cDocente** AD, string Departamento)


{
for (int K = 0; K < N; K++)
if (AD[K]->GetDpto() == Departamento)
AD[K]->Mostrar();
}

int main()
{
// -- Crear arreglo de alumnos
int NA = 0;
cAlumno** AA = new cAlumno * [500];
// -- Crear arreglo de docentes
int ND = 0;
cDocente** AD = new cDocente * [50];
// -- Agregar objetos alumno al arreglo de alumnos
AA[NA++] = new cAlumno("200147", "PAZ", "GUERRA", "ANGEL", "23234545", "IN");
AA[NA++] = new cAlumno("190020", "CUSI", "MEZA", "ANA", "60457812", "IL");
AA[NA++] = new cAlumno("200871", "DIAZ", "ORÉ", "EVA", "23117723", "IN");
AA[NA++] = new cAlumno("200988", "CUNO", "MAR", "JUAN", "44886033", "CO");
AA[NA++] = new cAlumno("180589", "PINO", "PUMA", "RINA", "40775689", "IN");
// -- Agregar objetos docente al arreglo de docentes
AD[ND++] = new cDocente("15487", "BUENO", "BAEZ", "CARLA", "23117245", "IF", "PR");
AD[ND++] = new cDocente("12457", "PAEZ", "MOYA", "DAVID", "60945257", "ME", "AU");
AD[ND++] = new cDocente("13886", "DIAZ", "FELIX", "JORGE", "40215623", "IF", "PR");
AD[ND++] = new cDocente("15022", "CUMPA", "NUÑEZ", "ZOILA", "44058603", "IF", "AS");
AD[ND++] = new cDocente("18473", "ZEA", "PUMA", "LEO", "40137289", "IL", "PR");
// -- Mostrar alumnos de IN

MostrarAlumnos(NA, AA, "IN");

MostrarDocentes(ND, AD, "IF");

system("PAUSE");
}

3. Ejercicios
a. Entender y ejecutar el ejemplo de la sección 2, además agregar la clase cDocente.h
desarrollado en clases de teoría.
b. Una empresa de alquiler de vehículos desea automatizar sus procesos, para lo cual el área de
informática de la empresa le encarga a Ud. implementar lo siguiente:
● La clase cVehiculo con los siguientes atributos: Placa, Marca, Modelo, Color y Año.
● La clase cVehiculoCarga heredera de la clase cVehiculo y con los siguientes atributos
adicionales: PesoBruto y CargaUtil.
● La clase cVehiculoPasajeros heredera de la clase cVehiculo y con el siguiente atributo
adicional: NroPasajeros
c. Adicionalmente, se le pide implementar una aplicación qué permita crear un arreglo con objetos
de la clase cVehiculoCarga y otro con objetos de la clase cVehiculoPasajeros.

4. Evaluación

Criterio Max. Puntaje Puntaje Obtenido

Ejercicio 3.a Explica 4

Ejercicio 3.b Resuelve + Explica 10

Ejercicio 3.c Resuelve + Explica 6

Total

5. Referencias
Curso de C++
[Link]

También podría gustarte