You are on page 1of 29

Java Inicial

(20 horas)

Temario
1. 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 6
Polimorfismo, Abstraccin e Interfaces

Objetivos
1. 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

Polimorfismo: es la capacidad que tiene los


objetos de comportarse de mltiples formas.
Un
n n

objeto puede comportarse


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

En
n 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

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

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

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

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

Polimorfismo: Variables polimrficas (II)


Si
n

tomamos la decisin en base al tamao:


Clase Persona > Clase Empleado

Lo anterior da error de compilacin

6 Polimorfismo, Abstraccin e Interfaces

Polimorfismo: Variables polimrficas (III)


Si

tomamos la decisin de la clase ms genrica:

Ahora no da Error por qu?

6 Polimorfismo, Abstraccin e Interfaces

Polimorfismo: Variables polimrficas (IV)


Problemas
n

de las variables polimrficas:

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

Lo anterior da error de compilacin

6 Polimorfismo, Abstraccin e Interfaces

Polimorfismo: Variables polimrficas (V)


Problemas
n

de las variables polimrficas:

Solucin 1: Hacemos un Cast

Pero para la clase Persona error en ejecucin

6 Polimorfismo, Abstraccin e Interfaces

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 concretos
n

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

Clases Abstractas (II)


Una
n n

clase abstracta es aquella que tiene una funcionalidad definida


Pero que no se puede implementar dicha funcionalidad. Motivo: Se trate de una clase demasiado genrica.

la funcionalidad no implementada se le llama mtodo abstracto Sintaxis

6 Polimorfismo, Abstraccin e Interfaces

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

Clases Abstractas (II):


No

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

La
n

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

Clases Abstractas: Ejemplo

Genricos

6 Polimorfismo, Abstraccin e Interfaces

Clases Abstractas: Ejemplo

Genricos

6 Polimorfismo, Abstraccin e Interfaces

Clases Abstractas: Ejemplo

Genricos

6 Polimorfismo, Abstraccin e Interfaces

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

Para esto tenemos los Interfaces


Clase

que declara solo mtodos sin implementarlos

Permite

Herencia mltiple

6 Polimorfismo, Abstraccin e Interfaces

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

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

Interfaces
Sintaxis

para indicar que una clase implementa un

interfaz.

Podemos

implementar varios interfaces

Puede
n

ser utilizado para definir una variable

Puede incluir un objeto que implemente dicho interfaz

6 Polimorfismo, Abstraccin e Interfaces

Interfaces
Permite

herencia mltiple

No

es necesario poner el public abstract a los mtodos redundante

6 Polimorfismo, Abstraccin e Interfaces

Interfaces: Ejemplo Rectngulo / Crculo

Interface

Rectngulo

Crculo

6 Polimorfismo, Abstraccin e Interfaces

Interfaces: Ejemplo Tarea peridica

6 Polimorfismo, Abstraccin e Interfaces

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)

Conclusiones
1. 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