Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Qual a vantagem de usar o ISet para a variável do conjunto?

Olá, sei que a pergunta é parecida com a que o outro colega já fez. Mas minha dúvida mais especificamente é por que vale a pena usar uma variável que é de uma interface?

Até onde eu tinha entendido, as interfaces são úteis como um contrato de métodos que precisamos implementar em mais de uma classe que não tem relação de herança entre si.

Mas fiquei meio perdido quando o professor aplicou polimorfismo e usou uma variável de interface como referência para o objeto de Conjunto que ele estava trabalhando. Qual a vantagem de fazer isto? E também, por que isto é possível?

Me refiro aqui ao trecho que ele instacia o conjunto assim:

private ISet<Aluno> alunos = new HashSet<Aluno>();
1 resposta
solução!

Olá, Dyonata, como vai?

Sentimos muito pela demora em retornar.

Dessa forma, podemos dizer que deixamos o código "mais aberto". Diminuímos o acoplamento com a utilização de uma Interface, que é justamente uma das vantagens de tê-la em nosso código. Vou listar alguns dos benefícios que temos no código mencionado:

  • Manutibilidade - alterações ficam mais isoladas, não precisa mudar tudo que aceitava uma classe concreta para aceitar outra necessária. Certos detalhes deixam de ser importantes e é possível mudar a implementação sem quebrar a aplicação.
  • Extensibilidade - Permite que novas implementações sejam feitas sem alterar tudo que esperava determinado objeto, então certos comportamentos se tornam mais genéricos podendo manipular objetos que ele desconhece desde que contenha o contrato esperado.
  • Testabilidade - é fácil substituir um objeto real de produção por um falso que facilite o teste.

Se fossemos mudar o código, por exemplo, para SortedSet, mudaríamos apenas o final do código, algo como:

private ISet<Aluno> alunos = new SortedSet<Aluno>();

Espero ter ajudado.

Abraços