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

Eu não consegui seguir muito bem os passos do exercício, fiquei confuso.

Eu gostaria de saber se dessa maneira está correto e se tem outra forma melhor?

class Funcionario {

    double salario;
    String nome, dataEntr, dpto, rg;

    double recebeAumento() {
        return this.salario *= 100;
    }

}

class Empresa {

    String nome;
    String cnpj;
    Funcionario[] funcionarios;
    int livre = 0;

    void adicionar(Funcionario f) {

        for (int i=0; i < this.funcionarios.length; i++){

            if(this.funcionarios[i] == null) continue;

            System.out.println("Posicao nº " + i + " ocupada!!!");    

        }

    }

    void imprimeEmpresa(){

        System.out.println("Empresa         = " + this.nome);
        System.out.println("CNPJ            = " + this.cnpj);

        for (int i = 0; i < this.funcionarios.length; i++){
            Funcionario funcionario = this.funcionarios[i];

            if(funcionario == null) continue;

            System.out.println("Nome            = " + funcionario.nome);
            System.out.println("Data de Entrada = " + funcionario.dataEntr);
            System.out.println("Departamento    = " + funcionario.dpto);
            System.out.println("RG              = " + funcionario.rg);
            System.out.println("Salario R$      = " + funcionario.salario);
        }

    }

}


class TestaEmpresa {

    public static void main(String[] args) {


        Data dataEntr = new Data();

        Empresa emp1 = new Empresa();
        emp1.nome = "Casarao das Tintas Ltda.";
        emp1.cnpj = "09.039.015/0001-38";

        Funcionario func0 = new Funcionario();
        emp1.funcionarios = new Funcionario[10];

        emp1.funcionarios[0] = new Funcionario();        
        emp1.funcionarios[0].nome = "Hugo";
        emp1.funcionarios[0].dpto = "Setor de Compras";
        emp1.funcionarios[0].rg = "33.123.456-10";
        dataEntr.preencheData(9, 10, 2017);
        emp1.funcionarios[0].dataEntr = dataEntr.getFormatada();

        emp1.funcionarios[0].salario = 5000.0;
        func0.salario = emp1.funcionarios[0].salario;
        emp1.funcionarios[0].salario = func0.recebeAumento();
        emp1.adicionar(emp1.funcionarios[0]);

        Funcionario func1 = new Funcionario();
        emp1.funcionarios[1] = new Funcionario();
        emp1.funcionarios[1].nome = "Carlos Santos";
        emp1.funcionarios[1].dpto = "Setor de TI";
        emp1.funcionarios[1].rg = "34.111.455-11";
        dataEntr.preencheData(10, 10, 2017);
        emp1.funcionarios[1].dataEntr = dataEntr.getFormatada();

        emp1.funcionarios[1].salario = 7000.0;
        func1.salario = emp1.funcionarios[1].salario;
        emp1.funcionarios[1].salario = func1.recebeAumento();
        emp1.adicionar(emp1.funcionarios[1]);

        Funcionario func2 = new Funcionario();
        emp1.funcionarios[2] = new Funcionario();
        emp1.funcionarios[2].nome = "Maria Antonia";
        emp1.funcionarios[2].dpto = "Setor de Vendas";
        emp1.funcionarios[2].rg = "22.222.222-22";
        dataEntr.preencheData(11, 10, 2017);
        emp1.funcionarios[2].dataEntr = dataEntr.getFormatada();

        emp1.funcionarios[2].salario = 4000.0;
        func2.salario = emp1.funcionarios[2].salario;
        emp1.funcionarios[2].salario = func2.recebeAumento();

        emp1.adicionar(emp1.funcionarios[2]);


        emp1.imprimeEmpresa(); 



    }
}
2 respostas
solução!

Oi Wellington, tudo bom?

Dei uma olhada aqui na resposta do exericcio:

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.dataEntrada = new Data();
                empresa.adiciona(f1);

                Funcionario f2 = new Funcionario();
                f2.salario = 1700;
                f2.dataEntrada = new Data();
                empresa.adiciona(f2);

                empresa.empregados[0].mostra();
                empresa.empregados[1].mostra();
            }
        }

E parece tudo ok. A diferença é que você criou 3 funcionarios e primeiro adicionou eles no array depois manipulou pelo array, além de ter criado algumas propriedades a mais na classe Funcionario. No exercicio foram criado 2 funcionarios eles foram completamente populados e depois adicionados no array já populados =)

O unico problema em acessar o array muitas vezes para popular as instancias de Funcionario é que estamos passando por um passo a mais até chegar no que a gente quer.

Mas não acredito que isso seja muito impactante em uma aplicação comum =)

Abraço!

obrigado.