Herencia

Anuncio
Programación Orientada a Objetos
Herencia
Ing
Ing.. Julio Ernesto Carreño Vargas
MsC..
MsC
Herencia
Proceso mediante el cual una clase
adquiere las propiedades (atributos) y
comportamiento (métodos) de otra.
Programación Orientada a Objetos
2
1
Ejemplo de Herencia
Student
Graduate
Programación Orientada a Objetos
Undergrad
3
Herencia
Se puede definir una clase a partir de otra ya
existente
Heredando sus atributos y métodos,
Y siendo posible añadir nuevos elementos
(atributos ó métodos) ó redefinir los
elementos existentes.
Programación Orientada a Objetos
4
2
Beneficios de la Herencia
Permite mediante la clasificación jerárquica
gestionar de forma sencilla la abstracción.
Student
Graduate
Masters
Doctoral
Undergrad
Law
Commuting
Programación Orientada a Objetos
Resident
5
Beneficios de la Herencia
Facilita el mantenimiento y desarrollo de
los programas.
La herencia es un mecanismo de reutilización de
código y diseño
Programación Orientada a Objetos
6
3
Beneficios de la Herencia
Permite aprovechar semejanzas de los
elementos del mundo y eliminar
redundancias que existan en el modelo de
análisis.
Programación Orientada a Objetos
7
Relaciones de Herencia
Generalización
Realización
Programación Orientada a Objetos
8
4
Relación de Generalización
Una asociación de herencia indicando que
una clase es una superclase de otra. (“es
un”)
Programación Orientada a Objetos
9
Relación de Generalización
Consiste en factorizar las propiedades
comunes de un conjunto de clases en una
clase más general.
Programación Orientada a Objetos
10
5
Relación de Generalización
La generalización tiene un triángulo
apuntando a la superclase.
Programación Orientada a Objetos
11
Relación de Generalización
Programación Orientada a Objetos
Pago es superclase
Efectivo y Credito son
subclases.
“Efectivo” es un tipo de
“Pago”
12
6
Elementos de la Herencia
Se distinguen en la herencia:
Superclase
Subclase
Es la clase base.
Es la clase derivada
Una subclase incluye todo el
comportamiento y
propiedades de sus
antecesores.
Programación Orientada a Objetos
13
Visibilidad Protegida
Observe
que el
atributo categoria
está marcado con
el signo #
Programación Orientada a Objetos
14
7
Visibilidad Protegida
En esta clase de visibilidad,
la subclase puede acceder y
modificar a los atributos
marcados en la superclase
como protected.
Programación Orientada a Objetos
15
Visibilidad Protegida
Si un atributo ó método de
la superclase es privado, no
podría ser accedido ni
modificado por la subclase.
Programación Orientada a Objetos
16
8
Relación de Generalización
SuperClase
Visibilidad
protegida
Las subclases
Cliente y Empleado
tienen en total 3
atributos
Programación Orientada a Objetos
SubClases
17
Relación de Generalización en Java
Programación Orientada a Objetos
18
9
Reglas de Herencia
Se heredan todos los miembros (atributos y
métodos):
aunque sólo son accesibles los declarados
public o protected ( no los private),
en caso de no tener calificador de acceso
(visibilidad de paquete) es posible el acceso si
la subclase se declara en el mismo directorio.
Programación Orientada a Objetos
19
Reglas de Herencia
No se hereda un miembro de la superclase
si la subclase declara un miembro idéntico
(sobrescritura).
Programación Orientada a Objetos
20
10
Reglas de Herencia
Las clases con el modificador final no
pueden ser heredadas.
Ó mejor, de dichas clases no se puede
heredar
Programación Orientada a Objetos
21
this y super
this
Es una referencia al objeto (instancia de la clase) que
se está ejecutando en ese momento.
super
Es una referencia a la superclase desde la que una
clase hereda, pudiendo así, ejecutar métodos de la
superclase (incluyendo constructores).
Programación Orientada a Objetos
22
11
Constructores en la Herencia
Al crear un objeto los constructores se ejecutan
en orden de derivación:
desde la superclase a la subclase.
En cada superclase se ejecuta el constructor por
defecto salvo que se indique uno concreto con la
palabra super.
Programación Orientada a Objetos
23
Constructores en la Herencia
Programación Orientada a Objetos
24
12
Constructores en la Herencia
Programación Orientada a Objetos
25
Llamando Métodos desde las
subclases
Se podría usar
this ó no usar
prefijo.
Programación Orientada a Objetos
26
13
Sobreescribir Métodos en Herencia
Sobreescribir métodos permite redefinir los
métodos de la superclase, esto es, reemplazar el
comportamiento del método de la superclase
con el mismo método en la subclase.
Programación Orientada a Objetos
27
Sobreescribir Métodos en Herencia
Una subclase puede redefinir un método
de la superclase a efectos de especializar
dicha clase.
Programación Orientada a Objetos
28
14
Sobreescribir Métodos en Generalización
Observe que el método Tocar, puede
ser usado en Flauta y en Tambor gracias
al mecanismo de herencia
El comportamiento de Afinar es
diferente en Tambor, por ello dicho
método es sobreescrito, esto es,
sustituye al de la superclase
Programación Orientada a Objetos
29
Sobreescritura en la Herencia
Tipos de Métodos que no pueden
sobrescribirse:
private
static
final
Programación Orientada a Objetos
30
15
Sobreescritura en la Herencia
Programación Orientada a Objetos
31
Bibliografía
Paul Deitel.
Deitel. Como programar en Java 7/e. Pearson Education
Education..
2007.
C. Thomas Wu.
Wu. An Introduction to Object Oriented
Programming with Java
Programación Orientada a Objetos
32
16
Descargar