Solucionado (ver solução)
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.