herencia y polimorfismo

22
Herencia y Polimorfismo Herencia y Polimorfismo Ing. Rolando Steep Quezada Martínez Ing. Rolando Steep Quezada Martínez [email protected] [email protected] Programación Básica en Java y Programación Orientada a Objetos Programación Básica en Java y Programación Orientada a Objetos

Upload: gaston-hernan-villagra

Post on 22-Dec-2015

217 views

Category:

Documents


0 download

DESCRIPTION

POO

TRANSCRIPT

Page 1: Herencia y Polimorfismo

Herencia y PolimorfismoHerencia y Polimorfismo

Ing. Rolando Steep Quezada MartínezIng. Rolando Steep Quezada Martínez

[email protected]@upnorte.edu.pe

Programación Básica en Java y Programación Orientada a Objetos Programación Básica en Java y Programación Orientada a Objetos

Page 2: Herencia y Polimorfismo

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez8-2

HerenciaHerencia

• Consiste en crear una clase nueva, como un tipo de una clase existente. La clase nueva toma la forma de una clase existente y le agrega código (sin modificar la clase existente).

• Reuso de código.

• El compilador es el que hace la mayor parte del trabajo.

• Es una parte integral de Java.

Page 3: Herencia y Polimorfismo

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez8-3

Herencia en JavaHerencia en Java

Page 4: Herencia y Polimorfismo

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez8-4

Herencia y PolimorfismoHerencia y Polimorfismo

• Lo más interesante de la herencia es la relación entre la clase derivada y la clase base: “la clase derivada es un tipo de la clase base” (es-un o es-como-un). Java soporta esta relación.

• Upcasting es la conversión de una referencia a un objeto de la clase derivada, en una referencia a un objeto de la clase base.

• El upcasting es seguro: la clase derivada es un super conjunto de la clase base, podría contener más métodos que la clase base, pero seguro contiene los métodos de la clase base.

Page 5: Herencia y Polimorfismo

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez8-5

Page 6: Herencia y Polimorfismo

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez8-6

Práctica 5Práctica 5

Objetivos

– Crear jerarquías de clases para facilitar la reutilización de código.

– Identificar el escenario para la aplicación del polimorfismo.

Page 7: Herencia y Polimorfismo

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez8-7

Page 8: Herencia y Polimorfismo

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez8-8

Clase AbstractaClase Abstracta

• Una clase abstracta define una interfaz común para los diversos miembros de una jerarquía de clases.

• La clase abstracta contiene métodos que se definirán en las subclases.

• Todas las clases de la jerarquías pueden usar la misma interfaz gracias al polimorfismo

Page 9: Herencia y Polimorfismo

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez8-9

Clases Abstractas en JavaClases Abstractas en Java

Page 10: Herencia y Polimorfismo

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez8-10

InterfaceInterface

• Es una clase totalmente Abstracta:

– Todos su métodos son abstractos (public abstract)– Todos sus variables son constantes (public static final)

• En JAVA, una interface es una colección de definiciones de métodos sin cuerpo y de declaraciones de constantes de tipo primitivo, agrupadas bajo un nombre.

• Una interface es un tipo de dato nuevo.

• Una interface establece qué debe hacer la clase que la implementa, sin especificar el cómo.

• Las interfaces definen un tipo de dato, por lo tanto es posible declarar variables con el nombre de la interface.

Page 11: Herencia y Polimorfismo

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez8-11

Interfaces en JavaInterfaces en Java

Page 12: Herencia y Polimorfismo

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez8-12

Clase InternaClase Interna

• Una clase interne (inner class) es una clase anidada, definida en el cuerpo de otra clase o en el cuerpo de un método.

• Respetan las relaciones entre dos clases.

• Existen 4 tipos:

Definidos en la Clase• Static (estáticas)• Member (miembro)

Definidos en un método

• Local (local)• Anonymous (anónimas)

Page 13: Herencia y Polimorfismo

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez8-13

Clase Interna. MiembroClase Interna. Miembro

• Son declaradas dentro del cuerpo de otra clase

• El anidamiento esta permitido

• Pueden acceder a las variables de su clase contenedora y de alguna clase incluida.

• Las clases interna no pueden contener declaraciones estáticas.

Page 14: Herencia y Polimorfismo

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez8-14

Clase Interna. Estática (anidada)Clase Interna. Estática (anidada)

• Las clases internas pueden declararse static, comúnmente denominadas clases anidadas.

• Las clases anidadas no tienen acceso a la referencia implícita.

Page 15: Herencia y Polimorfismo

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez8-15

Clase Interna. LocalClase Interna. Local

• Esta declarada dentro del bloque de código de un método.

• Todos los parámetros finales (constantes) declarados en el bloque son accesibles por los métodos de la clase interna.

Page 16: Herencia y Polimorfismo

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez8-16

Clase Interna. AnónimaClase Interna. Anónima

• Son clases internas que no tiene un nombre definido.

• No pueden ser instanciadas.

• Se definen en un método de la clase externa.

Page 17: Herencia y Polimorfismo

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez8-17

Práctica 6Práctica 6

Objetivos

– Hacer uso de abstracciones para la construcción de aplicaciones extensibles.

Page 18: Herencia y Polimorfismo

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez8-18

Page 19: Herencia y Polimorfismo

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez8-19

Enumerated Types (enums) Enumerated Types (enums)

• Enums son Comparable y Serializables. Las constantes de Enum deberían ser nombradas de manera similar que las constantes. Enums son básicamente un nuevo tipo de Clase.

• Ya que es una clase puede contener métodos

Page 20: Herencia y Polimorfismo

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez8-20

Práctica 7Práctica 7

Objetivo

– Hacer uso del tipo Enum para la definición de constantes.

Page 21: Herencia y Polimorfismo

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez8-21

Page 22: Herencia y Polimorfismo

Copyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez8-22

ResumenResumen

• La herencia permite extender la funcionalidad de una clase sin modificarla siquiera.

• El polimorfismo es la capacidad de los objetos de suplantar a todos sus subtipos.

• Un método polimórfico es aquel que trabaja con la clase base de una jerarquía o con una interface.

• Las clases adquieren nuevas capacidades al implementar una interface.

• Las interfaces resuelven el problema de la herencia múltiple en Java.

• Una interfaz es una clase completamente abstracta.• Los tipos enumerados son un tipo especial de clase que

ofrecen mayor control sobre valores de selección constantes.