Capitulo 4 herencia
This presentation is the property of its rightful owner.
Sponsored Links
1 / 23

Capitulo # 4 herencia PowerPoint PPT Presentation


  • 123 Views
  • Uploaded on
  • Presentation posted in: General

Capitulo # 4 herencia. PROGRAMACION III. UNIVERSIDAD SALESIANA DE BOLIVIA. Concepto y justificación de la herencia. La clase que hereda se denomina subclase o clase derivada . La clase de la cual se hereda se denomina superclase o clase base. Concepto y justificación de la herencia.

Download Presentation

Capitulo # 4 herencia

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Capitulo 4 herencia

Capitulo # 4herencia

PROGRAMACION III

UNIVERSIDAD

SALESIANA DE BOLIVIA


Concepto y justificaci n de la herencia

Concepto y justificación de la herencia

  • La clase que hereda se denominasubclaseoclasederivada.

  • La clase de la cual se hereda se denominasuperclaseoclasebase.


Concepto y justificaci n de la herencia1

Concepto y justificación de la herencia

  • Todo objeto de una subclase es un objeto de la superclase de la cual deriva.


Concepto y justificaci n de la herencia2

Concepto y justificación de la herencia

  • Las subclases pueden redefinir los métodos y atributos de la clase padre y añadir otros nuevos.


Jerarquia de calses

JERARQUIA DE CALSES

  • Las subclases de una clase pueden ser a su vez superclases de otras clases. Esto da lugar a jerarquías de clases.

  • →Jerarquías de Generalización/Especialización que son relaciones conceptuales ‘

    EJEMPLOS:

  • Libros y Revistas tienen propiedades comunes.

  • UnaPilapuededefinirse a partir de una Cola o viceversa.

  • Un Rectángulo es una especialización de Polígono

  • Puede haber distintos tipos de Cuentas.


Jerarquia de calses1

JERARQUIA DE CALSES

GENERALIZACION

ESPECIALIZACION

No hay receta mágica para crear buenas

jerarquías

Se detecta que una clase es un caso especial de otra

Ejemplo: Triangulo es un tipo de Polígono.

Se detectan clases con un comportamiento común.

Ejemplo: Triangulo y polígono son figuras.


Tipos de herencia

Tipos de herencia

  • HerenciasimpleUna clase puede heredar de una única clase.

    Ejemplo: Java, C#

  • HerenciamúltipleUna clase puede heredar de varias clases. Clasesforman un grafodirigidoacíclico.

    Ejemplos: Eiffel, C++


La sintaxis que indica la herencia en java

La sintaxis que indica la herencia en JAVA

  • Para indicar que una clase heredasus atributos y métodos de otra, en Java se utiliza la palabra clave extends.HerenciaSimple class subclaseextendssuperclase:

public class VocalextendsLetra


La sintaxis que indica la herencia en java1

La sintaxis que indica la herencia en JAVA

  • Clase persona

public class Persona {

String nombre= "";

intedad;

public Persona(String nom, inted) {

nombre = nom;

edad = ed;

}

public void mostrar() { System.out.println("Nombre: "+ nombre); System.out.println("Edad: "+ edad);

}

public static void main(String args[]) {

Persona yo= new Persona("Balta", 99);

yo.mostrar(); } }


La sintaxis que indica la herencia en java2

La sintaxis que indica la herencia en JAVA

  • Clase trabajador

publicclassTrabajadorextendsPersona{

floatsueldoHora;

intnumHoras;

public Trabajador(Stringnom, inted, floatsuel, intnum) { super(nom, ed); // llamada al constructor de Persona

sueldoHora= suel;

numHoras = num;}

publicdouble sueldo() {

returnsueldoHora * numHoras; }

Trabajador yo= new Trabajador("Balta", 99, 200.5f, 45); yo.mostrar(); // se invoca al método heredado mostrar

doublepelas = yo.sueldo();

System.out.println("Cobra: " + pelas); }

}


Herencia y reglas de acceso

Herencia y Reglas de Acceso

  • Existen cuatro posibles visibilidades deatributosymétodos:

  • De más restrictivo a menos:

  • private

  • visible sólo en la clase donde se define.

  • Sin modificador (por defecto)

  • visible a las clases del paquete.

  • protected

  • visible a las subclases y al resto de clases del paquete.

  • public

  • visible a todas las clases.


Herencia y reglas de acceso1

Herencia y Reglas de Acceso

class Vuelo {

  char nombre[30];    // private (pordefecto)

intcapacidad;      // private (pordefecto)

private:

  float peso;         // private

protected:

  void carga(&operacion};   // protected

public:

  void despegue(&operacion}; // public

  void crucero(&operacion);  // public

  char* getName();           // obtener el nombre del vuelo

};


Evitando la herencia

Evitando la herencia

  • Se puede evitar que una clasesea heredada:

public final class Clase


Paquetes

Paquetes

  • Los paquetes son contenedores de clases que permite delimitar el espacio en el cual una claseexiste.

  • Los paquetes permiten que exista más de una

    clase con el mismo nombre.

  • Para indicar que una clase pertenece a un cierto paquete, se utiliza la palabra clave package

  • La forma de esta sentencia es:

packagenombrePaquete;


Constructores y destructores

Constructores y destructores

  • Constructor es un:

  • Método que inicializa el objeto en su creación.

  • Se llama automáticamente cuando se crea un objeto.

  • Su nombre es igual que el de la clase y no tiene tipo de retorno.

  • Javaproporciona un constructor sin parámetros por defecto que deja de estar disponible cuando se añade algún constructor.


Constructores y destructores1

Constructores y destructores

  • Destructor es un:

  • Es un método perteneciente a una clase que es ejecutado de forma automática cuando un objeto es destruido. Javano soporta los destructores.


Constructores y destructores en herencia

Constructores y destructores en herencia

  • En principio se hereda todo menos:

  • Constructory destructor

  • Aunque no se heredan ni el constructor ni el destructor de la clase base, cuando se crea o se destruye un objeto de la clase derivada se invocan automáticamente los de la clase base. Se usa el constructor por defecto (es decirsin parámetros).


Constructores y destructores en herencia1

Constructores y destructores en herencia

  • Antes ejecutarse el cuerpo de un constructor se debe llamar a su constructor base.En Java se utiliza la palabra reservada super.

public Rectangulo(intx,inty,intancho,int alto) {

super(x,y);

this.ancho=ancho;

this.alto=alto;

}


Constructores y destructores en herencia2

Constructores y destructores en herencia

  • Al contrario que con los constructores, una funcion destructor de una clase derivada se ejecuta antes que el destructor de la clase base. (los destructores no se heredan).

  • Ejemplo :


Constructores y destructores en herencia3

Constructores y destructores en herencia

  • Cuando creamos un objeto con:

  • Tripletat = new Tripleta (1, 2, 3);

  • Se llama al constructor con parámetros, con parámetros de Tripleta.

  • Una mejora a este método sería:

  • public Tripleta(intvx, intvy, intvz) {

  • super (vx,vy);

  • z = vz;

  • }

class Punto{

private int x;

private int y;

public Punto () {

x=0;

y=0;

}

public Punto (int x, int y){

this.x=x;

this.y=y;

}

public intdarX(){return x;}

public intdarY(){return y;}

public void cambiarX (intval) {x=val;}

public void cambiarY (intval) {y=val;}

}

class TripletaextendsPunto{

int z;

public Tripleta() {

cambiarX(0);

cambiarY(0);

z = 0;

}

intdarZ() { return z; }

void cambiarZ(intval)

{ z = val; }

}

public Tripleta(intvx, intvy, intvz) {

cambiarX(vx);

cambiarY(vy);

z = vz; }


Herencia multiple

HERENCIA MULTIPLE

  • Algunos lenguajes orientados a objetos, como C++ permiten herencias múltiples, lo que significa que una clase puede heredar los atributos de otras dos superclases. Este método puede utilizarse para agrupar atributos y métodos desde varias clases dentro de una sola.

  • En el language Java no existe la herencia multiple, si no que se puede simular con lasinterfacesque se vera en proximos capitulos.


Ejemplo de herencia multiple en c

Ejemplo de herencia multiple en C++

#include <cstdio>

#include <cstdlib>

#include <iostream>   

using namespace std;   

class Cama

{

public:   

Cama() // constructor

    {    cout << "CreandounaCama" << endl;     }

~Cama() // destructor en C++

    {    cout << "Destruyendo la Cama" << endl;     }

};

class Sofa

{

public:

    Sofa()

    {

cout << "Creando un Sofa" << endl;

    }

    ~Sofa()

    {

cout << "Destruyendo el Sofa" << endl;

    }

};


Ejemplo de herencia multiple en c1

Ejemplo de herencia multiple en C++

class Sofacama : public Cama, public Sofa

{

public:

Sofacama()

    {

cout << "Ahoratenemos un Sofacama" << endl;

    }

    ~Sofacama()

    {

cout << "Destruyendo el Sofacama" << endl;

    }

};

int main()

{

Sofacamass;

    return 0;

}


  • Login