Polimorfismo

Páginas: 7 (1650 palabras) Publicado: 17 de septiembre de 2012
Polimorfismo
Concepto de polimorfismo
    El polimorfismo es otro de los pilares fundamentales de la programación orientada a objetos. Es la capacidad de almacenar objetos de un determinado tipo en variables de tipos antecesores del primero a costa, claro está, de sólo poderse acceder a través de dicha variable a los miembros comunes a ambos tipos. Sin embargo, las versiones de los métodosvirtuales a las que se llamaría a través de esas variables no serían las definidas como miembros del tipo de dichas variables, sino las definidas en el verdadero tipo de los objetos que almacenan.
    A continuación se muestra un ejemplo de cómo una variable de tipo Persona puede usarse para almacenar objetos de tipo Trabajador. En esos casos el campo Sueldo del objeto referenciado por la variable noserá accesible, y la versión del método Cumpleaños() a la que se podría llamar a través de la variable de tipo Persona sería la definida en la clase Trabajador, y no la definida en Persona:

using System;
class Persona
{
 // Campo de cada objeto Persona que almacena su nombre
 public string Nombre;     
 // Campo de cada objeto Persona que almacena su edad
 public intEdad;              
 // Campo de cada objeto Persona que almacena su NIF
 public string NIF;            
 
 // Incrementa en uno la edad del objeto Persona
 public virtual void Cumpleaños()
 {
   Console.WriteLine("Incrementada edad de persona");
 }
 
 // Constructor de Persona
 public Persona (string nombre, int edad, string nif)
 {
   Nombre = nombre;
   Edad = edad;
   NIF =nif;
 }
}
class Trabajador: Persona
{
 // Campo de cada objeto Trabajador que almacena cuánto gana
 int Sueldo;
 
 Trabajador(string nombre, int edad, string nif, int sueldo)
     : base(nombre, edad, nif)
 {// Inicializamos cada Trabajador en base al constructor de Persona
   Sueldo = sueldo;
 }
 
 public override Cumpleaños()
 {
   Edad++;
  Console.WriteLine("Incrementada edad de trabajador");
 }
 
 public static void Main()
 {
   Persona p = new Trabajador("Josan", 22, "77588260-Z", 100000);
   p.Cumpleaños();     
   // p.Sueldo++; //ERROR: Sueldo no es miembro de Persona
 }
} |
    El mensaje mostrado por pantalla al ejecutar este método confirma lo antes dicho respecto a que la versión de Cumpleaños() a la que se llama, ya que es:
  Incrementada edad de trabajador |
Métodos genéricos
El polimorfismo es muy útil ya que permite escribir métodos genéricos que puedan recibir parámetros que sean de un determinado tipo o de cualquiera  de sus tipos hijos. Es más, en tanto que cómo se verá en el epígrafe siguiente, en C# todos los tipos derivan implícitamente del tipo System.Object, podemos escribir métodos que admitan parámetrosde cualquier tipo sin más que definirlos como métodos que tomen parámetros de tipo System.Object. Por ejemplo:

public void MétodoGenérico(object o)
{
  // Código del método
} |
    Nótese que en vez de System.Object se ha escrito object, que es el nombre abreviado incluido en C# para hacer referencia de manera compacta a un tipo tan frecuentemente usado como System.Object.En programación orientada a objetos se denomina polimorfismo a la capacidad del código de un programa para ser utilizado con diferentes tipos de datos u objetos. También se puede aplicar a la propiedad que poseen algunas operaciones de tener un comportamiento diferente dependiendo del objeto (o tipo de dato) sobre el que se aplican.
El concepto de polimorismo se puede aplicar tanto afunciones como a tipos de datos. Así nacen los conceptos de funciones polimórficas y tipos polimórficos. Las primeras son aquellas funciones que pueden evaluarse o ser aplicadas a diferentes tipos de datos de forma indistinta; los tipos polimórficos, por su parte, son aquellos tipos de datos que contienen al menos un elemento cuyo tipo no está especificado.
Se puede clasificar el polimorfismo en dos...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Polimorfismo
  • Polimorfismo
  • Polimorfismo
  • Polimorfismo
  • Polimorfismos
  • Polimorfismo
  • Polimorfismos
  • Polimorfismo

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS