Olá Rodrigo,
Seu problema basicamente foi na hora de atribuir as variáveis para o funcionário que você criou, como você está utilizando métodos não será possível atribuir o valor como é feito com uma variável, por exemplo:
f2.setNome = "Pedro";
nesse caso deveria ser f2.setNome("Pedro");
, não sei o quanto a minha alteração ficou fiel ao exercício, mas creio que te ajude a andar um pouco. também não alterei o funcionário f3, deixo essa tarefa para você.
Também fiz pequena modificações nas outras classes, como por exemplo, criei um contructor para a classe Data, deixando assim muito mais fácil de criar a data já passando como argumento. Segue a implementação:
Data.java
class Data {
int dia;
int mes;
int ano;
public Data (int dia, int mes, int ano) {
this.dia = dia;
this.mes = mes;
this.ano = ano;
}
public String getFormatada() {
return this.dia + "/" + this.mes + "/" + this.ano;
}
public void setData (int dia, int mes, int ano) {
this.dia = dia;
this.mes = mes;
this.ano = ano;
}
}
Empresa.java (Também fiz algumas modificações nessa classe)
package teste;
class Empresa {
String nome;
Funcionario[] funcionarios;
int livre;
void adiciona(Funcionario f) {
this.funcionarios[this.livre] = f;
this.livre++;
}
void mostraFuncionarios() {
for (int i = 0; i < this.livre; i++) {
System.out.println("Funcionario: " + i);
System.out.println("Nome: " + this.funcionarios[i].getNome());
System.out.println("Departamento: " + this.funcionarios[i].getDepartamento());
System.out.println("Salario: " + this.funcionarios[i].getSalario());
System.out.println("Data de Entrada: " + this.funcionarios[i].getDataEntrada());
System.out.println("Rg: " + this.funcionarios[i].getRg());
System.out.println("Salario Anual " + this.funcionarios[i].getGanhoAnual());
}
}
boolean contem(Funcionario f) {
for (int i = 0; i < this.livre; i++) {
if (f == this.funcionarios[i]) {
return true;
}
}
return false;
}
}
Funcionario.java
package teste;
public class Funcionario{
private String nome;
private String departamento;
private double salario;
private Data dataEntrada;
private String rg;
public String getNome() {
return this.nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getDepartamento() {
return this.departamento;
}
public void setDepartamento (String departamento) {
this.departamento = departamento;
}
public double getSalario() {
return this.salario;
}
public void setSalario(double salario){
this.salario = salario;
}
public Data getDataEntrada() {
return this.dataEntrada;
}
public void setDataEntrada(Data dataEntrada) {
this.dataEntrada = dataEntrada;
}
public String getRg() {
return this.rg;
}
public void setRg(String rg) {
this.rg = rg;
}
public double getGanhoAnual(){
return this.salario * 12;
}
public void mostra() {
System.out.println("Nome: " + this.getNome());
System.out.println("Departamento: " + this.getDepartamento());
System.out.println("Salario: " + this.getSalario());
System.out.println("Data de Entrada: " + this.dataEntrada.getFormatada());
System.out.println("Rg: " + this.getRg());
System.out.println("Salario Anual " + this.getGanhoAnual());
}
}
TestaEmpresa.java
package teste;
class TestaEmpresa {
public static void main(String[] args) {
Empresa XYZ = new Empresa();
XYZ.funcionarios = new Funcionario[10];
Funcionario f1 = new Funcionario();
f1.setDataEntrada(new Data(12, 06, 2015));
f1.setNome("Rodrigo Araujo");
f1.setDepartamento("T.I.");
f1.setSalario(1200.0);
f1.setDataEntrada(new Data(12, 06, 2015));
f1.setRg("12.345.678-9");
XYZ.adiciona(f1);
Funcionario f2 = new Funcionario();
f2.setDataEntrada(new Data(12, 06, 2015));
f2.setNome("Pedro");
f2.setDepartamento("T.I.");
f2.setSalario(1500.0);
f2.setDataEntrada(new Data(21, 10, 2010));
f2.setRg("11.227.332-2");
XYZ.adiciona(f2);
XYZ.funcionarios[0].mostra();
XYZ.funcionarios[1].mostra();
}
}
Espero ter ajudado, qualquer dúvida poste aí no fórum que eu ou outras pessoas te ajudam, boa sorte nos estudos.
Obs.: Te aconselho a refazer a aula, com mais calma, ler os textos e pesquisar um pouco na internet, firmar esse conceito é muito importante para o avanço tanto na linguagem Java quanto me qualquer outra que utilize OO. Firme bem esse conceito, qualquer problema que você tenha com os conceitos de orientação a objetos abre um tópico aqui no fórum, sempre tem alguém pronto para ajudar.