====== Polimorfismo ====== Es la propiedad que adquiere un objeto cuando este tiene un comportamiento diferente a otro elemento aunque la acción que estén realizando sea la misma. ===== Ejemplos ===== * **Movimiento de animales**.- Podemos tener diferentes tipos de animales, todos los animales pueden moverse, pero la manera de moverse no será la misma, un perro camina, un pez nada, un pájaro vuela y una serpiente se arrastra, en todos los casos cada animal realiza la misma acción de moverse pero cada animal tiene una manera de hacerlo. * **Llenados de agua**.- En una empresa de agua para beber, se tiene las áreas de llenado, pero el proceso de llenado varia en base al recipiente que será llenado, para llenar un garrafón de agua, se maneja un proceso diferente al que se utiliza para llenar un envase de 1 lt, la acción sigue siendo el llenado de agua pero este cambia por el recipiente que se llenará. * **Pagos electrónicos**.- En una página de venta en linea, se manejan diferentes tipos de pagos, se puede pagar con cargo a tarjeta de crédito, por medio de paypal o por deposito referenciado, la acción sigue siendo el pago, pero este cambia en base al tipo de pago que se realizará. ==== Aplicación en CSharp ==== En el siguiente ejemplo veremos como un el cálculo del área de una figura geométrica varia dependiendo del tipo de figura que es. using System; namespace Capacitacion.Polimorfismo { public abstract class Figura { public decimal Base { get; set; } public decimal Altura { get; set; } public abstract decimal CalcularArea(); } public class Triangulo : Figura { public override decimal CalcularArea() { return (Base * Altura) / 2m; } } public class Rectangulo : Figura { public override decimal CalcularArea() { return Base * Altura; } } public class Program { public static void Main(string[] args) { Figura figura = new Rectangulo() { Altura = 4, Base = 3 }; Console.WriteLine($"El área del rectangulo es {figura.CalcularArea()}"); figura = new Triangulo() { Altura = 4, Base = 3 }; Console.WriteLine($"El área del triangulo es {figura.CalcularArea()}"); Console.ReadKey(); } } }