Guia MSDN

Páginas: 18 (4371 palabras) Publicado: 2 de septiembre de 2014
Polimorfismo en c#
Publicado el julio 17, 2012
9

Polimorfismo es uno de los pilares de la programación orientada a objetos que mas se utiliza, lo único que es dejado de lado por los programadores en cuanto a su uso en las aplicaciones de negocios.
En este post trataré de explicar su utilización en la programación. Primero tratemos de definir la palabra polimorfismo según una búsqueda porinternet seria, Poli = muchos y Morfo = formas; si lo decimos literalmente seria “muchas formas”.
En programación seria la capacidad que tiene una clase en convertirse en un nuevo objeto sin cambiar su esencia y luego volver al objeto origina de donde salió.
Hay tres tipos de polimorfismo definamos cada uno:
1. polimorfismo por herencia: cuando se hereda de una clase normal y puedo convertirmeen ella.
2. polimorfismos por abstracción: cuando puedo heredar de una clase abstracta y puedo convertirme en ella.
3. polimorfismo por interface: es la posibilidad que tenemos de implementar una interface y puedo convertirme en ella.
Polimorfismo por Herencia:
Este tipo de polimorfismo es el mas común que existe, y tiene la facultad de heredar de una clase padre y reemplazarla.

En unproyecto de consola tendremos que crear estas tres clase:

En la clase perro tenemos un método que solo nos devuelve un string. por otra parte las clases chihuahua y bulldog serán clases que heredaran el comportamiento de la clase perro.
Ahora supongamos que estos dos perros son callejeros y viene el control de animales y los meta a la perrera. Esta perrera será un arreglo o Array en nuestro program,de la siguiente manera:

En el arreglo perrera he metido cada uno de los perros que instanciamos, si lo corremos nos daría esto:

El problema en esta ejecución es que aunque metimos distintos perros dentro de nuestra perrera como todos heredan de perros siempre dará el mismo mensaje. otra cosa que podemos observar es que en el foreach cuando ejecutamos el Console.WriteLine no nos da erroresto se debe que al foreach le hemos dicho que todo esta basado en la clase perro, de esta forma el runtime sabe que para estar en la perrera hay que heredar de la clase perro en pocas palabras ser un perro.
Cambiemos el comportamiento de los hijos; veamos supongamos que no todos los perros ladran de la misma forma el chihuahua ladra distinto que el bulldog. Para lograr esto  la clase perro tieneque dejar o permitir que los hijos modifiquen el comportamiento; miremos como quedan las clases ya modificadas:

Primero el método Ladrar es de tipo virtual esto me permitirá sobrescribir este método en los hijos, en las clases hijos usaremos la palabra clave override para sobrescribir el método virtual del padre. Si corremos la aplicación de consola nos dará esto:

Cuando corrimos nuestroprograma no se ejecuto el método del padre sino los cambios que hicimos en los hijos.
Polimorfismo por Abstracción:
Este tipo de polimorfismo se da con el uso de las clases abstractas. Pero que es una clase abstracta es aquella que además de lo normal que contiene una clase tiene comportamientos que si están definidos pero no implementados.
Vemos lo siguiente que pasaría si en el ejemplo anteriornos vemos en la necesidad de implementar un comportamiento en los perros que sea dormir. El problema que no todos los perros duermen de la misma forma cada uno lo hace a su manera.
Primero para lograr esto debemos de declarar la clase perro como abstracta y luego declarar el método dormir para luego implementarlo en las clases hijos, de esta forma:

Como pueden ver hemos declarado la clase perrocomo abstracta y el método dormir también. Así que el Main del Program tendríamos que implementar el método abstracto de esta forma:

si lo corremos nos daría este resultado:

Hay que recordar que las clases abstractas no se pueden instanciar.
Polimorfismo por Interface:
Es uno de los polimorfismos mas importantes por que esta basado por contratos, que son los encargados de decirme que...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Guias
  • Guia
  • Guia
  • Guia
  • Guia
  • Guia :)
  • Guia
  • Guia

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS