Solucionado (ver solução)

Importante

Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!

Solucionado
(ver solução)
10
respostas

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

Não estou conseguindo identificar o que estou fazendo de errado. Esse exercicio ficou um pouco confuso pois o codigo inicial esta diferente do codigo que estamos utilizando até agora. Alguem consegue me orientar sobre o que estou fazendo de errado ?

public class Funcionario {

    private String nome;
    private String departamento;
    private double salario;
    public Data dataEntrada;
    private String rg;

    public void recebeAumento (double aumento) {
        this.salario += aumento;
    }    
    public double getGanhoAnual () {
        return this.salario * 12;
    }
    public void mostra() {
        System.out.println("Nome: " + this.getNome());
        System.out.println("Departamento: " + this.getDepartamento());
        System.out.println("RG: " + this.getRg());
        System.out.println("Data de entrada: " + this.dataEntrada.getFormatada());
        System.out.println("Salario atual: " + this.getSalario());
        System.out.println("Ganho Anual: " + this.getGanhoAnual());
        System.out.println("");
    }

    public double getSalario() {
        return this.salario;
    }
    public void setSalario (double salario) {
        this.salario = salario;
    }
    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 Data getDataEntrada() {
        return this.dataEntrada;
    }

    public void setDataEntrada (Data dataEntrada) {
        this.dataEntrada = dataEntrada;
    }
    public String getRg() {
        return this.rg;
    }    
    public String setRg(String rg) {
        this.rg = rg;
    }    

}

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

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


    void mostraEmpregados() {
        for (int i= 0; i< this.livre; i++) {
            System.out.println("Funcionario na posicao: " +i);
            System.out.println("Salario R$: " + this.empregados[i].salario);
            // inserir aqui pra mostrar outros atributos de empregados
            }
    }
    void mostraTodasAsInformacoes() {
        for (int i=0; i<this.livre; i++) {
            System.out.println("Funcionario na posicao: " + i);
            this.empregados[i].mostra();
            }
    }


}

class Data {

/*resto do código*/

String getDataEntrada() {
    return this.dia + "/" + this.mes + "/" + this.ano;
  }

}

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

        Funcionario f1 = new Funcionario();
        f1.setSalario(1000);
        empresa.adciona(f1);

        Funcionario f2 = new Funcionario();
        f2.setSalario(1700);
        empresa.adciona(f2);

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

public class TestaFuncionario {

    public static void main(String[] args) {
        Funcionario f1 = new Funcionario("Hugo");
        Data data = new Data();
        data.preencheData(1, 7, 2009);
        f1.setSalario(100);
        f1.aumento(50);
        f1.dataEntrada = data;

        f1.mostra();
    }
}
10 respostas

Alex, Bom dia !

Tem algum erro que está aparecendo para você ?

