Advertisement
Namaru

Herencia en C++

May 16th, 2023
158
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.07 KB | Source Code | 0 0
  1. #include <corecrt.h>
  2. #include <iostream>
  3. #include <functional>
  4. #include <conio.h>
  5. #include <string>
  6. #include <filesystem>
  7. #include <fstream>
  8. #include <cstring>
  9. #include <time.h>
  10.  
  11. using namespace std;
  12. //No se puede crear un array dinamico dentro de una clase, este debe tener una longintud en memoria establecidad.
  13. class Persona{
  14.     protected:
  15.     string nombre;
  16.     string fechaNacimiento;
  17.     string nacionalidad;
  18.     int identificacionNacional;
  19.     public:
  20.     Persona(string, string, string, int);
  21.    // ~Persona();
  22.     void mostrarPersona();
  23. };
  24.  
  25. void Persona::mostrarPersona(){
  26.     cout << "Nombre: " << nombre << endl;
  27.     cout << "Fecha de Nacimiento: " << fechaNacimiento<< endl;
  28.     cout << "Pais de Origen: " << nacionalidad<< endl;
  29.     cout << "Numero de identificacion: " << identificacionNacional<< endl;
  30. };
  31.  
  32. Persona::Persona(string _nombre, string _fechaNacimiento, string _nacionalidad, int _identificacion){
  33.     nombre = _nombre;
  34.     fechaNacimiento = _fechaNacimiento;
  35.     nacionalidad = _nacionalidad;
  36.     identificacionNacional = _identificacion;
  37. };
  38.  
  39. class Profesor: public Persona{// public designa que se heredad acceso al public de persona
  40.     private:
  41.     double salarios;    
  42.     string fechaContratacion;
  43.     int cantidadMaterias; int cantidadGrados;        
  44.     public:
  45.     struct materiasImpartidas{
  46.         string materias;
  47.     };
  48.     struct gradosImpartidos{
  49.         int grados;
  50.     };  
  51.     Profesor(string, string, string, int, double,int,int, string, materiasImpartidas[],
  52.     gradosImpartidos[]);  
  53.     void mostrarProfesor( materiasImpartidas[], gradosImpartidos[]);
  54. };
  55.  
  56. Profesor::Profesor(string _nombre, string _fechaNacimiento, string _nacionalidad, int _identificacion
  57. , double _salarios, int _cantidadMaterias, int _cantidadGrados,string _fechaContratacion, materiasImpartidas _materias[],
  58. gradosImpartidos _grados[]):Persona( _nombre,  _fechaNacimiento,  _nacionalidad,  _identificacion){
  59.     salarios = _salarios;
  60.     fechaContratacion = _fechaContratacion;
  61.     cantidadMaterias = _cantidadMaterias;  
  62.     cantidadGrados = _cantidadGrados;                
  63. };
  64.  
  65. void Profesor::mostrarProfesor( materiasImpartidas materias[], gradosImpartidos grados[]){
  66.     mostrarPersona();
  67.     cout << "Salario mensual : " << salarios << endl;
  68.     cout << "Fecha de contratacion: " << fechaContratacion << endl;
  69.     cout << "Años en los que imparte: " ;
  70.     for (int i = 0;i < cantidadGrados ; i++) {        
  71.         cout << grados[i].grados << "~, ";
  72.     };
  73.     cout<< "\n Materias que imparte: \n";
  74.     for(int i = 0; i < cantidadMaterias; i++){
  75.         cout << materias[i].materias << endl;
  76.     };
  77. }
  78.  
  79. void paraProfesor(){
  80.     int cantidaM = 2;
  81.     int cantidaG = 1;
  82.     Profesor::materiasImpartidas mater[cantidaM];
  83.     mater[0].materias = "Logica de Programacion";    
  84.     mater[1].materias = "Diseño y Programación de Bases de Datos";    
  85.     Profesor::gradosImpartidos grado[cantidaG];
  86.     grado[0].grados = 2;
  87.     Profesor Profesor("Jose Alberto","21/09/1988","El Salvador",
  88.     41266, 970.51,cantidaM ,cantidaG,
  89.     "14/06/2011", mater, grado);
  90.     Profesor.mostrarProfesor( mater, grado);
  91. };
  92.  
  93. class Estudiante: public Persona{// public designa que se heredad acceso al public de persona
  94.     private:
  95.     double notas;
  96.     int cantidadMateriasCursadas;
  97.     string fechaEntrada;
  98.     int gradoCursado;
  99.     public:
  100.     struct materiasCursadas{
  101.         string materia;
  102.     };
  103.     Estudiante(string, string, string, int, double, int, string, materiasCursadas[], int);    
  104.     void mostrarEstudiante(materiasCursadas[]);
  105. };
  106.  
  107. Estudiante::Estudiante(string _nombre, string _fechaNacimiento, string _nacionalidad, int _identificacion
  108. , double _notas, int _cantidadMateriasCursadas,
  109. string _fechaEntrada, materiasCursadas _materia[],
  110. int _gradoCursado):Persona(_nombre,  _fechaNacimiento,  _nacionalidad,  _identificacion){
  111.     notas = _notas;
  112.     cantidadMateriasCursadas = _cantidadMateriasCursadas;
  113.    
  114.     fechaEntrada = _fechaEntrada;              
  115.     gradoCursado = _gradoCursado;
  116. };
  117.  
  118. void Estudiante::mostrarEstudiante( materiasCursadas materias[]){
  119.     mostrarPersona();
  120.     cout << "Total nota curso: " << notas<< endl;
  121.     cout << "Fecha de ingreso a la institucion: " << fechaEntrada<< endl;
  122.     for (int i = 0;i< cantidadMateriasCursadas; i++) {
  123.         cout << "Materia #" << i +1 << ": ";
  124.        cout << materias[i].materia << endl;
  125.     }
  126.     cout << "Ciclo encursado: " << gradoCursado << endl;
  127. };
  128.  
  129. void paraEstudiante(){
  130.     int cantidad = 2;
  131.     Estudiante::materiasCursadas mater[] = {"Logica de Programacion",
  132.     "Principios de Economia"};
  133.     /*for (int i = 0 ; i< cantidad; i++) {
  134.         cout << "Ingres la materia #: " << i + 1;
  135.         cin >> mater[i].materia;
  136.     }*/
  137.     Estudiante Estudiante1("Moises","03/11/1999","El Salvador",
  138.     12346, 8.14,
  139.     cantidad, "27/11/2019",mater,3);
  140.     Estudiante1.mostrarEstudiante( mater);
  141. }
  142.  
  143.  
  144. int main(){
  145.     cout << "Datos de Estudiante \n";
  146.     paraEstudiante();
  147.    
  148.     cout << "\n Datos de Profesor \n";
  149.     paraProfesor();
  150. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement