Post on 19-Jul-2015
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