Olá, testou no exercício 4 do capitulo Modificadores de acesso, estou com a seguinte duvida, como eu crio um objeto cujo a array é "private" em outra classe?
Segue o exemplo da Array do tipo Funcionario1[] funcionarios que foi sugerido deixa-la como private, porem quando eu tento criar um novo objeto do tipo Funcionario1 na classe de teste não consigo devido a restrições de acesso. segue abaixo o codigo completo:
class Funcionario1{
private String nome;
private String departamento;
private double salario;
Data dataDeEntrada;
String rg;
Empresa empresa;
public void recebeAumento(double valor){
this.salario += valor;
}
public double getGanhoAnual(){
return this.salario * 12;
}
public double getSalario(){
return this.salario;
}
public String getNome(){
return this.nome;
}
public String getDepartamento(){
return this.departamento;
}
public void setNome(String nome){
this.nome = nome;
}
public void setDepartamento(String departamento){
this.departamento = departamento;
}
public double setSalario(double novoSalario){
return this.salario = novoSalario;
}
public void mostra(){
System.out.println("Empresa : "+this.empresa.nomeDaEmpresa);
System.out.println("Funcionario : "+this.nome);
System.out.println("Deparatamento : "+this.departamento);
System.out.println("Salario : R$ "+this.getSalario());
System.out.println("Data de Entrada: "+this.dataDeEntrada.mostraData());
System.out.println("RG : "+this.rg);
System.out.println("Ganho Anual : R$ "+this.getGanhoAnual());
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
}
}
class Empresa {
String nomeDaEmpresa;
String cnpj;
String telefone;
private Funcionario1[] funcionarios;
int livre = 0;
public void setFuncionarios (Funcionario1 f){
this.funcionarios[this.livre] = f;
this.livre++;
}
public Funcionario1 getFuncionarios(int posicao){
return this.funcionarios[posicao];
}
void mostraFuncionarios(){
for (int i = 0; i < this.livre; i++) {
System.out.println("Funcionário na posição: " + i);
System.out.println("R$" + this.funcionarios[i].getSalario());
}
}
void mostraTodasAsInformacoes(){
for(int i=0;i<this.livre;i++){
this.funcionarios[i].mostra();
}
}
boolean contem(Funcionario1 fx){
for (int i = 0; i < this.livre; i++){
if (this.funcionarios[i].getNome() == fx.getNome()){
return true;
}
}
return false;
}
}
class Data {
int dia;
int mes;
int ano;
void prencheData (int d, int m, int a){
this.dia = d;
this.mes = m;
this.ano = a;
}
String mostraData (){
return this.dia+"/"+this.mes+"/"+this.ano;
}
}
class TestaFuncionario {
public static void main(String[] args) {
Empresa empresa = new Empresa();
Funcionario1 f1 = new Funcionario1 ();
Funcionario1 f2 = new Funcionario1 ();
empresa.funcionarios = new Funcionario1[10];
empresa.nomeDaEmpresa = "Stefanine";
empresa.cnpj = "109.000.000/000-98";
empresa.telefone = "09738725-009988";
empresa.funcionarios[0] = new Funcionario1();
empresa.funcionarios[1] = new Funcionario1();
f1.empresa = empresa;
f1.setNome("Hugo");
f1.setDepartamento("Vendas");
f1.dataDeEntrada = new Data();
f1.dataDeEntrada.prencheData(01,10,2016);
f1.rg = "22.000.99-00";
f1.setSalario(100);
f1.recebeAumento(50);
empresa.setFuncionarios(f1);
empresa.funcionarios[0] = f1;
f2.empresa = empresa;
f2.setNome("Jose");
f2.setDepartamento("Estagio");
f2.dataDeEntrada = new Data();
f2.dataDeEntrada.prencheData(01,02,2017);
f2.rg = "00.000.99-00";
f2.setSalario(2000.0);
f2.recebeAumento(1800);
empresa.setFuncionarios(f2);
empresa.funcionarios[1] = f2;
//empresa.setFuncionarios[0].mostra();
//empresa.setFuncionarios[1].mostra();
//empresa.mostraFuncionarios();
empresa.mostraTodasAsInformacoes();
//empresa.contem(f1);
}
}
Do jeito que esta basta retirar a restição de acesso "private" do funcionário que testa normal.