2
respostas

duvida Polimorfismo

A minha duvida é a seguinte:

  • Se em cada classe já foi definido um método para gerar relatório
class RelatorioUsuarios(Relatorio):
    def gera_relatorio(self):
        print('Relatório dos usuários')
class RelatorioCustos(Relatorio):
    def gera_relatorio(self):
        print('Relatório de custos')
  • Qual o sentido de criar uma classe mãe com o método gerar relatório?
class Relatorio:
    def gera_relatorio(self):
        print('Relatório geral')
  • Eu sei que ter uma classe mãe faz com que seja possivel dar um "for" em uma lista, por ela ser feita de itens do mesmo "tipo" , mas qual o intuito de ter um método gerar relatório especifico na classe mãe?
2 respostas

A ideia de ter um método na classe mãe (ou classe base) é criar uma estrutura comum para todas as classes filhas (ou classes derivadas). Isso é conhecido como polimorfismo, um dos princípios fundamentais da programação orientada a objetos.

Ao definir um método na classe mãe, você está estabelecendo uma interface comum que todas as classes filhas devem seguir. Isso permite que você trate objetos de classes diferentes de maneira uniforme. No seu exemplo, todas as classes derivadas de Relatorio têm um método chamado gera_relatorio.

O benefício disso é que você pode escrever código que opera em objetos do tipo Relatorio, sem se preocupar com a implementação específica de cada classe derivada. Isso promove a reutilização de código e facilita a manutenção, já que você pode adicionar novas classes derivadas sem alterar o código que as utiliza.

No entanto, é importante observar que o método na classe mãe pode ter uma implementação padrão genérica que pode ser substituída ou estendida pelas classes filhas. No seu exemplo:

class Relatorio:
    def gera_relatorio(self):
        print('Relatório geral')

As classes filhas podem optar por usar essa implementação padrão ou substituí-la com sua própria implementação específica. Isso dá flexibilidade ao projeto.

Em resumo, o objetivo de ter um método na classe mãe é estabelecer uma interface comum para todas as classes filhas, promovendo o polimorfismo e facilitando a manutenção e extensibilidade do código.

Caso tenha conseguido esclarecer suas dúvidas, fico feliz em ter ajudado. Estou à disposição para qualquer outra questão que possa surgir. Um abraço! Se este post foi útil, por favor, marque como solucionado ✓. Desejo a você excelentes estudos!