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

Exercicio 6 Modificadores de acesso

O Exercicio pediu que fosse alterado os atributos da classe empresa para Private, porem apos eu realizar as modificacoes nos atributos entre eles no atributo empregados, nao consegui mais criar nova empresa, tentei de varias formas mas nao consegui compilar aonde deve estar o erro neste codigo?

class Empresa {
    private String nome;
    private String CNPJ;
    private Funcionario[] empregados;

public Empresa(String CNPJ){
    this.CNPJ = CNPJ;
    this.empregados = new Funcionario[10];
}


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


    public void setEmpregados(String empregados){
        this.empregados = Funcionario[] empregados;
    }


    void adiciona(Funcionario f) {
        boolean adicionei = false;
        for(int i = 0; i< this.empregados.length; i++){
            if(this.empregados[i] == null){
                this.empregados[i]=f;
                adicionei = true;
                break;
            }
        }
    }

    public void mostraEmpregados(){
        for (int i = 0; i < this.empregados.length; i++){
        if(this.empregados[i] == null) continue;
        System.out.print("Funcionario na posicao: " + i + " / " + this.empregados[i].getId() + this.empregados[i].nome);
        System.out.println(" = Salario R$: " + this.empregados[i].getSalario());
        }
    }        


      public void mostraTodasAsInformacoes() {
            for (int i = 0; i < this.empregados.length; i++) {
                System.out.println("Funcionário na posição: " + this.empregados[i]);

            }
        }

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

    }

}



class Funcionario {

    public String nome;
    private double salario;
    private static int proximoFuncionario = 0;
    private int id;

     public int getId() {
                return this.id;
            }


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

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


    public Funcionario(String nome, double salario) {  // Construtor
        this.nome = nome;
        this.salario = salario;
        this.id = proximoFuncionario++;

    }

}

class TestaEmpresa {

    public static void main(String[] args){

    Empresa empresa = new setEmpregados ();
    //empresa.empregados = new Funcionario[10];

    Funcionario f1 = new Funcionario("Marcelo",4000);
    System.out.println(f1.getSalario());
    empresa.adiciona(f1);

    Funcionario f2 = new Funcionario("Fabiana",6000);
    empresa.adiciona(f2);


    Funcionario f3 = new Funcionario("Junior",8000);
    empresa.adiciona(f3);

    empresa.mostraEmpregados();
    empresa.mostraTodasAsInformacoes();
    //empresa.contem();
    }
}
4 respostas

Marcelo, você tentou chamar o objeto empresa com o método setEmpregados, assumindo que você tinha a intenção de adicionar empregados na empresa, você já tem o método adiciona para isso.

class Empresa {
    private String nome;
    private String CNPJ;
    private Funcionario[] empregados;

    public Empresa(String CNPJ) {
        this.CNPJ = CNPJ;
        this.empregados = new Funcionario[10];
    }

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

    void adiciona(Funcionario f) {
        boolean adicionei = false;
        for (int i = 0; i < this.empregados.length; i++) {
            if (this.empregados[i] == null) {
                this.empregados[i] = f;
                adicionei = true;
                break;
            }
        }
    }

    public void mostraEmpregados() {
        for (int i = 0; i < this.empregados.length; i++) {
            if (this.empregados[i] == null)
                continue;
            System.out.print("Funcionario na posicao: " + i + " / " + this.empregados[i].getId() + this.empregados[i].nome);
            System.out.println(" = Salario R$: " + this.empregados[i].getSalario());
        }
    }

    public void mostraTodasAsInformacoes() {
        for (int i = 0; i < this.empregados.length; i++) {
            System.out.println("Funcionário na posição: " + this.empregados[i]);

        }
    }

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

}


class TestaEmpresa {

    public static void main(String[] args) {

        Empresa empresa = new Empresa("CNPJ Aqui");

        Funcionario f1 = new Funcionario("Marcelo", 4000);
        System.out.println(f1.getSalario());
        empresa.adiciona(f1);

        Funcionario f2 = new Funcionario("Fabiana", 6000);
        empresa.adiciona(f2);

        Funcionario f3 = new Funcionario("Junior", 8000);
        empresa.adiciona(f3);

        empresa.mostraEmpregados();
        empresa.mostraTodasAsInformacoes();
        //empresa.contem();
    }
}

Ola Douglas eu estava na verdade tentando contornar o erro que esta acontecendo depois que eu coloquei pritave no atributo Funcionario[] empregados;

Ao compilar o codigo abaixo apareceu dois erros

arrays.java:9: error: incompatible types return this.empregados; ^ required: String found: Funcionario[] arrays.java:89: error: empregados has private access in Empresa empresa.empregados = new Funcionario[10]; ^ 2 errors

class Empresa {
    private String nome;
    private String CNPJ;
    private Funcionario[] empregados;



    public String getEmpregados(){
        return this.empregados;
    }


    void adiciona(Funcionario f) {
        boolean adicionei = false;
        for(int i = 0; i< this.empregados.length; i++){
            if(this.empregados[i] == null){
                this.empregados[i]=f;
                adicionei = true;
                break;
            }
        }
    }

    public void mostraEmpregados(){
        for (int i = 0; i < this.empregados.length; i++){
        if(this.empregados[i] == null) continue;
        System.out.print("Funcionario na posicao: " + i + " / " + this.empregados[i].getId() + this.empregados[i].nome);
        System.out.println(" = Salario R$: " + this.empregados[i].getSalario());
        }
    }        


      public void mostraTodasAsInformacoes() {
            for (int i = 0; i < this.empregados.length; i++) {
                System.out.println("Funcionário na posição: " + this.empregados[i]);

            }
        }

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

    }

}



class Funcionario {

    public String nome;
    private double salario;
    private static int proximoFuncionario = 0;
    private int id;

     public int getId() {
                return this.id;
            }


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

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


    public Funcionario(String nome, double salario) {  // Construtor
        this.nome = nome;
        this.salario = salario;
        this.id = proximoFuncionario++;

    }

}

class TestaEmpresa {

    public static void main(String[] args){

    Empresa empresa = new Empresa ();
    empresa.empregados = new Funcionario[10];

    Funcionario f1 = new Funcionario("Marcelo",4000);
    System.out.println(f1.getSalario());
    empresa.adiciona(f1);

    Funcionario f2 = new Funcionario("Fabiana",6000);
    empresa.adiciona(f2);


    Funcionario f3 = new Funcionario("Junior",8000);
    empresa.adiciona(f3);

    empresa.mostraEmpregados();
    empresa.mostraTodasAsInformacoes();
    //empresa.contem();
    }
}
solução!

Veja no meu exemplo acima, como empregados está como private, o construtor foi utilizado pra declarar a quantidade de arrays de Funcionario.

Obrigado Douglas, consegui entender a logica agora

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