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

Dúvida no Ex. 4 da Aula 5 - Modificadores de acesso

public Funcionario[] getEmpregados() {
        return empregados;
    }

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

Gostaria de uma confirmação!

Do jeito que cria meu getter e setter não funciona, por que apesar de receber um array de funcionários eu não consigo indicar em qual posição eu quero colocar determinado empregado. É isso?

8 respostas

Olá Adauto,

você até conseguiria, mais o código ficaria esquisito.

Do jeito que estão esses set e get passa a ideia que eles irão receber/devolver um array já populado ou novo.

Att,

Oi Ramon!

Getter e Setter tá errado né?

No seu array tem lugar para digitar a posição, no meu eu não tenho como, a não ser que eu faça uma modificação para isso.

Confere?

solução!

Vamos "dizer" que sim,

é melhor deixar o método como sugerido no exercício, fica mais legível e útil:

public class Empresa {
    private Funcionario[] empregados;
    private String nome;
    private String cnpj;
    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];
    }
}

Olá, a minha dúvida é a mesma dele, a mensagem que aparece quando eu compilo o código é a seguinte:

Funcionario.java:64: error: missing return statement } ^ 1 error

Segue o código:

``` class Funcionario{ String nome; String departamento; private double salario; String RG; private double aumento; double ganhoAnual; Data dataDeEntrada;

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

public double getAumento(){ return this.aumento; }

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

void recebeAumento(double aumento){ this.salario += aumento; } void calculaGanhoAnual(double salario){ this.ganhoAnual = salario * 12; } void mostra(){ System.out.println("Nome: " + this.nome); System.out.println("Departamento: " + this.departamento); System.out.println("Salario: " + getSalario()); System.out.println("RG: " + this.RG); System.out.println("Data: " + this.dataDeEntrada.getFormatada()); } }

class Data{ int dia; int mes; int ano; void Data_de_entrada(int dia, int mes, int ano){ this.dia = dia; this.mes = mes; this.ano = ano; } String getFormatada(){ return this.dia + "/" + this.mes + "/" + this.ano; } }

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

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

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

}

void adiciona(Funcionario f){ this.empregados[this.livre] = f; this.livre++; }

void mostraTodasInfos(){ for (int i = 0; i < this.livre; i++) { System.out.println("Funcionário na posição: " + i); this.empregados[i].mostra(); } } 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 Emp = new Empresa(); Funcionario[] empregados = new Funcionario[10]; Emp.setEmpregados(empregados);

Funcionario f1 = new Funcionario(); f1.nome = "Rafael"; f1.setSalario(200); f1.dataDeEntrada = new Data(); Emp.adiciona(f1);

Funcionario f2 = new Funcionario(); f2.nome = "Jose"; f2.setSalario(300); f2.dataDeEntrada = new Data(); Emp.adiciona(f2);

Funcionario f3 = new Funcionario(); f3.nome = "Fulano"; f3.setSalario(400); f3.dataDeEntrada = new Data(); Emp.adiciona(f3);

// Emp.empregados[0].mostra(); // Emp.empregados[1].mostra();

Funcionario f4 = new Funcionario(); Emp.mostraTodasInfos(); }

}

Esqueci de colocar as ```!

Como não consigo editar, vou mandar aqui de novo:

class Funcionario{
    String nome;
    String departamento;
    private double salario;
    String RG;
    private double aumento;
    double ganhoAnual;
    Data dataDeEntrada;

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

    public double getAumento(){
        return this.aumento;
    }

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

    void recebeAumento(double aumento){
        this.salario += aumento;
    }
    void calculaGanhoAnual(double salario){
        this.ganhoAnual = salario * 12;
    }
    void mostra(){
        System.out.println("Nome: " + this.nome);
        System.out.println("Departamento: " + this.departamento);
        System.out.println("Salario: " + getSalario());
        System.out.println("RG: " + this.RG);
        System.out.println("Data: " + this.dataDeEntrada.getFormatada());
    }
}

class Data{
    int dia;
    int mes;
    int ano;
    void Data_de_entrada(int dia, int mes, int ano){
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
    }
    String getFormatada(){
        return this.dia + "/" + this.mes + "/" + this.ano;
    }
}

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

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

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

    }

    void adiciona(Funcionario f){
        this.empregados[this.livre] = f;
        this.livre++;
    }

    void mostraTodasInfos(){
        for (int i = 0; i < this.livre; i++) {
        System.out.println("Funcionário na posição: " + i);
        this.empregados[i].mostra();
        }
    }
    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 Emp = new Empresa();
        Funcionario[] empregados = new Funcionario[10];
        Emp.setEmpregados(empregados);        

        Funcionario f1 = new Funcionario();
        f1.nome = "Rafael";
        f1.setSalario(200);
        f1.dataDeEntrada = new Data();
        Emp.adiciona(f1);

        Funcionario f2 = new Funcionario();
        f2.nome = "Jose";
        f2.setSalario(300);
        f2.dataDeEntrada = new Data();
        Emp.adiciona(f2);

        Funcionario f3 = new Funcionario();
        f3.nome = "Fulano";
        f3.setSalario(400);
        f3.dataDeEntrada = new Data();
        Emp.adiciona(f3);

    //    Emp.empregados[0].mostra();
    //    Emp.empregados[1].mostra();

        Funcionario f4 = new Funcionario();
        Emp.mostraTodasInfos();
    }

}

Rafael,pelo erro que você postou,seu compilador está avisando que falta um fecha chave ai ( "}" ).

Acho que não, porque geralmente quando falta uma "chave", ele aponta outro erro no compilador.

Se no caso for a chave, onde seria?

Acho que você já deve ter conseguido arrumar, caso não tenha o erro está no seu método setEmpregados. Veja bem a descrição do erro: Funcionario.java:64: error: missing return statement } ^ 1 error; A mensagem está dizendo que o seu método está esperando um retorno e esse retorno não foi achado. Lembre que você está criando um método 'setter' e métodos 'setter' são void, logo não retornam nada. Tente trocar de a assinatura para ´´´public void setEmpregados(Funcionario[] empregados)´´´ e veja se funciona.