Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Dificuldade no exercício 2 da Aula 6 de Java I: Primeiros Passos

A aula número 6 do curso de Java I: Primeiros Passos é sobre construtores. Entendi o conceito e a sua utilização, porém não sei como fazer um construtor passar o tamanho de um array.

Minha dúvida: Como implementar o que o exercício pede no meu código?

O que pede o exercício: "Na classe Empresa, em vez de criar um array de tamanho fixo, receba como parâmetro no construtor o tamanho do array de Funcionario."

Como está o meu código:

class Empresa{
    private String nome;
    private String cnpj;
    Funcionario[] empregados;
    private int livre = 0;

    // Nome
    public void setNome(String nome){
        this.nome = nome;
    }
    public String getNome(){
        return this.nome;
    }

    // CNPJ
    public void setCNPJ(String cnpj){
        this.cnpj = cnpj;
    }
    public String getCNPJ(){
        return this.cnpj;
    }

    //Funcionario

    public Funcionario getFuncionario(int posicao){
        return this.empregados[posicao];
    }

    public void adiciona(Funcionario f){
        this.empregados[this.livre] = f;
        this.livre++;
    }
    public boolean contem(Funcionario f) {
            for (int i = 0; i < this.livre; i++) {
                if (f == this.empregados[i]) {
                    return true;
                }
            }
            return false;
        }    
}
class TestaEmpresa {

            public static void main (String[] args) {
                Empresa empresa = new Empresa();
                empresa.empregados = new Funcionario[10];
                /*
                Funcionario f1 = new Funcionario();
                f1.salario = 1000;
                f1.dt_inicio = "10/10/2018";//new Data();
                empresa.adiciona(f1);

                Funcionario f2 = new Funcionario();
                f2.salario = 1700;
                f2.dt_inicio = "10/10/2017";//new Data();
                empresa.adiciona(f2);

                empresa.empregados[0].mostra();
                empresa.empregados[1].mostra();
                */
                for (int i = 0; i < 5; i++){
                    Funcionario f = new Funcionario();
                    f.setSalario(10000 + i * 100);
                    f.setDataInicial("01/01/2500");
                    empresa.adiciona(f);
                    empresa.empregados[i].mostra();
                }
            }
        }
4 respostas

Você deve criar um construtor que aceite como parâmetro o tamanho do array de funcionários

Assim criaria a instancia de Empresa dessa forma:

Empresa empresa = new Empresa(10);

Deyve, mas o meu array é new Funcionario[10]... não entendi como fazer essa implementação no código.

solução!

Boa tarde Alessandro,

Você pode fazer o seguinte dentro da classe Empresa:

class Empresa {
   private String nome;
   // outros atributos...

   public Empresa(int numeroEmpregados) {
      this.empregados = new Funcionario[numeroEmpregados];
   }

   // demais métodos ...
}

E na classe TestaEmpresa:

class TestaEmpresa {
   public static void main (String[] args) {
      Empresa empresa = new Empresa(10); // 10 funcionarios
     // resto do código
}

Neste caso, a linha abaixo não será mais necessária, pois ela está sendo feita via construtor, de modo encapsulado:

      empresa.empregados = new Funcionario[10];

Avisa aí se deu certo e se ficou claro.

Abraço.

Obrigado Rafael, funcionou. Ficou claro sim, eu preciso praticar mais.

Obrigado