Muy buen día
El día de hoy tocaremos el tema de dos de los pilares
fundamentales del paradigma orientado a objetos.
En una ocasión anterior se habló un poco más a detalle de la
herencia, en esta ocasión quisiera poder hablar sobre el polimorfismo llevado
de la mano con la herencia, pueden ver el articulo desde este enlace: http://www.apuntesbinarios.com/2013/09/herencia.html.
En mi época de estudiante, los profesores solían explicar el
tema de polimorfismo con ejemplos clásicos como la clase animal y sus clases
derivadas y un método en común Interactuar()
El gato decía “Miau” el perro “guau guau” etc etc.
Ahora me gustaría explicarles este tópico pero con un
ejemplo poco común que creo se adapta muy bien al panorama didáctico.
Imaginemos que tenemos que diseñar un videojuego de rol
llamado “Drogadictos”
En el juego, tú creas tu avatar y eliges una habilidad, que
en este caso será un vicio.
En este caso elegiremos tres vicios comunes en la sociedad.
- Tabaquista
- Alcoholico
- Marihuano
Entonces, nosotros como desarrolladores de software encargados
de diseñar este juego de rol, comienzas con la polémica del diseño de software,
como diseñar tus clases.
Comencemos a implementar una clase base, abstracta, llamada
Drogadicto.
public abstract class Drogadicto
{
public
Drogadicto(string nombre)
{
this.Nombre
= nombre;
}
public string Nombre { get; set; }
public abstract void Drogarse();
}
Para este primer boceto, esperemos que nuestro líder de
proyecto no nos regrese nuestro trabajo.
Teniendo nuestra clase Drogadicto. Vamos a comenzar a crear
nuestras clases derivadas.
//la clase deberia llamarse Tabaquista **update
public class Cigarrero : Drogadicto
{
public Cigarrero(string
nombre):base(nombre)
{
}
public override void Drogarse()
{
Console.WriteLine("fumando un cigarro");
}
}
public class Marihuano : Drogadicto
{
public Marihuano(string
nombre):base(nombre)
{
}
public override void Drogarse()
{
Console.WriteLine("Welcome
to tijuana, tequila sexo y marihuana");
}
}
public class Alcoholico:Drogadicto
{
public Alcoholico(string
nombre):base(nombre)
{
}
public override void Drogarse()
{
Console.WriteLine("bebiendo...
bebiendo... glu glu glu");
}
}
Como pueden notar, todas estas clases tienen algo en común,
Comparten el método Drogarse() de la clase base Drogadicto.
Ahora veamos un ejemplo práctico de polimorfismo.
static
void Main(string[]
args)
{
Marihuano marihuas = new
Marihuano("marihuas");
//Tabaquista tabaquista = new Tabaquista("tabaquista");
Cigarrero cigarrero = new
Cigarrero("cigarrero");
Alcoholico alcoholico = new
Alcoholico("alcoholico");
List<Drogadicto>
drogadictos = new List<Drogadicto>();
drogadictos.Add(marihuas);
drogadictos.Add(cigarrero);
drogadictos.Add(alcoholico);
foreach (var
drogadicto in drogadictos)
{
Console.WriteLine(drogadicto.Nombre+ " ");
drogadicto.Drogarse();
Console.WriteLine("--------------------------");
}
Console.ReadKey();
}
Como ven, tenemos tres drogadictos, cada uno consume su vicio.
y asi se ven en pantalla:
En el foreach, se ve claramente el polimorfismo. Cada drogadicto,
ejecutando su acción Drogarse.
Eso es polimorfismo, de multiples formas De múltiples formas.
Espero que este ejemplo haya sido claro y conciso, no pretendía
dar un ejemplo de escuela, para eso están las escuelas J lo que pretendía era dar un
ejemplo poco común y que explicara de forma clara lo que es la herencia y el
polimorfismo trabajando a la par.
El contenido en este artículo es meramente didáctico, no
pretende ofender a nadie, cualquier parecido con la realidad es mera
coincidencia.
0 comentarios:
Publicar un comentario