domingo, 2 de marzo de 2014

HERENCIA


Hola que tal programadores el día de hoy veremos el tema de Herencia , muchos le temen a este tema, pero chic@s es muy sencillo que nadie los espante. Para este tema necesitaremos conocimientos de:
DEFINICIÓN: Como su nombre lo dice, la herencia es una transmisión de datos, hacia alguien que lo necesite. 

Aunque suene raro, si recordamos que cualquier cosa de la vida real se puede programar, este tema es igual que la Herencia familiar. Para entenderlo mejor veamos el siguiente esquema.



Como podemos notar las herencias de los apellidos quedaron de la siguiente manera:
  • Abuelo: Heredo apellido paterno a hijo e hija
  • Hija / Mama: Heredo Apellido paterno pero se convirtió en Materno para el Hijo.
  • Hijo / Papa: Heredo Apellido paterno a la Hija.
  • Hija e Hijo, no heredan a nadie, mas bien reciben de sus antescesores.
Si este diagrama lo convirtieramos en un diagrama UML para programarlo deberiamos tomar en cuenta quien heredo a quien con las caracteristicas:
  • Que hereda y quien hereda.
  • Únicamente el abuelo heredara el Apellido paterno a MAMA y PAPA
  • Mama hereda en apellido materno a hijo y Papa hereda en apellido paterno a hija.
El diagrama quedaria asi:


Para heredar clases necesitamos el siguiente codigo:
class Abuelo {
}
class Mama : public Abuelo {
}
class Papa : public Abuelo {
}
class Hijo : public Mama {
}
class Hija : public Papa {
}

Recuerden que tenemos atributos privados, y necesitamos setters y getters por cada atributo privado. POR CUESTIONES DIDACTICAS, SOLO HARE SETTERS Y GETTERS PARA LOS ATRIBUTOS QUE SE HEREDARAN

AHora si finalmente el codigo de la herencia seria el siguiente.


#include <iostream>
using namespace std;

class Abuelo
{
    private:
        string nombre;
        string apellidoPaterno;
        string apellidoMaterno;
        int edad;
    public:
        void setApellidoPaterno(string apellidoPaterno)
        {  this->apellidoPaterno=apellidoPaterno;}
        string getApellidoPaterno()
        {  return apellidoPaterno;}

        Abuelo ()
        {
            this->nombre="jose";
            this->apellidoPaterno="Martinez";
            this->apellidoMaterno="Flores";
            this->edad=89;
        }
        void datosAbuelo ()
        {
            cout<<"::::::::::..ABUELO...::::::::::"<<endl;
            cout<<"NOMBRE: "<<nombre<<endl;
            cout<<"Apellido Paterno: "<<apellidoPaterno<<endl;
            cout<<"Apellido Materno: "<<apellidoMaterno<<endl;
            cout<<"Edad; "<<edad<<endl;
        }
};
class Mama:public Abuelo
{
    private:
        string nombreMama;
        string apellidoMat;
        int edadMama;
    public:
        Mama ()
        {

        }
        Mama(string nombreMama, string apellidoMat,int edadMama)
        {
            this->nombreMama=nombreMama;
            this->apellidoMat=apellidoMat;
            this->edadMama=edadMama;
        }
        void datosMama ()
        {

            cout<<"::::::::::..MAMA...::::::::::"<<endl;
            cout<<"NOMBRE: "<<nombreMama<<endl;
            cout<<"Apellido Paterno: "<<getApellidoPaterno()<<endl;
            cout<<"Apellido Materno: "<<apellidoMat<<endl;
            cout<<"Edad; "<<edadMama<<endl;
        }
};
class Hijo : public Mama
{
    private:
        string nombreHijo;
        string apellidoPat;
        int edadHijo;
    public:
        Hijo(string nombreHijo, string apellidoPat,int edadHijo)
        {
            this->nombreHijo=nombreHijo;
            this->apellidoPat=apellidoPat;
            this->edadHijo=edadHijo;
        }
        void datosHijo ()
        {

            cout<<"::::::::::..HIJO...::::::::::"<<endl;
            cout<<"NOMBRE: "<<nombreHijo<<endl;
            cout<<"Apellido Paterno: "<<apellidoPat<<endl;
            cout<<"Apellido Materno: "<<getApellidoPaterno()<<endl;
            cout<<"Edad; "<<edadHijo;
        }
};

int main()
{
    Abuelo abu;
    Mama ma("Rosa","Hernandez",46);
    Hijo child("Carlos","Castro",25);
    abu.datosAbuelo();
    ma.datosMama();
    child.datosHijo();
}


NOTAS IMPORTANTES:

  1. UNicamente programe la parte ABUELO-MAMA-HIJO, la otra parte es igual :D
  2. En la herencia se deben tener CONSTRUCTORES Y CONSTRUCTORES SOBRECARGADOS
  3. El hijo puede heredar del abuelo atravez de la madre.
FINALMENTE el resultado de ese codigo es el siguiente:


BUeno hemos llegado al final de este tema. La siguiente semana haremos otro ejercicio para repasar

NO DUDEN EN COMENTAR !!
SIGANOS EN FACEBOOK Y TWITTER
Nos vemos a la proxima B-P

1 comentario:

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *