POLIMORFISMO "una interfaz, múltiples métodos".

Slides:



Advertisements
Presentaciones similares
Introducción a C#.
Advertisements

Curso de java básico (scjp)
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Adapter, Bridge, Decorator.
Curso de Java Capitulo 7: Continuación Poo Profesor:
Curso de Java Capitulo 7: Conceptos sobre poo Profesor:
POLIMORFISMO UNIDAD 4.
Herencia en C#.
Fundamentos de la programación orientada a objetos
22/11/2005 E.T.S de Ingenieros de Telecomunicación - UPNA.1 Clases y Objetos Silvia Larrayoz Leire Urriza.
Lenguaje de programación Java
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
INTRODUCCIÓN A JAVA.
Arquitectura CLARO-TECNOTREE
Polimorfismo Unidad 4.
Introducción 1 Puntos Clave –La orientación a objetos representa un cambio radical en los métodos tradicionales de creación de software –Los métodos tradicionales.
Lección 1 Introducción a la POO
Herencia y Polimorfismo
Aplicación del paradigma orientado a objetos
Diseño y programación de
PROGRAMACION ORIENTADA A OBJETOS
Programación Orientada a Objetos en Java
HERENCIA.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
4.- Orientación a Objetos Justo N. Hidalgo Sanz DEPARTAMENTO DE INGENIERÍA INFORMÁTICA.
Introducción a la Programación Orientada a Objetos Redefinición y Sobrecarga Dada la siguiente jerarquía de clases: Alfa Delta Beta.
Herencia e Interfaces.
Programación Orientada a Objetos usando C++
Medio de tele-comunicación
Modificadores.
Herencia y Polimorfismo en JAVA
Estructura de Datos En C++
Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR.
Lic. Rosemary Torrico Bascopé
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
Tema 10: Interfaces Antonio J. Sierra.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
Variables polimórficas (plantillas): definición, uso y aplicación
1 Interfaces Agustín J. González ELO Introducción En C++ se permite la herencia múltiple; es decir, es posible derivar una clase de dos o más clases.
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
Patrones Creacionales
Introducción a la POO • ¿Qué es la programación orientada a objets (POO)? – Un “paradigma” de programación – Una forma de pensar acerca de los problemas.
Programación Orientada a Objetos
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SEMANA DOS ORIENTACION A OBJETOS.
Patrones de diseño DECORATOR Mario Rodríguez Martín
Herramientas de polimorfismo y herencia en C++
Programación avanzada en Java Miguel Ángel Corella 23 de Septiembre de 2005.
Metodología de Programación Ayudantía 4 lelagos.ublog.cl 2008.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
Metodología de Programación Ayudantía 5 lelagos.ublog.cl 2009.
Sara Isabel Osorio Alacraz Ana Isabel Vallejo Grisales
EI, Profesor Ramón Castro Liceaga Agosto de 2005 UNIVERSIDAD LATINA (UNILA) PROGRAMACION ORIENTADA A OBJETOS EN JAVA (Optativa) CONCEPTOS DE PROGRAMACION.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
Facultad de Ingeniería
Unidad 2.1: INTRODUCCIÓN A LA ORIENTACIÓN A OBJETOS.
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
CONCEPTOS.
Universidad Tecnológica de Izúcar de Matamoros Programa Educativo: Tecnologías de la Información Asignatura: Base de datos para aplicaciones Tema: Base.
HERENCIA.
M.C. Pedro Bello López 1 IMPLEMENTACIÓN. M.C. Pedro Bello López2.
Tipo de relación entre clases Es uno de los aspectos que distinguen el paradigma de orientación a objetos frente a otros paradigmas. Mecanismo que,
Programación Orientada a Objetos: CLASES Y OBJETOS
Clases “ Es una Abstracción de un elemento del mundo real ”
Herencias Conceptos básicos i
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
RELACIONES ENTRE CLASES M.C. YOLANDA MOYAO MARTINEZ.
Prof. Manuel B. Sánchez. Es un mecanismo y uno de los pilares de la POO que permite definir nuevas clases a partir de otras preexistentes. La Herencia.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
Transcripción de la presentación:

POLIMORFISMO "una interfaz, múltiples métodos".

E.T.S de Ingenieros de Telecomunicación - UPNA POLIMORFISMO Indice Definición y caracteristicas Objetivos. SOBRRESCRITURA-SOBRECARGA Clases y métodos abstractos INTERFACES (herencia múltiple) Subclase,Clase abstracta e Interface Interface vs. Clase Abstracta Ejemplo: (4)Project Musica (Instrumentos). E.T.S de Ingenieros de Telecomunicación - UPNA 22/11/2005

