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

Página 62

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.

Now answer the exercise about the content:

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

You are right! Congratulations, now go to the next page

You missed! Try again.

Next page of the Free Ebook:

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

Earn your Certificate for this Course for Free! by downloading the Cursa app and reading the ebook there. Available on Google Play or App Store!

Get it on Google Play Get it on App Store

+ 6.5 million
students

Free and Valid
Certificate with QR Code

48 thousand free
exercises

4.8/5 rating in
app stores

Free courses in
video, audio and text