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

Array - último exercício

No último exercício pede para criar um método contém, mas em qual classe ele deve ser inserido? Porque?

Que argumento eu coloco dentro do método quando eu vou executar?

empresa.contem(????)

6 respostas

A ideia do método contem() é verificar se um funcionario está ou não contido em uma empresa. Portanto é responsabilidade da classe Empresa saber verificar se um funcionario está contido em sua lista de empregados ou não. Como argumento você deve passar alguma variavel do tipo Funcionário, ou seja:

Funcionario f = new Funcionario();
//atribuição de todos os atributos de f
empresa.contem(f);// retorna true se o usuario está na lista e false se não estiver

O meu código tinha aparecido um erro.

class Empresa {

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

    public String getNome() {
        return this.nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getCnpj() {
        return this.cnpj;
    }

    public void setCnpj(String cnpj) {
        this.cnpj = cnpj;
    }

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

    void adicionar(Funcionario f) {
        this.funcionarios[this.livre] = f;
        this.livre++;
     }

    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++) {
         System.out.println("Funcionário na posição: " + i);
         this.funcionarios[i].mostra();
       }
    }

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


    public static void main(String[] args){
        Empresa novaempresa = new Empresa();
        novaempresa.funcionarios = new Funcionario[5];

        for (int i = 0; i < 5; i++) {
            Funcionario f = new Funcionario();
            f.setSalario(1000 + i * 100);
            novaempresa.adicionar(f);
        }

         novaempresa.mostraFuncionarios();
         novaempresa.mostraTodasAsInformacoes();
        novaempresa.contem(f);
    }    
}

Oi gisesonia, você poderia nos dizer qual erro tinha aparecido?

novaempresa.contem(f);

cannot find symbol

Agora eu fiz várias alterações, por causa dos exercícios, segue o código completo:

class Funcionario {
    String nome;
    String departamento;
    private double salario;
    Data dataEntrada; 
    String rg;

    public void mostra() {
                System.out.println("Nome: " + this.nome);
                System.out.println("Departamento: " + getDepartamento());
                System.out.println("Salário: R$" + getSalario());
                System.out.println("Data de entrada: " + getDataEntrada());
                System.out.println("RG: " + this.rg);
                System.out.println("Ganho anual: R$" + getGanhoAnual());
    }

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

    public String getNome() {
        return this.nome;
    }

    public void setNome (String nome) {
        this.nome = nome;
    }

    public String getDepartamento() {
        return this.departamento;
    }

    public void setDepartamento (String departamento) {
        this.departamento = departamento;
    }

    public double getSalario() {
        return this.salario;
    }

    public void setSalario (double salario) {
        this.salario = salario;
    }

   public Data getDataEntrada() {
        return this.dataEntrada;
    }

    public void setDataEntrada (Data dataEntrada) {
        this.dataEntrada = dataEntrada;
    }

    public String getRg() {
        return this.rg;
    }


    public void recebeAumento(double aumento) {
        getSalario() += aumento;
    }

    public double calculaGanhoAnual() {
        return getSalario() * 12;
    }
}


class Empresa {

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

    public String getNome() {
        return this.nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public String getCnpj() {
        return this.cnpj;
    }

    public void setCnpj(String cnpj) {
        this.cnpj = cnpj;
    }

    public Funcionario[] getFuncionarios() {
        return this.funcionarios;
    }

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

    void adicionar(Funcionario f) {
        this.funcionarios[this.livre] = f;
        this.livre++;
     }

    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++) {
         System.out.println("Funcionário na posição: " + i);
         this.funcionarios[i].mostra();
       }
    }

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


class TestaEmpresa{
    public static void main(String[] args){
        Empresa novaempresa = new Empresa();
        novaempresa.getFuncionarios() = new Funcionario[5];

        for (int i = 0; i < 5; i++) {
            Funcionario f = new Funcionario();
            f.setSalario(1000 + i * 100);
            novaempresa.adicionar(f);
       }

         novaempresa.getFuncionarios(2);
         //novaempresa.mostraFuncionarios();
         //novaempresa.mostraTodasAsInformacoes();
        novaempresa.contem(f);
    }    
}


class TestaFuncionario {

    public static void main(String[] args) {
        Funcionario f1 = new Funcionario();

        f1.setSalario(1234);       

        f1.salario = 100;
        f1.recebeAumento(50);

        f1.mostra();

        System.out.println("salario atual:" + f1.salario);
        System.out.println("ganho anual:" + f1.calculaGanhoAnual());*/
    }
}
solução!

Dando uma olhada:

 for (int i = 0; i < 5; i++) {
            Funcionario f = new Funcionario();
            f.setSalario(1000 + i * 100);
            novaempresa.adicionar(f);
       }

         novaempresa.getFuncionarios(2);
         //novaempresa.mostraFuncionarios();
         //novaempresa.mostraTodasAsInformacoes();
        novaempresa.contem(f);

Da pra ver que nosso Funcionario f foi criado dentro do for. Portanto, a variavel f do tipo Funcionario só existe dentro do for! O que está acontecendo é que estamos tentando procurar passando f mas f só existe dentro do for por isso surgiu o erro cannot find symbol (simbolo não encontrado). Precisamos criar outro funcionario pra passar no método contem() =)

Espero ter ajudado.

Obrigada.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software