La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR.

Presentaciones similares


Presentación del tema: "Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR."— Transcripción de la presentación:

1 Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR

2

3 Polimorfismo (Definición) Polymorphos métodos mismo nombre, diferente implementación objetos actúen de modo diferente en respuesta a una misma llamada. Código Reutilizable Fácil de adaptarlo Múltiples formas

4  El polimorfismo va ligado a la herencia: objetos jerárquicamente relacionados responden en forma diferente al mismo mensaje

5 Polimorfismo VS Sobrecarga SobrecargaPolimorfismo se resuelve en tiempo de ejecución (dependiendo de la clase a la que pertenece el objeto que hace el llamado) se da entre clases distintas. se resuelve en tiempo de enlazado (cuando se esta construyendo el ejecutable) se da siempre en una sola clase

6 Método Abstracto es un método declarado en una clase para el cual esa clase no proporciona la implementación (el código). Sin código se declaran pero no se definen. No tendrá cuerpo y terminará en punto y coma

7 Clase abstracta Clase Abstracta Tiene al menos un método abstracto Declara la existencia de métodos pero no la implementació n Puede contener métodos no- abstractos pero al menos uno de los métodos debe serlo no se puede instanciar pero si se puede heredar Cuando una clase contiene un método abstracto tiene que declararse abstracta no pueden tener métodos privados (no se podrían implementar) ni tampoco estáticos. tiene que derivarse obligatoriamen te Una clase que extiende a una clase abstracta debe implementar los métodos abstractos o volverlos a declarar como abstractos

8

9 Implementación public abstract class figura { protected String nombre; protected int color; protected int grosorBorde; public String getNombre(){ return this.nombre; } public void setNombre(String n){ this.nombre=n; } public int getColor(){ return this.color; } public void setColor(int c){ this.color=c; } public int getGrosorBorde(){ return this.grosorBorde; } public void setGrosorBorde(int g){ this.grosorBorde=g; } public abstract void dibujar (); } public abstract class figura2D extends figura { public abstract int calcularArea (); public abstract int calcularPerimetro (); } public abstract class figura3D extends figura { public abstract int calcularVolumen (); }

10 Interface una interface es una clase abstracta pura, es decir una clase donde todos los métodos son abstractos Si la interface va a tener atributos, éstos deben llevar las palabras reservadas static final y con un valor inicial ya que funcionan como constantes. La interface puede definirse public o sin modificador de acceso Todos los métodos que declara una interface son siempre public Una clase implementa una o más interfaces (separadas con comas ",") con la palabra reservada implements.

11 Ejemplo Interface  interface nombre_interface { tipo_retorno nombre_metodo ( lista_argumentos ) ;... } Por ejemplo:  interface InstrumentoMusical { void tocar(); void afinar(); String tipoInstrumento(); } sirven de guía para definir un determinado concepto (clase) y lo que debe hacer, pero sin desarrollar un mecanismo de solución

12 Implementación de una interface /** * Declaracion de la interfaz Modificacion * @author A. Garcia-Beltran * Ultima revision: noviembre, 2007 */ public interface Modificacion { void incremento(int a); } /** * Declaracion de la clase Acumulador * @author A. Garcia-Beltran * Ultima revision: noviembre, 2007 */ public class Acumulador implements Modificacion { private int valor; public Acumulador (int i) { valor = i; } public int daValor () { return valor; } public void incremento (int a) { valor = valor+a; } /** * Demostracion de la clase Acumulador * @author A. Garcia-Beltran * Ultima revision: noviembre, 2007 */ public class PruebaAcumulador { public static void main (String [] args) { Acumulador p = new Acumulador(25); p.incremento(12); System.out.println(p.daValor()); }

13 Formas de Polimorfismo  Sobre-escritura de métodos:  Métodos de una subclase sobre escriben los métodos de una superclase  Sobre-escritura de métodos abstractos  Métodos de una subclase implementan los métodos abstractos de una superclase abstracta  Sobre-escritura de métodos a través de interface:  Métodos de una clase concreta implementan los métodos de la interface

14 Sobre-escritura de métodos  Subclase modifica los métodos que ha heredado de su padre  Nuevo método tiene diferente funcionalidad del método del padre pero con el MISMO  Nombre  Tipo de Retorno  Lista de argumentos (OJO: lo diferencia de la Sobrecarga) public class empleado { String nombre; int salario; public String getDetalle(){ return "Nombre: "+nombre+"\nSalario: "+salario; }} public class Jefe extends empleado { String depto; public String getDetalle(){ return “Nombre: “+nombre+”\nDepartamento: “+depto; } }

15 Llamada de métodos virtuales  ¿Cual de los getDetalle() se ejecutará? ¿El de la clase empleado o el de la clase Jefe? Empleado e=new Jefe; e.getDetalle();


Descargar ppt "Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR."

Presentaciones similares


Anuncios Google