Unidad-4.-Polimosfirmo-1

download Unidad-4.-Polimosfirmo-1

of 15

description

unidad 4 de programación orientada a objetos

Transcript of Unidad-4.-Polimosfirmo-1

4. POLIMORFISMO

4. POLIMORFISMOProgramacin Orientada a ObjetosPolimorfismoPermite que diferentes objetos respondan de modo distinto al mismo mensaje.

Adquiere su mxima potencia cuando se utiliza junto con la Herencia

Se establece como una LIGADURA DINMICA de mtodos, es decir se decide el tipo de objeto hasta el tiempo de ejecucin.

Se puede representar como un array de elementos que se refieren a objetos de diferentes tipos (clases) y posteriores referencias a la clase Base Uso del PolimorfismoCrear la jerarqua de clases con las operaciones importantes definidas por los miembros abstractos de la clase Base.

Las implementaciones especficas de los mtodos abstractos se deben hacer en las clases derivadas. Cada clase derivada puede tener su propia versin del mtodo.

Las instancias de estas clases se manejan a travs de una referencia a la clase base. Este mecanismo es la LIGADURA DINMICA y es la esencia del POLIMORSFISMO

Ventajas del Polimorfismo1. Hace el sistema ms flexible sin perder las ventajas de la compilacin esttica de tipos en tiempo de compilacin

2. Especializacin de clases derivadas.- derivar clases especializadas que han sido definidas previamente

3. Estructuras de datos heterogneos

4. Gestin de una jerarqua de clases.- colecciones de clases altamente estructuradas, con relaciones de herencia que se pueden extender fcilmente.Mtodos abstractosIndica al compilador que ser definido (implementado su cuerpo) en una clase derivada (no necesariamente en la heredada inmediata).

Su uso comn e los mtodos abstractos es la declaracin de clases abstractas y la implementacin del Polimorfismo.

abstract double calculaArea();

Clases abstractasRepresentan conceptos generales, engloban las caractersticas comunes de un conjunto de objetos.

Declaran mtodos y variables de instancia, tienen mtodos abstractos.

Ejemplo: Persona en contexto de trabajadores, es una clase abstracta que engloba caractersticas y mtodos de todo tipo de Persona. Clases abstractasabstract class nombre{public abstract double metodo1();public abstract void metodo2();public abstract char metodo3();}

Definicin de clase abstracta

Clases abstractasabstract class Persona{ private String ife; private int edad;

public abstract String muestraIFE(); public abstract void muestraEdad();}

Definicin de la clase abstracta Persona

Clases abstractasUna clase que tiene un mtodo abstracto se debe declarar abstracta.

Una clase que no redefina un mtodo abstracto heredado se convierte en clase abstracta

No se pueden instanciar objetos de una clase abstracta

public abstract class ejemplo{}ejemplo x= new ejemplo(); error Figuras FigurasCuadradoCirculointerfaceProduce una clase completamente abstracta y pura, que no contiene implementacin

Establece la forma de la clase: mtodos, lista de parmetros, y tipos de retorno pero no cuerpos de mtodos

Es la apariencia que tendrn las clases que implementan la interfaz

public interface Instrumento{}

interfacePermite declarar un conjunto de constantes y de definiciones de mtodos abstractos

Para lograr que una clase se ajuste a una interfaz se debe implementar desde otra clase, as est ltima se vuelve una clase ordinaria.

Las declaraciones de mtodos en una interfaz pueden ser public o amistosos y abstractos.interfacepublic interface Nodo{boolean asignar();void escribir();}

La interface tiene 2 mtodos abstractos y pblicos.interface Instrumentovoid tocar();String que();void ajustar();Vientovoid tocar(){}String que(){}void ajustar(){}Percusionvoid tocar(){}String que(){}void ajustar(){}Cuerdavoid tocar(){}String que(){}void ajustar(){}Metalvoid tocar();String ajustar();MaderaVientovoid tocar();String que();implementsimplementsimplementsextendsextendsinterface Barcovoid alarma();String msgAuxilio();implementsimplementsimplementsBarcoPasajeprivate int eslora;private int numcamas =100;BarcoPasaje(int eslora){}void alarma();String msgAuxilio();PortaAvionprivate int aviones;private int tripulacin;

PortaAvion(int marinos, int aviones);void alarma();String msgAuxilio();Pesqueroprivate int eslora;private double potencia;private int pescadores;String nombre;

Pesquero(int tripulacion){}void alarma();String msgAuxilio();