herencia y polimorfismo

18

Click here to load reader

Upload: rolando-steep-quezada-martinez

Post on 26-May-2015

26.454 views

Category:

Technology


0 download

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ínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 8-8-22

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ínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 8-8-33

Herencia en JavaHerencia en Java

Page 4: Herencia Y Polimorfismo

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

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ínezCopyright © 2007, Universidad Privada del Norte S.A.C. – Ing. Rolando Steep Quezada Martínez 8-8-66

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 6: Herencia Y Polimorfismo

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

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 7: Herencia Y Polimorfismo

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

Clases Abstractas en JavaClases Abstractas en Java

Page 8: Herencia Y Polimorfismo

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

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 9: Herencia Y Polimorfismo

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

Interfaces en JavaInterfaces en Java

Page 10: Herencia Y Polimorfismo

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

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 11: Herencia Y Polimorfismo

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

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 12: Herencia Y Polimorfismo

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

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 13: Herencia Y Polimorfismo

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

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 14: Herencia Y Polimorfismo

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

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 15: Herencia Y Polimorfismo

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

Práctica 6Práctica 6

Objetivos

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

Page 16: Herencia Y Polimorfismo

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

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 17: Herencia Y Polimorfismo

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

Práctica 7Práctica 7

Objetivo

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

Page 18: Herencia Y Polimorfismo

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

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.