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

Imprimir se funcionario é ou não da empresa

Como faria se quisesse imprimir se o funcionario é ou não da empresa pelo metodo "mostraTodasAsInformacoes()" ?

class Funcionario{
    String nome;
    String cargo;
    double salario;
    String rg;


    void recebeAumento (double valor){
        this.salario += valor;
    }

    double calculaGanhoAnual(){
        return this.salario * 12;
    }

    void mostra(){
        System.out.println("Nome: " + this.nome);
        System.out.println("RG: " + this.rg);
        System.out.println("Cargo: " + this.cargo);
        System.out.println("Salário Mensal: " + this.salario);
        System.out.println("Salário Anual: " + this.calculaGanhoAnual());


    }

}

class Empresa{
    String nome;
    int cnpj;
    int telefone; 
    String email;
    Funcionario[] funcionarios;


    void adicionar (Funcionario f){
        for (int i = 0; i < this.funcionarios.length; i++) {
            if (funcionarios[i] == null) {
                this.funcionarios[i] = f;
                break;
            }else {
                continue;
            }
        }
    }

    void mostraTodasAsInformacoes (){
        for(int i = 0; i < this.funcionarios.length; i++) {
            if (this.funcionarios[i] != null) {
                this.funcionarios[i].mostra();
            }
        }
    }

    boolean contem(Funcionario f) {
            for (int i = 0; i < this.funcionarios.length; i++) {
                if (this.funcionarios[i] == f) {
                    return true;
                }
            }
            return false;
        }
}

class TestaEmpresa {
    public static void main(String[] args) {
        Empresa empresa = new Empresa();
        empresa.funcionarios = new Funcionario[10];

        Funcionario f01 = new Funcionario();
        f01.nome = "Carlos";
        f01.salario = 1500;
        f01.cargo = "Programador";
        f01.rg = "13982365";
        empresa.adicionar(f01);
        empresa.contem(f01);


        Funcionario f02 = new Funcionario();
        f02.nome = "Jaime";
        f02.salario = 1800;
        f02.cargo = "Web Designer";
        f02.rg = "14972365";
        empresa.adicionar(f02);
        empresa.contem(f02);


        Funcionario f03 = new Funcionario();
        f03.nome = "Joana";
        f03.salario = 6900;
        f03.cargo = "Chefe de Marketing";
        f03.rg = "11234365";
        empresa.adicionar(f03);
        empresa.contem(f03);


        Funcionario f04 = new Funcionario();
        f04.nome = "Carol";
        f04.salario = 10000;
        f04.cargo = "Gerente de Projetos";
        f04.rg = "16592365";
        empresa.adicionar(f04);
        empresa.contem(f04);


        empresa.mostraTodasAsInformacoes();


    }
}
3 respostas

Boa tarde, Raphaelli! Beleza? =)

Então, o método imprimeTodasAsInformacoes() da classe Empresa está imprimindo todas as informações de todos os funcionários daquela empresa, ou seja, não faria muito sentido imprimir se determinado funcionário faz parte ou não daquela empresa, sacou?

O que você poderia fazer é analisar um Funcionario, através do método contem(), mas ainda assim não faria sentido implementar isso no método imprimeTodasAsInformacoes(). Entendeu? =)

Espero ter ajudado,

Abraço e bons estudos,

Fábio

Pode ser que a empresa mantenha o cadastro de todos os funcionários e queira verificar se aquele funcionário ainda trabalha lá. Este é um possível uso que eu vejo para o método "contem" e acho que o "mostrarTodasAsInformacoes" seria o melhor método para mostrar tal informação.

solução!

Raphaelli,

Perfeito! Faz sentido! =)

Nesse caso, você teria que ter um atributo no classe Funcionario para informar se ele ainda é um membro da empresa, ou não... Da forma como o sistema está implementado no momento, os funcionário são parte, necessariamente, da empresa, sacou?

Se houver algum Funcionario instanciado que não faz parte da empresa, ele não constará na lista de funcionários daquela empresa...

Então você pode adicionar uma atributo boolean, por exemplo, informando se ele está ativo ou não, por exemplo. Aí o próprio objeto seria capaz de dizer isso. =)

Espero ter ajudado!

Fábio