Polimorfismo

Solo disponible en BuenasTareas
  • Páginas : 9 (2225 palabras )
  • Descarga(s) : 0
  • Publicado : 3 de noviembre de 2010
Leer documento completo
Vista previa del texto
* Unidad VI: Polimorfismo y Reutilización.
Conceptos Básicos
La palabra “polimorfismo” significa “la facultad de asumir muchas formas”, refiriéndose a la facultad de llamar a las distintas versiones que adopta un método definido en una superclase y redefinido en sus clases derivadas, utilizando exactamente el mismo medio de acceso: una referencia a la superclase.
Para conseguir que C# tenga uncomportamiento polimórfico, el método de la superclase debe definirse como virtual y las redefiniciones en sus subclases como override.
Así mismo, sabemos que una referencia a una subclase puede ser convertida implícitamente por C# en una referencia a su superclase directa o indirecta. Esto significa que es posible referirse a un objeto de una subclase utilizando una variable del tipo de susuperclase.
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 (“Estándar”, “Rojo”);

Figura f2 = new Circulo (“Verde”, 5.0);

El polimorfismo está presente cuando se envía un mensaje a un objeto del que no se sabe su tipo, ejecutándose el método adecuado de acuerdo con su tipo.
Enlace dinámico: Seelige el método a ejecutar en tiempo de ejecución, en función de la clase del objeto; Es la implementación del polimorfismo.
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 objetode 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.
Ejemplo upcasting polimorfismo
* (1)Project Polimorfismo, Polimorfismo2 (Mamífero).
Tras realizar una conexión polimorfa es frecuente la necesidad de volver a recuperar el objeto original, para acceder a sus operaciones propias. Setrata 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.
Utilizar instanceof para determinar si el objeto esde 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.
Objetivo del polimorfismo: reutilización 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.
* 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
Según lo expuesto, y en un intento de buscar una codificaciónmás genérica, pensemos en una matriz de referencias en la que cada elemento señale a un objeto de alguna de las subclases de la jerarquía construida anteriormente. ¿De qué tipo deben ser los elementos de la matriz? Según el párrafo anterior deben ser de la clase CCuenta; de esta forma ellos podrán almacenar indistintamente referencias a objetos de cualquiera de las subclases. Por ejemplo:
Class Test{
public static void Main (string [ ] args)
{
CCuenta [ ] cliente = new CCuenta [100];
//Crear objetos y guardar sus referencias en la matriz
cliente [0] = new CCuentaAhorro (“cliente00”,”3000123450”,10000,2.5,3);
cliente [1] = new CCuentaCorriente
( “cliente01”,”6000123450”,10000,2.0,1.0,4);...
tracking img