Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porSeverino Madera Modificado hace 9 años
1
Capitulo # 4 herencia PROGRAMACION III UNIVERSIDAD
SALESIANA DE BOLIVIA PROGRAMACION III
2
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.
3
Concepto y justificación de la herencia
Todo objeto de una subclase es un objeto de la superclase de la cual deriva.
4
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.
5
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. Una Pila puede definirse a partir de una Cola o viceversa. Un Rectángulo es una especialización de Polígono Puede haber distintos tipos de Cuentas.
6
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.
7
Tipos de herencia Herencia simple Una clase puede heredar de una única clase. Ejemplo: Java, C# Herencia múltiple Una clase puede heredar de varias clases. Clases forman un grafo dirigido acíclico. Ejemplos: Eiffel, C++
8
La sintaxis que indica la herencia en JAVA
Para indicar que una clase hereda sus atributos y métodos de otra, en Java se utiliza la palabra clave extends. Herencia Simple class subclase extends superclase: public class Vocal extends Letra
9
La sintaxis que indica la herencia en JAVA
Clase persona public class Persona { String nombre = ""; int edad; public Persona(String nom, int ed) { 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(); } }
10
La sintaxis que indica la herencia en JAVA
Clase trabajador public class Trabajador extends Persona { float sueldoHora; int numHoras; public Trabajador(String nom, int ed, float suel, int num) { super(nom, ed); // llamada al constructor de Persona sueldoHora = suel; numHoras = num;} public double sueldo() { return sueldoHora * numHoras; } Trabajador yo= new Trabajador("Balta", 99, 200.5f, 45); yo.mostrar(); // se invoca al método heredado mostrar double pelas = yo.sueldo(); System.out.println("Cobra: " + pelas); } }
11
Herencia y Reglas de Acceso
Existen cuatro posibles visibilidades de atributos ymé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.
12
Herencia y Reglas de Acceso
class Vuelo { char nombre[30]; // private (por defecto) int capacidad; // private (por defecto) 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 };
13
public final class Clase
Evitando la herencia Se puede evitar que una clase sea heredada: public final class Clase
14
package nombrePaquete;
Paquetes Los paquetes son contenedores de clases que permite delimitar el espacio en el cual una clase existe. 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: package nombrePaquete;
15
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. Java proporciona un constructor sin parámetros por defecto que deja de estar disponible cuando se añade algún constructor.
16
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. Java no soporta los destructores.
17
Constructores y destructores en herencia
En principio se hereda todo menos: Constructor y 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 decir sin parámetros).
18
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(int x,int y,int ancho,int alto) { super(x,y); this.ancho=ancho; this.alto=alto; }
19
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 :
20
Constructores y destructores en herencia
Cuando creamos un objeto con: Tripleta t = 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(int vx, int vy, int vz) { 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 int darX(){return x;} public int darY(){return y;} public void cambiarX (int val) {x=val;} public void cambiarY (int val) {y=val;} class Tripleta extends Punto { int z; public Tripleta() { cambiarX(0); cambiarY(0); z = 0; } int darZ() { return z; } void cambiarZ(int val) { z = val; } public Tripleta(int vx, int vy, int vz) { cambiarX(vx); cambiarY(vy); z = vz; }
21
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 las interfaces que se vera en proximos capitulos.
22
Ejemplo de herencia multiple en C++
#include <cstdio> #include <cstdlib> #include <iostream> using namespace std; class Cama { public: Cama() // constructor { cout << "Creando una Cama" << 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; };
23
Ejemplo de herencia multiple en C++
class Sofacama : public Cama, public Sofa { public: Sofacama() { cout << "Ahora tenemos un Sofacama" << endl; } ~Sofacama() cout << "Destruyendo el Sofacama" << endl; }; int main() Sofacama ss; return 0; }
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.