2
respostas

Dúvida a respeito de herança

Essa classe está modelada corretamente? Desconsiderando o uso de setters e property

'''Considere uma entidade Funcionário, que possui nome, data de admissão e salário. Implemente sua classe, definindo também alguns métodos para manipulação dos atributos.
Em seguida, considere a entidade Gerente, que também é um funcionário. Além dos atributos de funcionário, um gerente também contém um bônus, que é uma porcentagem adicional aplicada no seu salário.
Implemente a classe Gerente como uma extensão de Funcionário.'''


class Funcionario:
    def __init__(self, nome, salario, data_admissao):
        self.nome = nome
        self.salario = salario
        self.data_admissao = data_admissao

    def getnome(self):
        return self.nome

    def getsalario(self):
        return self.salario

    def getdata(self):
        return self.data_admissao

    def setnome(self, nome):
        self.nome = nome

    def setsalario(self, salario):
        self.salario = salario

    def horas_extras(self, horas):
        return (self.salario * 0.02) * horas

    def __repr__(self):
        return f'O funcionário {self.nome} recebe R$ {self.salario}.'

class Gerente(Funcionario):
    def __init__(self, nome, salario, data_admissao):
        super().__init__(nome, salario*1.05, data_admissao)

gerente = Gerente("marcos", 100, "1")
print(gerente)
2 respostas

Está modelada corretamente sim

O correto não seria criar um método específico para Gerente? pois dessa forma feita por você foi criado um cálculo dentro do atributo. Fiz assim:

class Gerente(Funcionario):
def __init__(self, nome, salario, data_admissao):
    super().__init__(nome, salario, data_admissao)

def salarioGerente(self):
    self.salario *= 1.05

gerente = Gerente("marcos", 100, "1")
gerente.salarioGerente()
print(gerente)