Herencia en Java
Programación Orientada a Objetos
Curso 2009/2010
Begoña Moros Valle
Índice
Introducción
Herencia y creación
Herencia y Ocultamiento de la Información
Redefinición de características
Polimorfismo
Herencia y Sistema de tipos
Ligadura dinámica
Clase Object
Genericidad y Herencia. Genericidad restringida
Clases abstractas
Interfaces
Colecciones enJava (paquete java.util)
Patrones de diseño:
Método plantilla, Patrón Estrategia y Patrón Composite
Herencia Múltiple
Tema 3
Herencia
2
Introducción
Las clases no son suficientes para conseguir los objetivos
de:
(A) REUTILIZACIÓN: Necesidad de mecanismos para
generar código genérico:
Capturar aspectos comunes en grupos de estructuras similares
Independencia de larepresentación
Variación en estructuras de datos y algoritmos
(B) EXTENSIBILIDAD: Necesidad de mecanismos para
favorecer:
“Principio abierto-cerrado” y “Principio Elección Única”
Estructuras de datos polimórficas.
Tema 3
Herencia
3
Introducción
Entre algunas clases pueden existir relaciones
conceptuales:
Extensión, Especialización, Combinación
EJEMPLO:
Libros y Revistas tienenpropiedades 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
¿Tiene sentido crear una clase a partir de otra?
La herencia es el mecanismo que:
sirve de soporte para registrar y utilizar las relaciones
conceptuales existentes entre las clases
posibilita la definición de una clase apartir de otra
Tema 3
Herencia
4
Jerarquías de herencia
La herencia organiza las clases en una estructura
jerárquica formando jerarquías de clases
Ejemplos:
PUBLICACION
LIBRO
LIBRO_TEXTO
FIGURA
POLIGONO
REVISTA
INVESTIGACION MAGAZINE
CIRCULO
RECTANGULO
No es tan sólo un mecanismo para compartir código
Consistente con el sistema de tipos del lenguaje
Tema 3
Herencia
5Introducción
Si una clase B hereda de otra clase A
entonces:
B incorpora la estructura (atributos) y
comportamiento (métodos) de la clase A
B puede incluir adaptaciones:
B puede añadir nuevos atributos
B puede añadir nuevos métodos
B puede redefinir métodos
Las adaptaciones son dependientes del
lenguaje
Tema 3
Herencia
6
El proceso de herencia es transitivo
A
B hereda de A
A es la superclase y B la subclase
C hereda de B y A
B
C
Tema 3
B y C son subclases de A
B es un descendiente directo de A
C es un descendiente indirecto de A
Herencia
7
Tipos de herencia
A
B
D
C
Herencia simple
E
B
C
Ejemplo: Java, C#
Herencia múltiple
A
Tema 3
Una clase puede heredar de una única
clase.
Una clase puede heredar de varias
clases.
Clases forman un grafo dirigido acíclico
Ejemplos: Eiffel, C++
Herencia
8
Diseño de jerarquías de herencia
Generalización (Factorización)
Especialización (Abstracción)
Se detectan clases con un comportamiento común
Ejemplo: Libro y Revista son Publicaciones
Se detecta que una clase es un caso especial de otra
Ejemplo: Rectangulo es un tipo de Poligono
No hay recetamágica para crear buenas
jerarquías
Problemas con la evolución de la jerarquía
Tema 3
Herencia
9
Caso de estudio: Gestión bancaria
Además de abrir cuentas en el banco se pueden
contratar depósitos.
Un depósito permite a los clientes obtener una
rentabilidad por su dinero
Un depósito se caracteriza por:
Estructura: titular, capital, plazo en días, tipo de
interés
Comportamiento:
Tema 3
liquidar el depósito una vez cumplido el plazo con lo que se
devuelve al cliente el capital invertido más los intereses
Consultar los intereses producidos al final del periodo.
Herencia
10
Clase Depósito (1/2)
public class Deposito {
private Persona titular;
private double capital;
private int plazoDias;
private double tipoInteres;
public Deposito(Persona titular, double capital,...
Regístrate para leer el documento completo.