Construindo Aplicações C# – Polimorfismo

Sharing is caring!

O polimorfismo é um dos princípios fundamentais da programação orientada a objetos e é uma técnica que permite que um objeto se comporte de diferentes maneiras em diferentes contextos. Em C#, o polimorfismo pode ser alcançado através do uso de herança e interfaces.

A herança é um mecanismo em que uma classe pode herdar os atributos e métodos de outra classe. Uma classe que herda de outra é chamada de classe derivada ou subclasse, e a classe da qual ela herda é chamada de classe base ou superclasse. O polimorfismo de subtipos pode ser alcançado através da herança.

A interface, por outro lado, é um contrato que define um conjunto de métodos e propriedades que uma classe deve implementar. Uma classe que implementa uma interface é obrigada a fornecer implementações para todos os métodos e propriedades definidos na interface. O polimorfismo de interface pode ser alcançado através do uso de interfaces.

A seguir, vamos ver exemplos de como o polimorfismo pode ser alcançado em C# através de herança e interfaces.

Exemplo de polimorfismo de subtipos usando herança:

using System;

public class Animal
{
    public virtual void FazSom()
    {
        Console.WriteLine("O animal faz um som");
    }
}

public class Cachorro : Animal
{
    public override void FazSom()
    {
        Console.WriteLine("O cachorro late");
    }
}

public class Gato : Animal
{
    public override void FazSom()
    {
        Console.WriteLine("O gato mia");
    }
}

public class Program
{
    public static void Main()
    {
        Animal[] animais = new Animal[3];
        animais [0] = new Animal();
        animais [1] = new Cachorro();
        animais [2] = new Gato();

        foreach (Animal animal in animals)
        {
            animal.FazSom();
        }
    }
}

Neste exemplo, temos uma classe base Animal que define um método virtual FazSom(). As classes derivadas Cachorroe Gato substituem o método FazSom() da classe base e fornecem suas próprias implementações.

Na classe Program, criamos um array de objetos Animal. Os elementos desse array podem ser objetos da classe Animal, Cachorroou Gato. Ao chamar o método FazSom() em cada objeto, a implementação apropriada é chamada de acordo com o tipo de objeto.

Exemplo de polimorfismo de interface usando interfaces:

using System;

public interface IFormato
{
    void Desenhar();
}

public class Circulo: IFormato
{
    public void Desenhar()
    {
        Console.WriteLine("Desenhando um círculo");
    }
}

public class Retangulo: IFormato
{
    public void Desenhar()
    {
        Console.WriteLine("Desenhando um retângulo");
    }
}

public class Program
{
    public static void Main()
    {
        IFormato[] formatos = new IFormato[2];
        formatos[0] = new Circulo();
        formatos[1] = new Retangulo();

        foreach (IFormato formato in formatos )
        {
            formato.Desenhar();
        }
    }
}

Neste exemplo, temos uma interface IShape que define um método Draw(). As classes Circle e Rectangle implementam a interface IShape e fornecem suas próprias implementações do método Draw().

Na classe Program, criamos um array de objetos IFormatos. Os elementos desse array podem ser objetos das classes Circuloou Retangulo. Ao chamar o método Desenhar() em cada objeto, a implementação apropriada é chamada de acordo com o tipo de objeto.

O polimorfismo de interface é útil em situações em que uma classe pode implementar várias interfaces e, portanto, ter vários comportamentos diferentes. Isso permite que as classes sejam mais flexíveis e reutilizáveis em diferentes contextos.

Conclusão:

O polimorfismo é uma técnica poderosa na programação orientada a objetos que permite que um objeto se comporte de diferentes maneiras em diferentes contextos. Em C#, o polimorfismo pode ser alcançado através do uso de herança e interfaces. O polimorfismo de subtipos usa a herança para permitir que as classes derivadas substituam métodos da classe base, enquanto o polimorfismo de interface usa interfaces para permitir que as classes implementem vários comportamentos diferentes. O polimorfismo é uma parte fundamental da programação orientada a objetos e é uma técnica importante para escrever código flexível e reutilizável.

Wagner Salvi

Trabalho há mais de 20 anos com Desenvolvimento de Sistemas, incluindo ERP’s (Enterprise Resource Planning). Atualmente atuo como Gerente de Produtos coordenando a equipe de desenvolvimento em implementações de novas funcionalidades e tecnologias. Neste momento estudando sobre novas tecnologias iOT usando RaspBerry, desenvolvimento para plataformas móveis, como Android.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.