Bem, vou compartilhar meu código para quem deu uma empacada, assim como eu empaquei rsrs, tem umas dicas que dou no código que pode ajudar o entendimento. Como foi difícil pra mim resolvi compartilhar para ajudar os colegas. Desconsiderem alguns erros ortográficos de meus comentários no código.
class Funcionario8 { // Classe "Principal"
Pessoa titular; // Apontando para classe Pessoa
Pessoa identidade; // Apontando para classe Pessoa
String setor;
double salario;
double aumento;
double valeRefeicao;
Data dataDeEntrada; // Apontando para classe Data
double salarioMaisVale(){ // Metodo para calcular salario mais o vale. Sempre que for uma variavel () sem nada
// E tem que ter return. Sempre que for uma variavel como String, double e int tem que ter o return.
return this.salario + this.valeRefeicao;
}
double comAumento(){ // Metodo para calcular salario com aumento.
return this.salario + this.aumento;
}
double salarioComAumentoMaisVale(){ // Metodo para calcular salario+vale+aumento.
return this.salarioMaisVale() + this.comAumento();
}
double ganhoPorAno(){ // Metodo para calcular o ganho por ano.
return this.salarioComAumentoMaisVale() * 12;
}
void mostra(){
System.out.println();
System.out.println("O Funciorio " + this.titular.nome + " com RG " + this.titular.rg);
System.out.println();
System.out.println("Trabalha no setor: " + this.setor);
System.out.println();
System.out.println("Tendo salario de " + this.salario + " e ticket alimentacao de " + this.valeRefeicao);
System.out.println();
System.out.println("Somando vale refeicao com o salario ganha por mes: " + this.salarioMaisVale());
System.out.println();
System.out.println(this.titular.nome + " recebeu um aumento de " + this.aumento + " passando seu salario para " + this.comAumento());
System.out.println();
System.out.println("Depois que passou a receber o aumento e somado ao vale refeicao " + this.titular.nome + " passou a receber por mes: " + this.salarioComAumentoMaisVale());
System.out.println();
System.out.println(this.titular.nome + " ganha por ano " + this.ganhoPorAno());
System.out.println();
//System.out.println("A sua data de entrada na empresa foi: " + this.dataDeEntrada.dia + "/" + this.dataDeEntrada.mes + "/" + this.dataDeEntrada.ano);
// Subistituo o SOP de cima por um novo no qual utilizo o novo metodo com a data ja formatada.
System.out.println("A sua data de entrada na empresa foi: " + this.dataDeEntrada.getFormatada); // Aqui pode gerar um erro, o getFormatada recebe valor de um metodo void.
// Porém ele é na realidade uma String, podemos nos confundir e colocar
// thi.dataDeEntrada.getFormatada() pois vemos o void, mas como se trata
// de uma String ele tem que vir sem parenteses.
System.out.println();
}
}
class Pessoa { // Classe Pessoa.
String nome;
String rg;
}
class Data { // Classe data
String getFormatada;
/*int dia; // Aqui está um erro que cometi, pensei que esse metodo tinha que permanecer, porém ele só atrapalhava.
int mes;
int ano;
void preencheData(int dia, int mes, int ano) {
this.dia = dia;
this.mes = mes;
this.ano = ano;
}*/
void getFormatada(int dia, int mes, int ano) { // Metodo void getFormatada que recebe os valores inteiros, coloca ja como String
// Na variavel getFormatada. Acredito que acontece uma conversão.
this.getFormatada = dia + "/" + mes + "/" + ano;
}
}
class Programa8 { // classe programa.
public static void main(String[] args){ // metodo.
Funcionario8 f1 = new Funcionario8(); // criando o funcionario f1.
f1.salario = 500; // definindo os parametros que se encontra na classe "principal" e não lincados a classe "secundarias".
f1.valeRefeicao = 200;
f1.aumento = 150;
f1.setor = "TI";
f1.titular = new Pessoa(); // dando "permissão" ao usuario usar a classe Pessoa.
f1.titular.nome = "Pablo"; // Sempre que vou atribuir utilizo usuario.o link das classes.atributo da classe Pessoa;
f1.titular.rg = "987654321";
f1.dataDeEntrada = new Data(); // // dando "permissão" ao usuario usar a classe Data.
f1.dataDeEntrada.getFormatada(20,02,1988);
Funcionario8 f2 = new Funcionario8();
f2.salario = 800;
f2.valeRefeicao = 200;
f2.aumento = 235;
f2.setor = "Creche";
f2.titular = new Pessoa();
f2.titular.nome = "Felipe";
f2.titular.rg = "741852963";
f2.dataDeEntrada = new Data();
f2.dataDeEntrada.getFormatada(20,10,2014);
f1.mostra(); // Imprimindo usuario f1
f2.mostra();
}
}