Imagem do artigo Introdução à programação orientada a objetos em Dart: Polimorfismo

5.6. Introdução à programação orientada a objetos em Dart: Polimorfismo

Página 62 | Ouça em áudio

A programação orientada a objetos (POO) é um paradigma de programação que usa "objetos" e suas interações para projetar aplicativos e programas de software. Dart, a linguagem de programação por trás do Flutter, é uma linguagem orientada a objetos que suporta conceitos como classes, objetos, herança e polimorfismo. Nesta seção, iremos explorar o conceito de polimorfismo em Dart.

Polimorfismo

Polimorfismo é um conceito fundamental na programação orientada a objetos. Ele permite que objetos de diferentes tipos sejam tratados como objetos de um tipo comum. O termo "polimorfismo" vem das palavras gregas "polys", que significa "muitos", e "morphē", que significa "forma". Portanto, polimorfismo significa a capacidade de assumir várias formas.

Em Dart, o polimorfismo é implementado usando classes abstratas, interfaces e herança. Uma classe abstrata é uma classe que não pode ser instanciada diretamente. Em vez disso, ela é usada como uma classe base para outras classes. Uma interface, por outro lado, é um contrato que especifica o que uma classe deve fazer, mas não como ela deve fazer. Uma classe que implementa uma interface deve fornecer uma implementação para todos os métodos definidos na interface.

Polimorfismo em Dart

Em Dart, podemos ter polimorfismo de duas formas: polimorfismo de tempo de compilação e polimorfismo de tempo de execução. O polimorfismo de tempo de compilação, também conhecido como sobrecarga de método, ocorre quando temos dois ou mais métodos com o mesmo nome, mas com diferentes listas de parâmetros. Dart não suporta sobrecarga de método, então só temos polimorfismo de tempo de execução em Dart.

O polimorfismo de tempo de execução, também conhecido como substituição de método, ocorre quando uma classe filha fornece uma implementação diferente para um método que já está fornecido por sua classe pai. Em Dart, usamos a palavra-chave 'override' para indicar que estamos substituindo um método.

Exemplo de Polimorfismo em Dart

Considere um exemplo simples onde temos uma classe abstrata 'Animal' com um método 'eat'. Temos duas classes, 'Dog' e 'Cat', que estendem a classe 'Animal' e fornecem suas próprias implementações para o método 'eat'.

abstract class Animal {
  void eat();
}

class Dog extends Animal {
  @override
  void eat() {
    print('O cachorro está comendo');
  }
}

class Cat extends Animal {
  @override
  void eat() {
    print('O gato está comendo');
  }
}

Agora, podemos criar objetos de 'Dog' e 'Cat' e tratá-los como 'Animal'. Isso é polimorfismo. Podemos chamar o método 'eat' em um objeto 'Animal', e a implementação correta do método será chamada com base no tipo real do objeto.

void main() {
  Animal dog = Dog();
  Animal cat = Cat();

  dog.eat();  // prints 'O cachorro está comendo'
  cat.eat();  // prints 'O gato está comendo'
}

Em resumo, o polimorfismo permite que tratemos objetos de diferentes tipos de forma uniforme. Ele aumenta a flexibilidade e a modularidade do nosso código, tornando-o mais reutilizável e fácil de manter.

Agora responda o exercício sobre o conteúdo:

O que é polimorfismo na programação orientada a objetos e como ele é implementado em Dart?

Você acertou! Parabéns, agora siga para a próxima página

Você errou! Tente novamente.

Imagem do artigo Introdução à programação orientada a objetos em Dart: Interfaces

Próxima página do Ebook Gratuito:

63Introdução à programação orientada a objetos em Dart: Interfaces

3 minutos

Ganhe seu Certificado deste Curso Gratuitamente! ao baixar o aplicativo Cursa e ler o ebook por lá. Disponível na Google Play ou App Store!

Disponível no Google Play Disponível no App Store

+ de 6,5 milhões
de alunos

Certificado Gratuito e
Válido em todo o Brasil

48 mil exercícios
gratuitos

4,8/5 classificação
nas lojas de apps

Cursos gratuitos em
vídeo, áudio e texto