Sobes.tech
Junior

Quais aspectos da programação orientada a objetos estão presentes na linguagem Dart?

sobes.tech IA

Resposta da IA

No Dart, existem os seguintes aspetos de POO:

  • Classes e objetos: A capacidade de definir classes com campos e métodos, criar instâncias de classes (objetos).
  • Encapsulamento: Esconder detalhes de implementação através de modificadores de acesso (_ para membros privados) e métodos getters/setters.
  • Herança: Estender a funcionalidade de classes existentes usando a palavra-chave extends.
  • Polimorfismo: A capacidade de tratar objetos de diferentes classes de forma uniforme através de uma interface comum ou classe base.
  • Abstração: Criar classes abstratas e interfaces para definir contratos.

Exemplo de uma classe em Dart:

class Animal {
  String _name; // Campo privado

  Animal(this._name); // Construtor

  String get name => _name; // Getter

  void makeSound() {
    print('Algum som genérico de animal'); // Método
  }
}

Exemplo de herança:

class Dog extends Animal {
  Dog(String name) : super(name); // Chamada ao construtor da classe base

  @override // Sobrescrever método da classe base
  void makeSound() {
    print('Au au!');
  }
}

Exemplo de polimorfismo:

void makeAnimalSound(Animal animal) {
  animal.makeSound(); // Chamada ao método makeSound(), que pode ser diferente para diferentes tipos de Animal
}

// Uso:
// makeAnimalSound(Dog('Buddy')); // Vai imprimir "Au au!"

Dart também suporta mixins usando a palavra-chave with, o que permite reutilizar código de classes sem herança direta.