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

Acessar atributo de um objeto que é um atributo de outro

Boa noite, pessoal. Estou com uma dúvida referente ao atributo de um objeto, e este objeto é um atributo de outro.

Ex.: classe Empresa possui um atributo do tipo Funcionario[], que por sua vez possui o atributo nomeDoFuncionario.

Considerando que o nomeDoFuncionario seja private, e o próprio atributo Funcionario[] da classe Empresa também, como acesso o atributo nomeDoFuncionario a partir de um objeto do tipo Empresa?

Obrigado desde já, pessoal. Espero que tenham entendido a minha dúvida.

Abraço!

4 respostas
solução!
public class Empresa {

    //Tu inicia esse array como vc quiser
    //mas eu usaria um arrayList aqui.
    //Essa variavel ficaria melhor se vc achamasse 
    // ela de funcionarios.
    private String [] funcionario;

    //Pegar o usuario pelo nome
    public Funcionario  getFuncionarioByName( String name){

         for (int i = 0; i < this.funcionario.length; i++){
            if( funcionario[i].getName.equals(name)){
               return funcionario[i];
            }
         }
         return null;
    }
}

So corrigindo o comentario acima

    //Tu inicia esse array como vc quiser,
    //mas eu usaria um arrayList aqui.
    //Essa variavel ficaria melhor se vc 
    // a chamasse de funcionarios.

Olá Reynaldo,

Da classe Empresa você não consegue acessar o nomeDoFuncionario porque, como você mesmo falou, esse atributo é private. Atributos e métodos private só podem ser acessados dentro da própria classe, então é necessário criar um método public que retorne o valor do atributo nomeDoFuncionario.

Por Exemplo:

//Método dentro da classe Funcionario
public String getNomeDoFuncionario(){
  return this.nomeDoFuncionario;
}

Dessa forma você já consegue acessar esse valor na classe Empresa, assim você conseguirá fazer um método mostraNomeDosFuncionarios.

//Método dentro da classe Empresa
public String mostraNomeDoFuncionario(){
  for(int i = 0; i < funcionarios.length;i++){
    if(funcionarios[i] != null){
      funcionarios[i].getNomeDoFuncionario();
    }
  }
}

Assim você consegue acessar o atributo nomeDoFuncionario da classe Funcionario, dentro da classe Empresa.

Até mais!

P.S.: Como Luiz falou, normalmente se é utilizado ArrayList, ao invés de array, no entanto este é um assunto do curso "Java e suas bibliotecas", logo você não precisa se preocupar com isso neste momento.

Valeu mesmo, pessoal. Não havia pensado em uma lógica criando loops e tudo mais. Pensei que teria uma solução mais "nativa/elegante" do Java. Mesmo assim, resolveram meu problema!

Obs.: Em relação ao nome do Array ser "Funcionario[]", este é o nome da classe Funcionario, indicando ser um Array desta. O nome da atributo da classe Empresa do meu código é "quadroDeFuncionarios". Rs...

Valeu, pessoal! Abraço!

Reynaldo.