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

Exercício 2 - Aula 04

Olá pessoal! Não entendi o seguinte trecho de código do Exercício 2 da Aula 04:

class Empresa {
    String nome;
    String cnpj;
    Funcionario[] funcionarios;
    int livre = 0;

    void guardaFuncionario(Funcionario f) {
        this.funcionarios[this.livre] = f;
        this.livre++;
    }
}

Seguinte, ao meu ver, estou criando uma classe Empresa que tem alguns atributos, entre eles, um array de Funcionario (que está referenciando à minha classe chamada Funcionario que tem como atributo, nome, rg, etc.) e uma variável chamada livre (que será o contador de posições do meu array).

Já no método guardaFuncionario(), estou recebendo um parâmetro do tipo Funcionario e a variável que irá armazenar o valor passado para o método tem como nome a letra "f".

Até ai, maravilha (pelo menos acho que entendi), porém, não entendi esse pequeno trecho: this.funcionarios[this.livre] = f;

Porque o "this.livre" está entre colchetes? E o que esse trecho está fazendo?

Após isso, sei que a variável chamada "livre" será acumulada de um em um.

2 respostas
solução!

Olá Glenderson! Este trecho this.funcionarios[this.livre] = f; diz o seguinte. Você está se referindo ao atributo funcionários do objeto de sua classe Empresa. Isso explica o primeiro this, o this.funcionarios, ok?

Agora esse atributo funcionários é um array, e como eu acesso uma posição de um array? Passando a posição que quero acessar. É justamente o que significa o trecho [this.livre]. Está entre colchetes pois está referenciando um array e o this.livre é justamente a posição que estou acessando, começando com a primeira posição, já que na declaração atribui 0 a ele: int livre = 0;. O this aqui é para dizer que você está se referindo ao atributo livre do objeto de sua classe Empresa.

E, com essa posição em mãos, você atribui a ela o Funcionario f que veio no parâmetro do método guardaFuncionario().

Na próxima vez que chamar o método guardaFuncionario() o atributo livre já estará valendo 1 e o próximo funcionário será guardado na segunda posição do array.

Entendeu? Na dúvida, pergunte!

Abraços e sucesso nos estudos!

André, entendi perfeitamente!

Muito obrigado pela explicação.

Abraços!