1
resposta

Alteração simultânea em classes derivadas

Olá, Caso quiséssemos promover por exemplo, um aumento simultâneo de 10% no salário de todos os funcionários, qual seria a melhor maneira de fazer? Considerando que a classe Funcionário é abstrata, uma mudança deste tipo e que replicasse nas demais classes derivadas, poderia ser executada somente dentro da classe mãe, como por exemplo colocando um fator de multiplicação dentro do construtor?

public Funcionario(double salario, string cpf) { Console.WriteLine("Criando FUNCIONARIO");

        CPF = cpf;
        Salario = salario*1.1;

        TotalDeFuncionarios++;
    }
1 resposta

Olá Tiago, como vai?

Acredito que a melhor solução para este caso seria criar um novo método na classe Funcionario. Uma das vantagens de se utilizar uma classe abstrata é que nossos métodos podem conter um "corpo".

Fiz a criação deste método, veja:

public void AumentarSalarioDez()
        {
            Salario *= 1.1;
        }

Não fiz nenhuma alteração no código já existente, apenas adicionei.

Para testar, só chamei o novo método no Main, não precisamos chama-lo em nenhuma classe, já que temos herança fazendo as distribuições. Veja o código:

static void Main(string[] args)
        {
            Diretor diretor = new Diretor("123456789");

            Console.WriteLine(diretor.Salario);

            diretor.AumentarSalarioDez();

            Console.WriteLine(diretor.Salario);

            Console.ReadLine(); 
        }

Faça o teste e me diga o que acha desta solução. Se tiver alguma dúvida, fique tranquilo para perguntar, vou estar por aqui.

Abraços e bons estudos!