1
resposta

[Dúvida] Duvida sobre responsabilidade unica

Boa noite, tenho uma pequena duvida sobre responsabilidade unica de uma classe

imaginemos que, se eu criar uma classe Professor, eu estarei colocando dados de valor por hora, nome, cadastro, etc.

agora, dentro de classe Professor, eu coloco uma função calcula_valores(quantidade_de_horas), onde eu entraria com uma lista de horas que foram dadas num mês para calcular, com base em seus valores

isso, de acordo com o principio de responsabilidade, seria adequado?

1 resposta

Isso vai contra o SOLID

o correto deveria ser:

Primeiro caminho

  • Criar uma classe Professor
  • Criar uma classe de CalculadoraHoras
  • Salvar as horas do professor em um atributo
  • Ter um método em CalculadoraHoras que recebe o objeto Professor como paramêtro e dentro dele, via injeção de dependência, obter as horas do atributo de horas da classe Professor e realizar o calculo no método da classe CalculadoraHoras

Ou

Segundo caminho

você também pode fazer composição(usar uma classe dentro da outra) e chamar o método de calculo da classe CalculadoraHoras dentro de um atributo da classe Professor(o método poderá ser estático, sem ser necessário instanciar ele)

Ex:

class Professor():
    def __init__(self, nome, horas):
        self.nome = nome
        self.horas = horas
        self.horascalculadas = CalculadoraHoras.calcula(horas)

class CalculadoraHoras():
    @staticmethod
    def calcula(horas):
        #Sua lógica de calculo 

Particularmente, prefiro o segundo caminho. Fica mais prático.

Recomendor ler sobre injeção de dependência, é um conceito muito interessante.

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