CLASSES - Help!

3 respostas
H

mais uma duvida do newba!!!

Na apostila da caelum, ela pede pra criar um sistema para gerenciar os funcionarios do Banco J da seguinte forma:

1) Modele um funcionario. Ele deve ter nome, departamento, salario, data de entrada no banco, seu rg (String), e um valor booleano que indique se ele está na empresa no momento ou se já foi embora.

2) Crie os métodos bonifica, que aumenta o salario do funcionario de acordo com o parametro passado como argumento. Crie também um método demite que não recebe parâmetro algum, só modifica o valor booleano indicando que o funcionário não trabalha mais aqui.

3) Crie um método mostra(), que não recebe nem devolve parâmetro algum, simplesmente imprime todos os atributos do nosso funcionário.


4) Crie a classe chama Data para a data de ingresso no banco. Ela possui 3 campos int para dia, mes e ano. Faça com que seu funcionário passe a usa-la.

minha duvida está no ítem 4, mas nao sei se o problema é por causa dele... criei o seguinte código:
class Data {
	int dia;
	int mes;
	int ano;
	}


class Funcionario {
	
	String nome;
	String depto;
	double salario;
	String dataEntrada;
	String rg;
	String status;
	boolean permanece = true;
	Data data;	

	void bonifica(double valor) {
	this.salario += valor;
	}

	void demite() {
	permanece = false;
	}

	void mostra() {
	System.out.println("Nome:" + this.nome);
	System.out.println("Depto: " + this.depto);
	System.out.println("Salario: " + this.salario);
	System.out.println("Data de Ingresso: ");
	System.out.println("Dia: " + this.data.dia);
	System.out.println("Mes: " + this.data.mes);
	System.out.println("Ano: " + this.data.ano);
	System.out.println("RG: " + this.rg);

		if(permanece = true) {
			status = "Ativo";
			}
		else {
			status = "Afastado";
			}
	System.out.println("Status:" + this.status);

	}
}

class Teste {
	public static void main(String [] args) {
		Funcionario funcionarioA;
		funcionarioA = new Funcionario();
		funcionarioA.data.dia = 20;
		funcionarioA.data.mes = 10;
		funcionarioA.data.ano = 1999;


		funcionarioA.nome = "Joao Pinto";
		funcionarioA.depto = "Caixa";
		funcionarioA.salario = 1100;	
		funcionarioA.rg = "33015750-4";
		funcionarioA.permanece = true;
		funcionarioA.mostra();
		
	


		Funcionario funcionarioB;
		funcionarioB = new Funcionario();
		funcionarioB.data.dia = 2;
		funcionarioB.data.mes = 9;
		funcionarioB.data.ano = 1992;



		funcionarioB.nome = "Christian Eland";
		funcionarioB.depto = "Presidente";
		funcionarioB.salario = 25000;	

		funcionarioB.rg = "33015200-4";
		funcionarioB.permanece = true;
		funcionarioB.mostra();
		
	}
}

Ela compila, mas quando executo Java Teste recebo a seguinte mensagem:
Exception in thread "main" java.lang.NullPointerException
at Teste.main(Funcionarios.java:52)

ALGUEM SABE??? Obrigado!

3 Respostas

R

e ae blz?

tenta inicializar o atributo data na classe Funcionario:

Data data = new Data();

H

po rafael, valeu man!!!
perfect

peczenyj

Vc podia colocar um construtor no seu objetos...

class Data {
 	int dia;
 	int mes;
 	int ano;

        public Data(int dia, int mes, int ano){
               this.dia=dia;
               (...)
        }
}
Ao inves de tudo isso:
Funcionario funcionarioA;
 		funcionarioA = new Funcionario();
 		funcionarioA.data.dia = 20;
 		funcionarioA.data.mes = 10;
 		funcionarioA.data.ano = 1999;
 
 
 		funcionarioA.nome = "Joao Pinto";
 		funcionarioA.depto = "Caixa";
 		funcionarioA.salario = 1100;	
 		funcionarioA.rg = "33015750-4";
 		funcionarioA.permanece = true;

Poderias ter:

Data data = new Data(20,10,1999);
Funcionario funcionarioA = new Funcionario(data,"Joao Pinto","Caixa",1100,"[telefone removido]",true);

O que vc acha ?

Criado 1 de maio de 2006
Ultima resposta 2 de mai. de 2006
Respostas 3
Participantes 3