Funcionario.java:130: error: class TestaFuncionario is public, should be declare d in a file named TestaFuncionario.java public class TestaFuncionario {

^ Funcionario.java:18: error: cannot find symbol System.out.println("Data de entrada: " + this.dataEntrada.getFor matada());

^ symbol: method getFormatada() location: variable dataEntrada of type Data Funcionario.java:106: error: cannot find symbol return this.dia + "/" + this.mes + "/" + this.ano;

^ symbol: variable dia Funcionario.java:106: error: cannot find symbol return this.dia + "/" + this.mes + "/" + this.ano;

^ symbol: variable mes Funcionario.java:106: error: cannot find symbol return this.dia + "/" + this.mes + "/" + this.ano; ^ symbol: variable ano Funcionario.java:76: error: salario has private access in Funcionario System.out.println("Salario R$: " + this.empregados[i].s alario);

^ Funcionario.java:113: error: constructor Empresa in class Empresa cannot be appl ied to given types; Empresa empresa = new Empresa(); ^ required: String found: no arguments reason: actual and formal argument lists differ in length Funcionario.java:114: error: empregados has private access in Empresa empresa.empregados = new Funcionario[10]; ^ Funcionario.java:118: error: adciona(Funcionario) has private access in Empresa empresa.adciona(f1); ^ Funcionario.java:122: error: adciona(Funcionario) has private access in Empresa empresa.adciona(f2); ^ Funcionario.java:133: error: constructor Funcionario in class Funcionario cannot be applied to given types; Funcionario f1 = new Funcionario("Hugo"); ^ required: no arguments found: String reason: actual and formal argument lists differ in length Funcionario.java:135: error: cannot find symbol data.preencheData(1, 7, 2009); ^ symbol: method preencheData(int,int,int) location: variable data of type Data Funcionario.java:137: error: cannot find symbol f1.aumento(50); ^ symbol: method aumento(int) location: variable f1 of type Funcionario 13 errors

Alex ,

poste sua classe Data , preciso verifica-la

class Data {

/resto do código/

String getDataEntrada() { return this.dia + "/" + this.mes + "/" + this.ano; }

}

fiz algumas alterações e reduzi o numero de erros ... mais ainda não consegui resolver a parte da data

public class Funcionario {

    private String nome;
    private String departamento;
    private double salario;
    public Data dataEntrada;
    private String rg;

    public void recebeAumento (double aumento) {
        this.salario += aumento;
    }    
    public double getGanhoAnual () {
        return this.salario * 12;
    }
    public void mostra() {
        System.out.println("Nome: " + this.getNome());
        System.out.println("Departamento: " + this.getDepartamento());
        System.out.println("RG: " + this.getRg());
        System.out.println("Data de entrada: " + getDataEntrada());
        System.out.println("Salario atual: " + getSalario());
        System.out.println("Ganho Anual: " + this.getGanhoAnual());
        System.out.println("");
    }

    public double getSalario() {
        return this.salario;
    }
    public void setSalario (double salario) {
        this.salario = salario;
    }
    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 Data getDataEntrada() {
        return this.dataEntrada;
    }

    public void setDataEntrada (Data dataEntrada) {
        this.dataEntrada = dataEntrada;
    }
    public String getRg() {
        return this.rg;
    }    
    public String setRg(String rg) {
        this.rg = rg;
    }    

}

class Empresa {

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

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


    public void mostraEmpregados() {
        for (int i= 0; i< this.livre; i++) {
            System.out.println("Funcionario na posicao: " +i);
            System.out.println("Salario R$: " + this.empregados[i].getSalario());
            // inserir aqui pra mostrar outros atributos de empregados
            }
    }
    public void mostraTodasAsInformacoes() {
        for (int i=0; i<this.livre; i++) {
            System.out.println("Funcionario na posicao: " + i);
            this.empregados[i].mostra();
            }
    }
    public Funcionario getFuncionario (int posicao) {
        return this.empregados[posicao];
    }
    public Empresa(String cnpj) {
                this.cnpj = cnpj;
                this.empregados = new Funcionario[10];
            }

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


}

class Data {

String getDataEntrada() {
    return this.dia + "/" + this.mes + "/" + this.ano;
  }

}

/*
class TestaEmpresa {

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

        Funcionario f1 = new Funcionario();
        f1.setSalario(1000);
        empresa.adciona(f1);

        Funcionario f2 = new Funcionario();
        f2.setSalario(1700);
        empresa.adciona(f2);

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

class TestaFuncionario {

            public static void main(String[] args) {
                Funcionario f1 = new Funcionario("Hugo");
                f1.setSalario(100);
                f1.bonifica(50);
                f1.setDataEntrada(new Data(1, 7, 2009));

                f1.mostra();
            }
        }

Funcionario.java:57: error: missing return statement }

^ Funcionario.java:124: error: constructor Funcionario in class Funcionario cannot be applied to given types; Funcionario f1 = new Funcionario("Hugo"); ^ required: no arguments found: String reason: actual and formal argument lists differ in length Funcionario.java:126: error: cannot find symbol f1.bonifica(50); ^ symbol: method bonifica(int) location: variable f1 of type Funcionario Funcionario.java:127: error: constructor Data in class Data cannot be applied to given types; f1.setDataEntrada(new Data(1, 7, 2009)); ^ required: no arguments found: int,int,int reason: actual and formal argument lists differ in length 4 errors

solução!

Alex,

você enviou seu código completo ?

encontrei diversos erros nele . vamos lá

Classe Funcionário :

Tem um método setRG está com o seguinte assinatura :

public String setRg(String rg) {

quanto na verdade tem que ser :

public void setRg(String rg) {

Classe Data é necessário colocar os atributos e um construtor :

public class Data {
    private String dia;
    private String mes;
    private String ano;


    public Data(String dia, String mes, String ano) {

        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
    }



    String getDataEntrada() {
        return this.dia + "/" + this.mes + "/" + this.ano;
    }
}

Na Classe TestaFuncionario :

Voce está fazendo o seguinte :

Funcionario f1 = new Funcionario("Hugo");

mas na sua classe Funcionário não possui um construtor que receba um nome ,

então nesse casso , ou você faz um construtor na classe funcionário ou você chama o padrão que não passa nenhum valor .

também você está chamando um método que não existe na classe Funcionario que é 'bonifica(50)',

faça essas alterações , e se caso der erro , poste aqui para verificar .

fiz as alterações mais ainda estou recebendo um erro na parte da data

Funcionario.java:81: error: class Data is public, should be declared in a file n amed Data.java public class Data { ^ Funcionario.java:17: error: cannot find symbol System.out.println("Data de entrada: " + this.getDataEntrada());

^ symbol: method getDataEntrada() 2 errors

Alex ,

no método mostra troque :

f1.getDataEntrada

por

this.dataEntrada.getDataEntrada()

e na classe Data coloca o modificador public na Classe :

public class Data

faça esta alterações e vamos ver agora

só compila se eu remover o pubic da class Data ... o metodo mostra esta ok entendi o q estava fazendo de errado ao invocar o metodo.