Herencia (1).pdf · Una asociación de herencia indicando que una clase es una superclase de otra....
Transcript of Herencia (1).pdf · Una asociación de herencia indicando que una clase es una superclase de otra....
Programación Orientadaa Objetos 2
Herencia
■Proceso mediante el cual una clase
adquiere las propiedades (atributos) y
comportamiento (métodos) de otra.
1
Programación Orientadaa Objetos 3
Ejemplo de Herencia
Student
Graduate Undergrad
Programación Orientadaa Objetos 4
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.
2
5
Beneficios de la Herencia
■Permite mediante la clasificación jerárquica
gestionar de forma sencilla la abstracción.
Student
Graduate Undergrad
CommutingLaw ResidentMasters Doctoral
Programación Orientada aObjetos
Programación Orientadaa Objetos 6
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
3
Programación Orientadaa Objetos 7
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 Orientadaa Objetos 8
Relaciones de Herencia
■Generalización
■Realización
4
Programación Orientadaa Objetos 9
Relación de Generalización
■Una asociación de herencia indicando que
una clase es una superclase de otra. (“es
un”)
Programación Orientadaa Objetos 10
Relación de Generalización
■Consiste en factorizar las propiedades
comunes de un conjunto de clases en una
clase más general.
5
Programación Orientadaa Objetos 11
Relación de Generalización
■La generalización tiene un triángulo
apuntando a la superclase.
Programación Orientadaa Objetos 12
Relación de Generalización
■ Pago es superclase
■ Efectivo y Credito son
subclases.
■ “Efectivo” es un tipo de
“Pago”
6
Programación Orientadaa Objetos 13
Elementos de la Herencia
■ Se distinguen en la herencia:
■Superclase
■Es la clase base.
■Subclase
■Es la clase derivada
■Una subclase incluye todo el comportamiento y propiedades de sus antecesores.
Programación Orientadaa Objetos 14
Visibilidad Protegida
➢Observe que el
atributo categoria
está marcado con
el signo #
7
Programación Orientadaa Objetos 15
Visibilidad Protegida
■En esta clase de visibilidad,
la subclase puede acceder y
modificar a los atributos
marcados en la superclase
como protected.
Programación Orientadaa Objetos 16
Visibilidad Protegida
■Si un atributo ó método de
la superclase es privado, no
podría ser accedido ni
modificado por la subclase.
8
Programación Orientadaa Objetos 17
Relación de Generalización
SubClases
SuperClase
Visibilidad
protegida
Las subclases
Cliente y Empleado
tienen en total 3
atributos
Programación Orientadaa Objetos 18
Relación deGeneralización en Java
9
Programación Orientadaa Objetos 19
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 Orientadaa Objetos 20
Reglas de Herencia
■No se hereda un miembro de la superclasesi la subclase declara un miembro idéntico(sobrescritura).
10
Programación Orientadaa Objetos 21
Reglas de Herencia
■Las clases con el modificador final no pueden ser heredadas.
■Ó mejor, de dichas clases no se puede heredar
Programación Orientadaa Objetos 22
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).
11
Programación Orientadaa Objetos 23
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 Orientadaa Objetos 24
Constructores en la Herencia
12
Programación Orientadaa Objetos 25
Constructores en la Herencia
Programación Orientada a Objetos
Llamando Métodos desde
las subclases
Se podría
usar this ó no
usar prefijo.
26
13
Programación Orientadaa Objetos 27
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 Orientadaa Objetos 28
Sobreescribir Métodos en Herencia
■Una subclase puede redefinir un método
de la superclase a efectos de especializar
dicha clase.
14
Programación Orientadaa Objetos 29
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 Orientadaa Objetos 30
Sobreescritura en la Herencia
■Tipos de Métodos que no pueden
sobrescribirse:
■private
■ static
■ final
15
ProgramaciónOrienta da aObjetos 31
Sobreescritura en la Herencia
Programación Orientadaa Objetos 32
Bibliografía
■ Paul Deitel. Como programar en Java 7/e. Pearson Education.
2007.
■ C. Thomas Wu. An Introduction to Object Oriented
Programming with Java
16