Exercicios

5 respostas
G

Olá a todos usuários da Caelum…

Estou na apostila FJ-11 e estou querendo tirar uma duvida.

“Página 53 - Capitulo 5 - Um pouco de arrays”

5.5 - Exercícios: Arrays

  1. Crie uma classe TestaEmpresa que possuirá um método main. Dentro dele crie algumas instâncias de Funcionario e passe para a empresa pelo método adiciona .Repare que antes você vai precisar criar a array, inicialmente o atributo empregados da classe Empresa não referencia lugar nenhum b.[/b]
Empresa empresa = new Empresa(); // aqui eu entendi é a variavel dao objeto Empresa que eu chameia-a de empresa (OO é fáçil)
empresa.empregados = new Funcionario[10]; //não entendi! como assim,atributo empresa da classe Empresa ? e porque new Funcionario ?
//...

Ou você pode construir a array dentro da própria declaração da classe Empresa, fazendo com que toda vez que uma Empresa é instanciada,a array de Funcionario que ela necessita também é criada.

E agora oque eu não entendi ?

R; hân? como assim ele disse que tinha que atribuir um valor empresa.empregados = new funcionario[10];
mas porque

Ou você pode construir a array dentro da própria…
?

OBS: o metodo adiciona eu já fiz e deu certo !

5 Respostas

Mr.style

Provavelmente na sua Classe Empresa vc tem um atributo chamado empregados e que é um array do tipo funcionário.

Então no seu método adiciona vc está instanciando um array e definindo o tamanho dele (10).

MaYaRa_SaN

Se voce não instanciar o array, informando a quantidade maxima que ele pode guardar, você nao consegue trabalhar com ele pois tua referencia está nula.

se quiser deixar dinamico, voce pode solicitar ao usuario a quantidade de funcionarios e passar essa informação no construtor da classe empresa… la no contrutor voce inicializa o array de funcionarios dessa forma:

empregados = new funcionario[qtdFunc];

G

Bem eu não entendi muito bem eu acho que se vcs verem o código acho que será mais façil explicar

class Empresa {
	String nome;
	String cnpj;
	Funcionario[] empregados;
	static int controlador = 0;
	
	// Método Adiciona
    void adiciona(Funcionario nome) {   
        this.empregados[controlador] = nome;   
        controlador ++;  
    }     
    
    // Método Mostra os Empregados na empresa
    void mostraEmpregados() {
    	for(int i = 0; i < this.empregados.length; i++) {
    		System.out.println("Funcionario na posição: "  + i);
    		System.out.println("Funcionario na posição: "  + i);
    		System.out.println("Funcionario na posição: "  + i);
    		System.out.println("Funcionario na posição: "  + i);
    	}
    }
        
      
}


class Funcionario {
	String nome;
	String departamento;
	String dataEntrada;
	String dataDeEntrada;
	String rg;
	double salario;
	boolean demitido = false; 

	//Mostra Todos os Dados do Funcionario
	void mostra() {
		System.out.println("   ------------------------------------   ");
		System.out.println("~* Google Officer Departament Contrater *~");
		System.out.println("   ------------------------------------   ");
		System.out.println("");
		System.out.println("Nome: " +this.nome);
		System.out.println("Departamento: " +this.departamento);
		System.out.println("Data de Entrada: " +this.dataEntrada);
		System.out.println("RG: " +this.rg);
		System.out.println("Salário: " +this.salario);
		System.out.println("Demitido?: " +this.demitido);

	}
	
	//Bonifica o Funcionario
	void bonifica(double aumento) {
		double bonificacao = this.salario + aumento;
		this.salario = bonificacao;	
	}
	
	//Demite o Funcionario
	void demitir() {
		this.demitido = true;
	}
	
	//Contratar o Funcionario
	void Contratar() {
		this.demitido = false;
	}
	
}
class IniciandoPrograma {
	public static void main(String[] args) {
		Empresa empresa = new Empresa(); // variavel do Objeto 'Empresa' será 'empresa' 
		empresa.empregados = new Funcionario[10]; //atributo 'empregados' da classe 'Empresa'
		
		//Cria Funcionario 1 ~ 'F1'
		Funcionario F1 = new Funcionario();	
		F1.salario = 1000;
		empresa.adiciona(F1);
		
		//Cria Funcionario 2 ~ 'F2'
		Funcionario F2 = new Funcionario();
		F2.salario = 2000;
		empresa.adiciona(F2);
		
		//mostra os empregados
		empresa.mostraEmpregados();
	}
}
MaYaRa_SaN

esta funcionando porque voce inicia o array no programa principal… o ideal é colocar a linha:

empresa.empregados = new Funcionario[10]; //atributo 'empregados' da classe 'Empresa'

no construtor da classe empresa para evitar esquecimento e ganhar um nullPointer de presente.

:wink:

G

@MaYaRa_SaN

Obrigado esclareceu minha duvida

@all

e obrigado a todos que me ajudaram ^^ :slight_smile:

Criado 23 de dezembro de 2011
Ultima resposta 23 de dez. de 2011
Respostas 5
Participantes 3