1
resposta

[Dúvida] Uma classe pode implementar quantas classes abstratas?

Na última lição tem uma tarefa para fazer 1 classe abstrata e implementar 3 métodos aplicando os conhecimentos aprendidos nas aulas anteriores. Pois bem, minha dúvida é: A classe FRUTA implementou a classe ABSTRATA BOLO. A Classe FRUTA poderia implementar outra classe ABSTRATA? POR EX: class Fruta extends Alimento implements Bolo,Doce{

Como seria a forma mais fácil de usar várias classes abstratas em uma única classe? Isso seria uma boa prática de programação?

1 resposta

Oii Antonio, tudo bem?

Em Dart, uma classe pode sim implementar várias classes abstratas. Mas, é importante lembrar que, ao fazer isso, a classe deve fornecer uma implementação para todos os métodos definidos nas classes abstratas que está implementando.

Um exemplo, se tivermos duas classes abstratas, Bolo e Doce, ambas com métodos distintos, a classe Fruta teria que implementar todos esses métodos.

abstract class Bolo {
  void fazerBolo();
}

abstract class Doce {
  void fazerDoce();
}

class Fruta implements Bolo, Doce {
  @override
  void fazerBolo() {
    // implementação do método fazerBolo
  }

  @override
  void fazerDoce() {
    // implementação do método fazerDoce
  }
}

Mas, quanto à questão de ser uma boa prática de programação, isso pode depender do contexto. Em geral, é preferível que uma classe tenha uma única responsabilidade (Princípio da Responsabilidade Única - SRP). Então, se a classe Fruta está implementando Bolo e Doce, isso pode indicar que ela está fazendo muitas coisas, o que pode tornar o código mais difícil de manter e entender.

Uma alternativa seria dividir a funcionalidade entre várias classes, cada uma implementando uma classe abstrata diferente. Mas, novamente, isso depende do contexto e do que faz sentido para o seu projeto.

Espero ter ajudado.

Um abraço e bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software