POLIMORFISMO Definicion y características Son dos mecanismos (up,downcasting) relacionados que otorgan a la OOP una gran potencia frente a otros paradigmas de programación Únicamente tienen sentido por la existencia de la herencia El sentido del polimorfismo (up-casting) es realizar una generalización, olvidar los detalles concretos de uno o varios objetos de distintas clases y buscar un punto común a todos ellos en un ancestro. E.T.S de Ingenieros de Telecomunicación - UPNA 22/11/2005

POLIMORFISMO Definicion y características Una variable referencia es polimórfica cuando su tipo de declaración no coincide con el tipo del objeto al que referencia: Figura f1 = new Figura(“Estandar”, “Rojo”); Figura f2 = new Circulo(“Verde”, 5.0); E.T.S de Ingenieros de Telecomunicación - UPNA 22/11/2005

POLIMORFISMO Definicion y características El polimorfismo esta presente cuando se envia un mensaje a un objeto del que no se sabe su tipo, ejecutánodse el metodo adecuado de acuerdo con su tipo. Enlace dinamico: Se elige el metodo a ejecutar en tiempo de ejecucion, en funcion de la clase del objeto; Es la implementacion del polimorfismo. E.T.S de Ingenieros de Telecomunicación - UPNA 22/11/2005

POLIMORFISMO Definicion y características Moldes de objetos(castings): Realizan conversiones de tipo, no modifican al objeto, solo su tipo. Upcasting : Interpretar un objeto de una clase derivada como del mismo tipo que la clase base. No hace falta especificarlo Downcasting: Interpretar un objeto de una clase base como del mismo tipo que una clase derivada suya. Se especifica precediendo al objeto a convertir con el nuevo tipo entre paréntesis. E.T.S de Ingenieros de Telecomunicación - UPNA 22/11/2005

POLIMORFISMO Definicion y características Ejemplo upcasting polimorfismo (1)Project Polimorfismo,Polimorfismo2 (Mamifero). E.T.S de Ingenieros de Telecomunicación - UPNA 22/11/2005

POLIMORFISMO Definicion y características Tras realizar una conexión polimorfa es frecuente la necesidad de volver a recuperar el objeto original, para acceder a sus operaciones propias. Se trata de la operación inversa al polimorfismo(upcasting), denominada downcasting. Si el polimorfismo implica una generalización, el downcasting implica una especialización. Al contrario que el upcasting, el downcasting no puede realizarse directamente mediante una conexión con una referencia de la clase del objeto. E.T.S de Ingenieros de Telecomunicación - UPNA 22/11/2005

POLIMORFISMO Definicion y características Utilizar instanceof para determinar si el objeto es de la clase esperada antes de realizar el casting. La operación getClass () de Object devuelve un objeto de la clase Class que permite obtener en tiempo de ejecución gran cantidad de información de la clase a la que pertenece el objeto. El atributo estático class de la clase también devuelve una referencia a este objeto E.T.S de Ingenieros de Telecomunicación - UPNA 22/11/2005

POLIMORFISMO Objetivos Objetivo: reutilizacion y flexibilidad. Facilidad para adaptarse a cambios ¿Cómo se consigue? Interfaces Clases abstractas Métodos polimórficos Implementación de colecciones y métodos genéricos. E.T.S de Ingenieros de Telecomunicación - UPNA 22/11/2005

POLIMORFISMO Objetivos Permite código independiente del tipo. Fácil de escribir y entender. Al añadir nuevos tipos: No hay que reescribir código Programas extensibles E.T.S de Ingenieros de Telecomunicación - UPNA 22/11/2005

POLIMORFISMO Objetivos E.T.S de Ingenieros de Telecomunicación - UPNA 22/11/2005

