Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Duvidas sobre um Exemplo no tópico teórico de Herança, reescrita e polimorfismo.

No tópico teórico, há alguns exemplos utilizando a classe Funcionario dentro dos parenteses de um método.

Ele está instanciando a classe Funcionário? Se está, porque não está utilizando o Funcionario funcionario = new Funcionario? Se não está, o que isso está fazendo?

Ex: (Funcionario funcionario)

class ControleDeBonificacoes { private double totalDeBonificacoes = 0;

public void registra(Funcionario funcionario) { this.totalDeBonificacoes += funcionario.getBonificacao(); }

public double getTotalDeBonificacoes() { return this.totalDeBonificacoes; } }

4 respostas

Boa tarde, Rogério! Tudo bem? =)

Respondendo sua pergunta, não, não está sendo instanciado um Funcionario...

Quando você escreveu o seguinte código, você estava declarando quais são os parâmetros necessários para que o método funcione, observe:

class ControleDeBonificacoes {
    private double totalDeBonificacoes = 0;

    public void registra(Funcionario funcionario) {
        this.totalDeBonificacoes += funcionario.getBonificacao();
    }

    // Restante do código...
}

O que a classe ControleDeBonificacoes faz? Bom... Ela controla as bonificações... Repare que ela possui um atributo totalDeBonificacoes, que, como o próprio nome sugere, representa o total de bonificações...

Mas como cada bonificação está atrelada à um Funcionario, para registrar uma nova bonificação é necessário um Funcionario! Então, o que estamos fazendo nesse caso, é simplesmente dizendo que esse método precisa de um Funcionario para funcionar... Quando formos utilizá-lo, devemos lembrar de instanciar um Funcionario antes e depois passar para o método. =)

Sacou? Rs...

Espero ter ajudado, mas qualquer dúvida não deixe de postar por aqui no fórum para podermos ajudá-lo!

Abraço e bons estudos,

Fábio

Saquei!!

Mas tenho outra dúvida:

Foi utilizado o método funcionario.getBonificação();

Se não foi instanciado, como ele consegue utilizar esse método? Quando é passado a classe Funcionario no parâmetro, ele permite utilizar as variáveis e métodos?

solução!

Rogério,

Então... Vamos colocar um código de teste aqui que talvez fique mais fácil de entender essa parte. =)

Como você mesmo comentou, o método faz uso do funcionario.getBonificacao(). Mas como esse método não é estático, precisamos de uma instancia dele para podermos chamar esse getBonificacao(). Sua dúvida me parece bem justa aqui. =)

Agora... Vamos supor que queremos executar esse código e cadastrar uma nova bonificação... Faríamos algo assim:

public static void main(String[] args) {
    ControleDeBonificacoes controle = new ControleDeBonificacoes();
    controle.registra(funcionario);
}

Legal, mas se escrevermos esse código, teremos um erro de compilação, pois o código não saber quem é esse funcionario que estamos passando. Então precisamos de uma instância de funcionário... Assim:

public static void main(String[] args) {
    ControleDeBonificacoes controle = new ControleDeBonificacoes();
    Funcionario funcionario = new Funcionario();
    controle.registra(funcionario);

Agora, sim! Repare... Criamos o funcionário e passamos para o método. Ele precisa de uma instância de Funcionario, mas não criamos dentro do método, entendeu? =)

Não se esqueça que precisamos que um funcionário tenha o método getBonificacao e tudo mais... Aí funciona!!

E aí... Sobrou alguma dúvida? =)

Abraço e bons estudos,

Fábio

Hmmm...

Que maravilha isso heim!!

Obrigado pela ajuda, abraços!!