Acceder Registrarme

POO CON C#: 004-POLIMORFISMO


Finalmente vemos el ejemplo práctico del último pilar de la programación orientada a objetos, en este caso, el tema de polimorfismo con lo que veremos que una clase se puede comportar de diferentes formas de acuerdo a la instancia que se pueda hacer con respecto a las clases hijas dentro de una herencia.

Autor: Kevin Arias (Ver todos sus post)

C# C Sharp Programación orientada a objetos POO Polimorfismo

Fecha de publicación: 2016-09-05 13:13:47

Ayúdanos con el arduo trabajo que realizamos.
[POO CON C#] POO CON C#: 004-POLIMORFISMO

En el polimorfismo veremos que podemos hacer uso de una clase padre en el tema de herencia para posteriormente cargar la instancia directa de sus clases hijas, con lo que se incorpora el comportamiento de dichas clases hijas sobre la clase de donde se heredan. Debemos tener en cuenta que la instancia sólo cargará aquel comportamiento que sea compatible y compartida tanto en la clase padre y la clase hija; para este caso estaremos usando método virtuales y métodos de sobreescritura con lo que le daremos aún una mayor funcionalidad al tema de herencia con el objetivo de llevar a cabo de forma correcta nuestro tema de polimorfismo.

Cabe recalcar que la herencia y polimorfismo van de la mano por lo que en este ejemplo se emplea el uso de ambos conceptos.

Seguidamente les dejo con el código de ejemplo que se trabaja en este post.

Deportista.cs

using System;

namespace AppFirst
{
    public class Deportista
    {
        public virtual void jugar()
        {
            Console.WriteLine("El deportista juega");
        }
    }
}

Ciclista.cs

using System;

namespace AppFirst
{
    public class Ciclista : Deportista
    {
        public override void jugar()
        {
            Console.WriteLine("El ciclista juega");
        }

        public void descender()
        {
            Console.WriteLine("El ciclista desciende la montaña");
        }
    }
}

Futbolista.cs

using System;

namespace AppFirst
{
    public class Futbolista : Deportista
    {
        public override void jugar()
        {
            Console.WriteLine("El futbolista juega");
        }

        public void patear()
        {
            Console.WriteLine("El futbolista patea la pelota");
        }
    }
}

Maratonista.cs

using System;

namespace AppFirst
{
    public class Maratonista : Deportista
    {
        public override void jugar()
        {
            Console.WriteLine("El maratonista juega");
        }

        public void correr()
        {
            Console.WriteLine("El maratonista corre 100 metros planos");
        }
    }
}

Program.cs

using System;

namespace AppFirst
{
    public class Program
    {
        public static void Main(string[] args)
        {
            Ciclista ciclista = new Ciclista();
            Futbolista futbolista = new Futbolista();
            Maratonista maratonista = new Maratonista();

            ciclista.jugar();
            ciclista.descender();
            futbolista.jugar();
            futbolista.patear();
            maratonista.jugar();
            maratonista.correr();

            Deportista deportista1 = new Ciclista();
            Deportista deportista2 = new Futbolista();
            Deportista deportista3 = new Maratonista();

            deportista1.jugar();
            deportista2.jugar();
            deportista3.jugar();

            Console.ReadLine();
        }
    }
}

Para una explicaicón más detallada del ejemplo; a continuación les dejo con un video que explica lo anteriormente mencionado.




INFORMACIÓN SOBRE EL AUTOR DEL ARTÍCULO
KEVIN ARNOLD ARIAS FIGUEROA (SOFTWARE ARCHITECT - CODIDEEP E.I.R.L.): Profesional en tecnologías de la información con más de 10 años de experiencia en desarrollo de software empresarial, con amplios conocimientos en manejo de arquitecturas de software de escala vertical y horizontal, gestión de proyectos, liderazgo de equipos y dominio en modelado de procesos a gran escala.


  • Debes estar logueado para realizar comentarios