Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Herança em Dart: Desafios e Limitações para o Reaproveitamento de Código

Pessoal, aqui vai apenas uma opinião.

A ideia da herança é permitir o reaproveitamento de código, tornando o programador mais produtivo. Entretanto, ao utilizar herança no Dart, isso nem sempre é possível. Ao declarar novamente os atributos da classe pai na classe filha, perdemos o reaproveitamento de código. Seria mais produtivo se fosse feito como no Java, onde na classe filha apenas declaramos os atributos exclusivos dessa classe.

Fiquei desapontado com essa parte, já que o Dart é uma linguagem nova e falha em algo que já é positivo em linguagens mais antigas. Isso indica que não houve evolução nessa área. Se eu estiver enganado, por favor, mostrem-me uma maneira mais produtiva de usar herança em Dart. Como sou iniciante, pode haver uma forma que desconheço. Estou aqui para aprender.

Obrigado, pessoal!

6 respostas

Olá Maykon, tudo bem?

Compreendo sua opinião sobre a herança em Dart e concordo que a reutilização de código é um dos principais objetivos dessa técnica. No entanto, em Dart, a herança pode ser utilizada de forma produtiva, mesmo que seja diferente do que estamos acostumados em outras linguagens de programação.

Uma alternativa para evitar a declaração repetida de atributos na classe filha é utilizar o construtor da classe pai na classe filha, passando os parâmetros necessários. Dessa forma, você pode criar os atributos exclusivos da classe filha sem perder o reaproveitamento de código.

Por exemplo:

class Pessoa {
  String nome;
  int idade;

  Pessoa(this.nome, this.idade);
}

class Funcionario extends Pessoa {
  double salario;

  Funcionario(String nome, int idade, this.salario) : super(nome, idade);
}

Nesse exemplo, a classe Funcionario herda da classe Pessoa e utiliza o construtor da classe pai para inicializar os atributos nome e idade. Além disso, a classe Funcionario possui o atributo exclusivo salario.

Espero ter ajudado a encontrar uma maneira mais produtiva de utilizar herança em Dart. Qualquer dúvida, estou à disposição.

Espero ter ajudado e bons estudos!

Obrigado por responder. Pois é, é exatamente por eu ter que escrever essa parte abaixo que faz com que o Dart se torne improdutivo pra mim.

Funcionario(String nome, int idade, this.salario) : super(nome, idade);

Para ser produtivo, não deveria ter essa linha no código. Porque eu estou replicando atributos.

solução!

Mas no Java você também precisa fazer isso, acho que isso é meio que padrão, não ?

Talvez no projeoto que tu esteja usando em java, não tenha obrigatoriedade de mandar os parametros via construtor e por esse motivo não ocorre problema ou até mesmo a galera utiliza construtor vazio (que geralmente é utilizado para fins de libs, como hibernate)

No Dart tem essa opção de construtor vazio, sem precisar ficar referenciando os atributos?

Olhando na documentação, não há nada que fale isso https://dart.dev/language/constructors...

Acredito que tu só vá conseguir fazer algo do genero usando valores default, assim tu não vai precisar passar nada

Certo, obrigado por compartilhar!