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

[Dúvida] Uso de herança e Interface

Olá, estou com uma dúvida quanto ao uso de herança e interface no desenvolvimento utilizando POO.
Minha dúvida é a seguinte, uma das intenções de usar Herança e Interface seria o reaproveitamento de código, porém usando como base o nosso exemplo das aulas o programa screen-match, reparo que na classe pai (abstrata) ou na Interface criamos um método abstrato e nas classes que herdam a classe pai ou na interface é preciso estar implementando esses métodos abstratos em cada classe que herdar da classe pai.
Resumindo eu tenho que criar um método na classe pai, recriar o método nas classes filhos e pode ate ser que cada classe filho tenha a sua própria implementação do método como é feito na classe Filme e na classe Serie que cada uma tem seu próprio calculo dentro do método "duracaoEmMinutos()", não seria mais fácil só criar dentro de cada classe Filme e Serie um método para "duracaoEmMinutos()" ? pra mim parece ser menos escrita de código do que usar a herança.

1 resposta
solução!

Olá Patrick! Tudo certo?

A herança é utilizada quando você tem uma relação "é um" entre classes. Por exemplo, uma Serie é um Titulo, assim como um Filme também é um Titulo. Isso significa que ambos compartilham características comuns, que podem ser definidas na classe pai Titulo. No entanto, cada um pode ter sua própria implementação de métodos, como duracaoEmMinutos(), que faz sentido ser diferente para Serie e Filme.

Por outro lado, interfaces são usadas para definir um "contrato" que as classes devem seguir, sem se preocupar com a implementação. Isso é útil quando você quer garantir que diferentes classes tenham certos métodos, mas podem implementá-los de maneiras distintas. No seu caso, a interface Avaliavel garante que qualquer classe que a implemente terá um método media(), por exemplo.

A vantagem de usar herança e interfaces é que você pode estruturar seu código para ser mais modular e fácil de manter. No exemplo do screen-match, mesmo que você precise implementar o método duracaoEmMinutos() em cada classe filha, isso permite que cada classe tenha sua própria lógica específica, enquanto ainda compartilha uma estrutura comum definida na classe pai ou na interface.

Se você criasse o método duracaoEmMinutos() diretamente em cada classe sem herança ou interface, perderia a vantagem de ter um sistema organizado e consistente, onde todas as classes que são um tipo de Titulo ou que são Avaliavel têm garantidamente certos métodos, facilitando a manutenção e evolução do código.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.