Herencia Simple

18
ALGORITMOS Y ESTRUCTURA DE DATOS 1 P.O.O. HERENCIA SIMPLE Una clase derivada es un tipo de dato definido por el usuario que tiene la propiedad de heredar datos y funciones miembro de uno o mas clases, definidas previamente. La clase inicial usada como clase base para la clase derivada se conoce como clase base, padre o superclase. La clase derivada se conoce como derivada, hija o subclase. Una clase derivada puede a su vez ser una clase base, dando lugar a la jerarquía de clases. Una clase derivada hereda todos los miembros de la clase base y puede acceder a los datos miembros públicos y protegidos de la clase base como si fueran miembros de ella misma. Una clase derivada no tiene acceso a los miembros privados de la clase base.

description

Algoritmos y estructura de datos

Transcript of Herencia Simple

  • A L G O R I T M O S Y E S T R U C T U R A D E D A T O S 1

    P.O.O. HERENCIA SIMPLE

    Una clase derivada es un tipo de dato definido por el usuario que tiene la propiedad de heredar datos y funciones miembro de uno o

    mas clases, definidas previamente.

    La clase inicial usada como clase base para la clase derivada se conoce como clase base, padre o superclase.

    La clase derivada se conoce como derivada, hija o subclase.

    Una clase derivada puede a su vez ser una clase base, dando lugar a la jerarqua de clases.

    Una clase derivada hereda todos los miembros de la clase base y puede acceder a los datos miembros pblicos y protegidos de la

    clase base como si fueran miembros de ella misma.

    Una clase derivada no tiene acceso a los miembros privados de la clase base.

  • A L G O R I T M O S Y E S T R U C T U R A D E D A T O S 2

    P.O.O. HERENCIA SIMPLE

    Producto

    Codigo

    Descripcion

    Stock

    ComprobarStock()

    AcualizarStock()

    Tienda

    Clientes

    Productos

    CrearCliente()

    CrearProducto()

    VenderProducto()

    Cliente

    Ruc

    RazonSocial

    BuscarCliente()

    ActualizarDatos()

    Class cliente

    {

    private:

    char Ruc[11];

    char RazonSocial[60];

    public:

    Cliente(char r[], char *rs[]);

    . . };

    Sistema Real

  • A L G O R I T M O S Y E S T R U C T U R A D E D A T O S 3

    Las clases no son suficientes para conseguir los objetivos de reutilizacin.

    P.O.O. HERENCIA SIMPLE

    Libro

    Titulo

    Autor

    NroPaginas

    Abrir()

    Cerrar()

    IrAPagina(n)

    LeerPagina(n)

    Conocimiento

    Descripcin Fsica Opinin Comparacin con otras entidades

    Experiencias Personales

    Concepto

    Libro

  • A L G O R I T M O S Y E S T R U C T U R A D E D A T O S 4

    La herencia es el segundo concepto central en la programacin orientada a objetos.

    P.O.O. HERENCIA SIMPLE

    Publicacin

    Revista Libro

    Medicina Espectculo Deporte

    La herencia hace posible la reusabilidad

  • A L G O R I T M O S Y E S T R U C T U R A D E D A T O S 5

    P.O.O. HERENCIA SIMPLE

    Los programadores siempre han procurado evitar la escritura del mismo

    cdigo dos veces, o reinventar la

    rueda.

    La herencia es la ultima solucin para este tipo de problema y el mas

    poderoso.

    Un nuevo acercamiento poderoso para la reusabilidad aparece en OOP., la

    biblioteca de clases.

  • A L G O R I T M O S Y E S T R U C T U R A D E D A T O S 6

    La herencia es una cualidad esencial de los sistemas orientado a objetos.

    P.O.O. HERENCIA SIMPLE

    Figura

    Figura 3D Figura 2D

    Circulo Cubo Esfera Tetraedro Cuadrado Triangulo

    La herencia es bsicamente un mecanismo que utiliza la o.o.p. Para implementar polimorfismo

  • A L G O R I T M O S Y E S T R U C T U R A D E D A T O S 7

    Supongamos que se tiene la clase Persona con los siguientes atributos: Nombre Direccion Edad Estado civil

    En base a la clase Persona definimos la clase Alumno, definimos las caractersticas de Alumno. Codigo Facultad Ao Ingreso El resto las hereda.

    P.O.O. HERENCIA SIMPLE

    Codigo

    Facultad

    Ao Ingreso

    El resto las hereda

    Nombre

    Direccion

    Edad

    Estado civil

  • A L G O R I T M O S Y E S T R U C T U R A D E D A T O S 8

    Herencia

    Es aquella propiedad de la programacin orientada a objetos que le permite a una clase, llamada clase derivada, compartir la estructura y el comportamiento de otra clase llamada clase base.

    P.O.O. HERENCIA SIMPLE

    Clase Base

    Clase Derivada

  • A L G O R I T M O S Y E S T R U C T U R A D E D A T O S 9

    Superclase. - Es la clase de la cual heredan otras clases. Representan una generalizacin de las subclases. Se denomina tambin clases bases o clases padres.

    Subclase.- Es la clase que hereda de una o mas clases. Representan una especializacin de la clase base. Se denomina tambin clase derivada o clases hijas.

    B es una clase derivada de A

    P.O.O. HERENCIA SIMPLE

    Clase A

    Clase B

  • A L G O R I T M O S Y E S T R U C T U R A D E D A T O S 10

    DECLARACION DE UNA CLASE DERIVADA

    class : [,,..]

    { private/protected:

    ;

    public:

    ;

    };

    Donde el acceso puede ser:

    P.O.O. HERENCIA SIMPLE

  • A L G O R I T M O S Y E S T R U C T U R A D E D A T O S 11

    private: Los miembros public y protected de la clase base son privados en la clase derivada.

    protected: Los miembros public y protected de la clase base son protected en la clase derivada.

    public: Los miembros public de la clase base son public en la clase derivada y los miembros protected de la clase base son protected en la clase derivada.

    P.O.O. HERENCIA SIMPLE

  • A L G O R I T M O S Y E S T R U C T U R A D E D A T O S 12

    //Dada una clase llamada Coche y la subclase Recorrido, se pide implementar el programa usando Herencia

    #include

    #include

    using namespace std;

    void Inicia(int &,int &,char *,char *,int&);

    //Declaracion de la clase

    class Coche

    { private:

    char placa[15],marca[25];

    int afab;

    public:

    Coche();

    P.O.O. HERENCIA SIMPLE

  • A L G O R I T M O S Y E S T R U C T U R A D E D A T O S 13

    Coche(char *,char *,int);

    void Read();

    void Mostrar();

    };

    class Recorrido : public Coche

    { private:

    int millas,glncons;

    public:

    Recorrido();

    Recorrido(int, int, char *, char *, int);

    void Read();

    void Mostrar();

    };//Fin de la subclase Recorrido

    P.O.O. HERENCIA SIMPLE

  • A L G O R I T M O S Y E S T R U C T U R A D E D A T O S 14

    //Programa princiapal

    int main()

    { int ayo,millas,galon;

    char placa[15],marca[25];

    Inicia(millas,galon,placa,marca,ayo);

    Recorrido P;

    P.Mostrar();

    P=Recorrido(millas,galon,placa,marca,ayo);

    P.Mostrar();

    P.Read(); P.Mostrar();

    }

    P.O.O. HERENCIA SIMPLE

  • A L G O R I T M O S Y E S T R U C T U R A D E D A T O S 15

    void Inicia(int &mi,int &ga,char *pl,char *ma,int &af)

    { cout

  • A L G O R I T M O S Y E S T R U C T U R A D E D A T O S 16

    Coche::Coche(char *pl, char *ma, int af)

    { strcpy(placa,pl); strcpy(marca,ma); afab=af;

    }

    void Coche::Read()

    { cout

  • A L G O R I T M O S Y E S T R U C T U R A D E D A T O S 17

    Recorrido::Recorrido()

    { millas=0; glncons=0;

    }

    Recorrido::Recorrido(int mi,int ga,char *pl,char *ma,int af):Coche(pl, ma, af)

    { millas=mi; glncons=ga;

    }

    void Recorrido::Read()

    { Coche::Read();

    coutmillas;

    coutglncons;

    }

    P.O.O. HERENCIA SIMPLE

  • A L G O R I T M O S Y E S T R U C T U R A D E D A T O S 18

    void Recorrido::Mostrar()

    { Coche::Mostrar();

    cout