Curso Java Inicial - 6 Polimorfismo, Abstracción e Interfaces

download Curso Java Inicial - 6 Polimorfismo, Abstracción e Interfaces

of 29

Transcript of Curso Java Inicial - 6 Polimorfismo, Abstracción e Interfaces

Java Inicial(20 horas)

Temario1. 2. 3. 4. 5. 6. 7. 8.

Programacin Orientada a Objetos Introduccin y Sintaxis Java Sentencias Control Flujo POO en Java Relaciones entre Objetos Polimorfismo, abstraccin e interfaces Excepciones Conceptos avanzados

Tema 6Polimorfismo, Abstraccin e Interfaces

Objetivos1. 2. 3. 4. 5. 6.

7. 8.

Programacin Orientada a Objetos Introduccin y Sintaxis Java Sentencias Control Flujo POO en Java Relaciones entre Objetos Polimorfismo, abstraccin e interfaces Excepciones Conceptos avanzados

n n n

Polimorfismo Variables

polimrficas

Clases Abstractas Interfaces Herencia

mltiple

6 Polimorfismo, Abstraccin e Interfaces

n

Polimorfismo: es la capacidad que tiene losobjetos de comportarse de mltiples formas. Unn n

objeto puede comportarseComo los que es (Objeto a la clase a la que pertenece) O Cualquiera de sus clases Base (Padre)

Enn n

la llamada al constructor de la clase base Persona (super(e)) pasamos un objeto e (Empleado)Todo objeto de la claseB es objeto de la claseA Todo objeto de la clase Empleado es objeto de la clase persona.

6 Polimorfismo, Abstraccin e Interfaces

n

Polimorfismo: Upcasting nicamente

tienen sentido por la existencia de

la herencia. El polimorfismo (o upcasting) consiste en la posibilidad de que una referencia a objetos de una clase pueda conectarse tambin con objetos de descendientes de sta

6 Polimorfismo, Abstraccin e Interfaces

n

Polimorfismo: Upcasting (II) El

sentido del polimorfismo es realizar una generalizacin, olvidar los detalles concretos de uno o varios objetos de distintas clases y buscar un punto comn a todos ellos en un ancestro Se trata de algo que realiza comnmente la mente humana durante el proceso de razonamiento

6 Polimorfismo, Abstraccin e Interfaces

n

Polimorfismo: Paso argumentos Las

conexiones polimorfas se realizan a veces de manera implcita en el paso de argumentos a una operacin.

6 Polimorfismo, Abstraccin e Interfaces

n

Polimorfismo: Variables polimrficas: Puede

contener referencias a objetos de diferentes clases Ejemplo:n

Necesitamos implementarnos una agenda para almacenar 500 datos de Personas o Empleados.Cmo definiremos la clase Agenda? Cmo definiremos el array que lo almacenara?

Tipo Persona? Tipo Empleado? Dos arrays independientes Mal uso memoria!

6 Polimorfismo, Abstraccin e Interfaces

n

Polimorfismo: Variables polimrficas (II) Sin

tomamos la decisin en base al tamao:Clase Persona > Clase Empleado

n

Lo anterior da error de compilacin

6 Polimorfismo, Abstraccin e Interfaces

n

Polimorfismo: Variables polimrficas (III) Si

tomamos la decisin de la clase ms genrica:

n

Ahora no da Error por qu?

6 Polimorfismo, Abstraccin e Interfaces

n

Polimorfismo: Variables polimrficas (IV) Problemasn

de las variables polimrficas:

Cuando intentamos invocar mtodos que slo estn definidos en la clase hijo

n

Lo anterior da error de compilacin

6 Polimorfismo, Abstraccin e Interfaces

n

Polimorfismo: Variables polimrficas (V) Problemasn

de las variables polimrficas:

Solucin 1: Hacemos un Cast

n

Pero para la clase Persona error en ejecucin

6 Polimorfismo, Abstraccin e Interfaces

n

Clases Abstractas Existen

clases que representan conceptos genricos y es ilgico instanciar objetos. Puede ser imposible o intil la implementacin de ciertas operaciones. La utilidad de este tipo de clases est en la aplicacin de herencia para obtener clases que representan conceptos concretosn

La clase TareaPeriodica es un claro ejemplo: por s sola no tiene utilidad, pero simplifica mucho la construccin de las otras tres clases. De hecho, la operacin ejecutarTarea en TareaPeriodica no tiene una implementacin til

6 Polimorfismo, Abstraccin e Interfaces

n

Clases Abstractas (II) Unan n

clase abstracta es aquella que tiene una funcionalidad definidaPero que no se puede implementar dicha funcionalidad. Motivo: Se trate de una clase demasiado genrica.

A

la funcionalidad no implementada se le llama mtodo abstracto Sintaxis

6 Polimorfismo, Abstraccin e Interfaces

n

Clases Abstractas (III) Las

operaciones abstractas deben ser implementadas obligatoriamente en alguna de las subclases para que la clase correspondiente sea instanciable. Una clase abstracta puede no tener ninguna operacin abstracta, pero una clase que contenga al menos una operacin abstracta debe ser declarada como abstracta

6 Polimorfismo, Abstraccin e Interfaces

n

Clases Abstractas (II): No

se puede crear objetos (No hay implementacin) Los mtodos abstractos tambin se heredan.

Lan

clase automvil define el mtodo arrancar() por que todos los coches tienen dicha funcionalidad.Al no conocer el motor no puede implementar el mtodo

6 Polimorfismo, Abstraccin e Interfaces

n

Clases Abstractas: Ejemplo

Genricos

6 Polimorfismo, Abstraccin e Interfaces

n

Clases Abstractas: Ejemplo

Genricos

6 Polimorfismo, Abstraccin e Interfaces

n

Clases Abstractas: Ejemplo

Genricos

6 Polimorfismo, Abstraccin e Interfaces

n

Qu ocurrira si el Crculo y el Rectngulo heredasen de otra clase anteriormente? No

podramos tener la clase figura ya que Java no permite herencia mltiple

n

Para esto tenemos los Interfaces Clase

que declara solo mtodos sin implementarlos

Permite

Herencia mltiple

6 Polimorfismo, Abstraccin e Interfaces

n

Ejercicio Implementar

en una clase concreta (SopaLetrasImplementacion) la clase SopaLetras que representa una sopa de letras de 7x7.Public abstract void crearSopa(char[] c) Public abstract void pintarSopaLetras() Public abstract boolean existeLetra?(char c) Public abstract boolean contienePalabra?(char[] c) Pistas que pueden ayudar:n n

Se pueden pasar de char[] a String con String s=new String(char[]); Se puede buscar un substring en un String s con el metodo s.contains(String)

6 Polimorfismo, Abstraccin e Interfaces

n

Interfaces La

idea de clase abstracta, llevada al extremo, nos lleva en Java a las interfaces. Una interfaz es similar a una clase totalmente abstracta Sirven para especificar las operaciones que obligatoriamente deben implementar una serie de clases

6 Polimorfismo, Abstraccin e Interfaces

n

Interfaces Sintaxis

para indicar que una clase implementa un

interfaz.

Podemos

implementar varios interfaces

Pueden

ser utilizado para definir una variable

Puede incluir un objeto que implemente dicho interfaz

6 Polimorfismo, Abstraccin e Interfaces

n

Interfaces Permite

herencia mltiple

No

es necesario poner el public abstract a los mtodos redundante

6 Polimorfismo, Abstraccin e Interfaces

n

Interfaces: Ejemplo Rectngulo / Crculo

Interface

Rectngulo

Crculo

6 Polimorfismo, Abstraccin e Interfaces

n

Interfaces: Ejemplo Tarea peridica

6 Polimorfismo, Abstraccin e Interfaces

n

Ejemplo del workspace

Existen una serie de clases y interfaces (Animal.java, AnimalInterface.java) que generalizan el concepto de animal, con una serie de mtodos y atributos. Por otro lado, las clases Perro muestran como utilizar la clase Animal con distintas relaciones (herencia, interfaces)

Conclusiones1. 2.

3. 4. 5. 6.

7. 8.

Programacin Orientada a Objetos Introduccin y Sintaxis Java Sentencias Control Flujo POO en Java Relaciones entre Objetos Polimorfismo, abstraccin e interfaces Excepciones Conceptos avanzados

n n n

Polimorfismo Variables polimrficas Clases Abstractas Interfaces Herencia mltiple