CLASSES - Help!

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:

[code]
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();
	
}

} [/code]

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!

e ae blz?

tenta inicializar o atributo data na classe Funcionario:

Data data = new Data();

po rafael, valeu man!!!
perfect

Vc podia colocar um construtor no seu objetos…

[code]class Data {
int dia;
int mes;
int ano;

    public Data(int dia, int mes, int ano){
           this.dia=dia;
           (...)
    }

}[/code]

Ao inves de tudo isso:

[code] 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;[/code]

Poderias ter:

Data data = new Data(20,10,1999); Funcionario funcionarioA = new Funcionario(data,"Joao Pinto","Caixa",1100,"3232133213",true);

O que vc acha ?