Olá, eu tenho uma dúvida que na verdade se estende desde o exercício 4 da aula 5. Quando eu coloquei o atributo "funcionarios" dentro da classe Empresa para privado eu tive um certo problema em criar estes funcionários na main. Eu não podia fazer desta forma:
nomedaempresa.funcionarios = new Funcionarios2[10];
Então eu dei uma pesquisada no forum e descobri que eu podia fazer o seguinte:
Funcionarios2[] f2;
f2 = new Funcionarios2[10];
dupont.setNovosFuncionarios(f2);
Só que eu percebi que apesar do atributo funcionários estar privado na classe Empresa eu posso altera-lo através da variável f2 que é uma classe Funcionarios2. Continuando, eu criei o construtor desta forma:
public Funcionarios2(String nome){
setNome(nome);
}
Só que como eu criei um método para criar os novos funcionários, através do método citado acima, eu não sei como fazer para declarar seus nomes deles já que é uma array. Desculpa se não fui muito claro e qualquer coisa eu presto esclarecimentos.
Restante do código está assim:
class Empresa2{
String nome;
int cnpj;
int contador = 0;
private Funcionarios2[] funcionarios;
public void setNovosFuncionarios(Funcionarios2[] f){
this.funcionarios = f;
}
public Funcionarios2 getFuncionario(int posicao){
return this.funcionarios[posicao];
}
void adiciona(Funcionarios2 f){
this.funcionarios[this.contador] = f;
contador ++;
}
void mostraTodasInformacoes(){
for(int i = 0 ; i<this.funcionarios.length; i++){
if(getFuncionario(i)==null) continue;
System.out.print("o funcinario " + i + " ganha " + this.funcionarios[i].getSalario());
if(getFuncionario(i).getRg() == 0){
System.out.print(" Rg nao cadastrado ");
} else{
System.out.print("o RG do funcinario " + i + " é " + this.funcionarios[i].getRg());
}
if(getFuncionario(i).getNome() == null){
System.out.print(" nome nao cadastrado ");
} else{
System.out.println("o nome do funcionario " + i + " é " + this.funcionarios[i].getNome());
}
System.out.println(" ");
}
}
}
class Funcionarios2{
private String nome;
private int rg;
private double salario;
public Funcionarios2(String nome){
setNome(nome);
}
public Funcionarios2(){
}
public void setSalario(double valor){
this.salario = valor;
}
public void setNome(String nome){
this.nome = nome;
}
public void setRg(int RG){
this.rg = RG;
}
public double getSalario(){
return this.salario;
}
public int getRg(){
return this.rg;
}
public String getNome(){
return this.nome;
}
}
class Programa2{
public static void main(String[] args){
Empresa2 dupont = new Empresa2();
Funcionarios2[] f2;
f2 = new Funcionarios2[10];
dupont.setNovosFuncionarios(f2);
for (int i = 0; i < 6; i++) {
Funcionarios2 f = new Funcionarios2();
f.setSalario(1000 + i * 100);
dupont.adiciona(f);
}
f2[1].setSalario(3000);
dupont.mostraTodasInformacoes();
}
}