16
Programación Orientadaa Objetos 2 Herencia Proceso mediante el cual una clase adquiere las propiedades (atributos) y comportamiento (métodos) de otra. 1

Herencia (1).pdf · Una asociación de herencia indicando que una clase es una superclase de otra. (“es un”) Programación Orientadaa Objetos 10 Relación deGeneralización Consiste

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Herencia (1).pdf · Una asociación de herencia indicando que una clase es una superclase de otra. (“es un”) Programación Orientadaa Objetos 10 Relación deGeneralización Consiste

Programación Orientadaa Objetos 2

Herencia

■Proceso mediante el cual una clase

adquiere las propiedades (atributos) y

comportamiento (métodos) de otra.

1

Page 2: Herencia (1).pdf · Una asociación de herencia indicando que una clase es una superclase de otra. (“es un”) Programación Orientadaa Objetos 10 Relación deGeneralización Consiste

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

Page 3: Herencia (1).pdf · Una asociación de herencia indicando que una clase es una superclase de otra. (“es un”) Programación Orientadaa Objetos 10 Relación deGeneralización Consiste

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

Page 4: Herencia (1).pdf · Una asociación de herencia indicando que una clase es una superclase de otra. (“es un”) Programación Orientadaa Objetos 10 Relación deGeneralización Consiste

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

Page 5: Herencia (1).pdf · Una asociación de herencia indicando que una clase es una superclase de otra. (“es un”) Programación Orientadaa Objetos 10 Relación deGeneralización Consiste

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

Page 6: Herencia (1).pdf · Una asociación de herencia indicando que una clase es una superclase de otra. (“es un”) Programación Orientadaa Objetos 10 Relación deGeneralización Consiste

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

Page 7: Herencia (1).pdf · Una asociación de herencia indicando que una clase es una superclase de otra. (“es un”) Programación Orientadaa Objetos 10 Relación deGeneralización Consiste

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

Page 8: Herencia (1).pdf · Una asociación de herencia indicando que una clase es una superclase de otra. (“es un”) Programación Orientadaa Objetos 10 Relación deGeneralización Consiste

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

Page 9: Herencia (1).pdf · Una asociación de herencia indicando que una clase es una superclase de otra. (“es un”) Programación Orientadaa Objetos 10 Relación deGeneralización Consiste

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

Page 10: Herencia (1).pdf · Una asociación de herencia indicando que una clase es una superclase de otra. (“es un”) Programación Orientadaa Objetos 10 Relación deGeneralización Consiste

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

Page 11: Herencia (1).pdf · Una asociación de herencia indicando que una clase es una superclase de otra. (“es un”) Programación Orientadaa Objetos 10 Relación deGeneralización Consiste

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

Page 12: Herencia (1).pdf · Una asociación de herencia indicando que una clase es una superclase de otra. (“es un”) Programación Orientadaa Objetos 10 Relación deGeneralización Consiste

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

Page 13: Herencia (1).pdf · Una asociación de herencia indicando que una clase es una superclase de otra. (“es un”) Programación Orientadaa Objetos 10 Relación deGeneralización Consiste

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

Page 14: Herencia (1).pdf · Una asociación de herencia indicando que una clase es una superclase de otra. (“es un”) Programación Orientadaa Objetos 10 Relación deGeneralización Consiste

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

Page 15: Herencia (1).pdf · Una asociación de herencia indicando que una clase es una superclase de otra. (“es un”) Programación Orientadaa Objetos 10 Relación deGeneralización Consiste

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

Page 16: Herencia (1).pdf · Una asociación de herencia indicando que una clase es una superclase de otra. (“es un”) Programación Orientadaa Objetos 10 Relación deGeneralización Consiste

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