POLIMORFISMO Objetivos EJEMPLO DE COLECCIÓN GENÉRICA public class TestPolimorfismo{ public static void main(String[] args) { Animal[] animales = new Animal[4]; animales[0] = new Lobo(); animales[1] = new Perro(); animales[2] = new Leon(); animales[3] = new Tigre(); for(int i=0; i<animales.length; i++) { animales[i].dormir(); animales[i].comer(); } } E.T.S de Ingenieros de Telecomunicación - UPNA 22/11/2005

POLIMORFISMO Objetivos E.T.S de Ingenieros de Telecomunicación - UPNA 22/11/2005

POLIMORFISMO Objetivos EJEMPLO DE MÉTODO GENÉRICO public class Matematico{ public double calcularArea(Figura param) { return param.calcularArea(); } public class TestPolimorfismo { public static void main(String[] args) { Matematico m = new Matematico(); m.calcularArea(new Circulo()); m.calcularArea(new Triangulo()); } E.T.S de Ingenieros de Telecomunicación - UPNA 22/11/2005

POLIMORFISMO SOBREESCRITURA-SOBRECARGA SOBREESCRITURA: La subclase reimplementa el método heredado (cambian el comportamiento). SOBRECARGA: Varias implementaciones del mismo método con distintos parámetros (cambio de interfaz). Muy habitual en constructores. Es aquí donde realmente se aprecia los beneficios del polimorfismo. Sobrecargando el constructor conseguimos dotar a la clase de flexibilidad. Pero siempre debe quedar claro que tras la conexión polimorfa únicamente podemos acceder a las operaciones pertenecientes a la clase asociada a la referencia. El resto de operaciones del objeto no son accesibles a través de esta referencia E.T.S de Ingenieros de Telecomunicación - UPNA 22/11/2005

POLIMORFISMO SOBRRESCRITURA-SOBRECARGA //Sobrecarga de constructores class Box { double width; double height; double depth; //El siguiente es el constructor específico Box(double w, double h, double d) { width = w; height = h; depth = d; } Box () { width = height = depth = -1 //-1 indica volumen no existente //Cubo,entonces, por qué introducir 3 valores? Box (double valor) { width = height = depth = valor; double volume() { return width * height * depth; E.T.S de Ingenieros de Telecomunicación - UPNA 22/11/2005

POLIMORFISMO Clases y métodos abstractos Clases abastractas: A menudo existen clases que sirven para definir un tipo genérico pero que no tiene sentido instanciar (crear objetos de ella). Métodos abstractos: Un método abstracto significa que tiene que ser sobrescrito. No está implementado. Una clase con uno o varios métodos abstractos tiene que ser declarada abstracta. No obstante una clase abstracta no tiene porque tener métodos abstractos. E.T.S de Ingenieros de Telecomunicación - UPNA 22/11/2005

POLIMORFISMO INTERFACES (herencia múltiple) Los interfaces en Java nos solucionan en parte la no existencia de la herencia múltiple. Los interfaces son un tipo de clase especial que no implementa ninguno de sus métodos. Todos son abstractos. Por tanto no se pueden instanciar. De los interfaces también se hereda, aunque se Suele decir implementa. Y se realiza mediante la keyword: implements. Si una clase que hereda de un interface, no implementa todos los métodos de este, deberá ser definida como abstracta. E.T.S de Ingenieros de Telecomunicación - UPNA 22/11/2005

POLIMORFISMO INTERFACES (herencia múltiple) ¿Para qué se utiliza? Para permitir la herencia múltiple (ya que la herencia en Java sólo permite heredar de una sola clase). Definen un comportamiento (o funcionalidad) genérico, ignorando los aspectos relacionados con su implementación. Las interfaces que implementa una clase se comportan igual que las superclases en lo que respecta al uso del polimorfismo. E.T.S de Ingenieros de Telecomunicación - UPNA 22/11/2005

POLIMORFISMO INTERFACES (herencia múltiple) (3)Project HerenciaMultiple2 (Anfibio). E.T.S de Ingenieros de Telecomunicación - UPNA 22/11/2005

POLIMORFISMO Subclase,Clase abstracta e Interface Subclase: Necesitemos hacer una especialización de la superclase mediante sobreescritura o añadiendo nuevos métodos. Clase abstracta: Queremos definir un grupo genérico de clases y además tengamos algunos métodos implementados que reutilizar. Interface: Queremos definir un grupo genérico de clases y no tengamos métodos implementados que reutilizar. O cuando nos veamos forzados por la falta de herencia múltiple en Java. E.T.S de Ingenieros de Telecomunicación - UPNA 22/11/2005

POLIMORFISMO Interface vs. Clase Abstracta Un interface no puede implementar ningún método. Un interface no forma parte de la jerarquía de clases. Clases dispares pueden implementar el mismo interface. Una clase puede implementar n interfaces pero solo una clase. El objetivo de un método abstracto es forzar una interfaz (API) pero no una implementación. E.T.S de Ingenieros de Telecomunicación - UPNA 22/11/2005

POLIMORFISMO Interface vs. Clase Abstracta Haremos un interface cuando queramos definir un grupo genérico de clases y no tengamos métodos implementados que reutilizar. O cuando nos veamos forzados por la falta de herencia múltiple en Java. E.T.S de Ingenieros de Telecomunicación - UPNA 22/11/2005

POLIMORFISMO Ejemplos de polimorfismo (4)Project Musica (Instrumentos). E.T.S de Ingenieros de Telecomunicación - UPNA 22/11/2005

E.T.S de Ingenieros de Telecomunicación - UPNA DIAGRAMA DE CLASES: MUSICA E.T.S de Ingenieros de Telecomunicación - UPNA 22/11/2005