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

Erro ao compilar (Ex.2 da Aula 5)

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

    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 seiRg(String rg) {
        this.rg = rg;
    }

    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("Salario: " + this.getSalario());
        System.out.println("Data de Entrada: " + this.dataEntrada.getFormatada());
        System.out.println("Rg: " + this.getRg());
        System.out.println("Salario Anual " + this.getGanhoAnual());

    }
}

class Data {
    int dia;
    int mes;
    int ano;

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

    public void setData (int dia, int mes, int ano) {
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
    }
}

class Empresa {
    String nome;
    Funcionario[] funcionarios;
    int livre;

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

    void mostraFuncionarios() {
        for (int i = 0; i < this.livre; i++) {
            System.out.println("Funcionario: " + i);
            System.out.println("Nome: " + this.funcionarios[i].nome);
            System.out.println("Departamento: " + this.funcionarios[i].departamento);
            System.out.println("Salario: " + this.funcionarios[i].salario);
            System.out.println("Data de Entrada: " + this.funcionarios[i].dataEntrada.getFormatada());
            System.out.println("Rg: " + this.funcionarios[i].rg);
            System.out.println("Salario Anual " + this.funcionarios[i].getGanhoAnual());
        }
    }

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 XYZ = new Empresa();
        XYZ.funcionarios = new Funcionario[10];

        Funcionario f1 = new Funcionario();
        f1.dataEntrada = new Data();
        f1.setNome = "Rodrigo Araujo";
        f1.setDepartamento = "T.I.";
        f1.setSalario = 1200.0;
        f1.setDataEntrada.setData(12, 06, 2015);
        f1.setRg = "12.345.678-9";
        XYZ.adiciona(f1);

        Funcionario f2 = new Funcionario();
        f2.dataEntrada = new Data();
        f2.setNome = "Pedro";
        f2.setDepartamento = "T.I.";
        f2.setSalario = 1500.0;
        f2.setDataEntrada.setData(21, 10, 2010);
        f2.setRg = "11.227.332-2";
        XYZ.adiciona(f2);

        Funcionario f3 = new Funcionario();
        f3.dataEntrada = new Data();
        f3.setNome = "Angela";
        f3.setDepartamento = "Compras";
        f3.setSalario = 2000.0;
        f3.setDataEntrada.setData(21, 05, 2008);
        f3.setRg = "09.998.110-2";
        XYZ.adiciona(f3);

        XYZ.funcionarios[0].mostra();
        XYZ.funcionarios[1].mostra();
        XYZ.funcionarios[2].mostra();
    }
}
4 respostas

Opa, qual o erro de compilação? Um detalhe interessante é que você tem atributos privados, mas está tentando usar diretamente.

Esqueci de descrever o erro. Aparecem 35, na verdade. To boiando nesse exercício. Alguém poderia descrever meu erro e me mostrar a solução por gentileza?

solução!

Olá Rodrigo,

Seu problema basicamente foi na hora de atribuir as variáveis para o funcionário que você criou, como você está utilizando métodos não será possível atribuir o valor como é feito com uma variável, por exemplo: f2.setNome = "Pedro";nesse caso deveria ser f2.setNome("Pedro");, não sei o quanto a minha alteração ficou fiel ao exercício, mas creio que te ajude a andar um pouco. também não alterei o funcionário f3, deixo essa tarefa para você.

Também fiz pequena modificações nas outras classes, como por exemplo, criei um contructor para a classe Data, deixando assim muito mais fácil de criar a data já passando como argumento. Segue a implementação:

Data.java

class Data {
    int dia;
    int mes;
    int ano;

    public Data (int dia, int mes, int ano) {
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
    }

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

    public void setData (int dia, int mes, int ano) {
        this.dia = dia;
        this.mes = mes;
        this.ano = ano;
    }

}

Empresa.java (Também fiz algumas modificações nessa classe)

package teste;

class Empresa {
    String nome;
    Funcionario[] funcionarios;
    int livre;

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

    void mostraFuncionarios() {
        for (int i = 0; i < this.livre; i++) {
            System.out.println("Funcionario: " + i);
            System.out.println("Nome: " + this.funcionarios[i].getNome());
            System.out.println("Departamento: " + this.funcionarios[i].getDepartamento());
            System.out.println("Salario: " + this.funcionarios[i].getSalario());
            System.out.println("Data de Entrada: " + this.funcionarios[i].getDataEntrada());
            System.out.println("Rg: " + this.funcionarios[i].getRg());
            System.out.println("Salario Anual " + this.funcionarios[i].getGanhoAnual());
        }
    }

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

Funcionario.java

package teste;

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

    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 setRg(String rg) {
        this.rg = rg;
    }

    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("Salario: " + this.getSalario());
        System.out.println("Data de Entrada: " + this.dataEntrada.getFormatada());
        System.out.println("Rg: " + this.getRg());
        System.out.println("Salario Anual " + this.getGanhoAnual());

    }
}

TestaEmpresa.java

package teste;


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

        Funcionario f1 = new Funcionario();
        f1.setDataEntrada(new Data(12, 06, 2015));
        f1.setNome("Rodrigo Araujo");
        f1.setDepartamento("T.I.");
        f1.setSalario(1200.0);
        f1.setDataEntrada(new Data(12, 06, 2015));
        f1.setRg("12.345.678-9");
        XYZ.adiciona(f1);

        Funcionario f2 = new Funcionario();
        f2.setDataEntrada(new Data(12, 06, 2015));
        f2.setNome("Pedro");
        f2.setDepartamento("T.I.");
        f2.setSalario(1500.0);
        f2.setDataEntrada(new Data(21, 10, 2010));
        f2.setRg("11.227.332-2");
        XYZ.adiciona(f2);

        XYZ.funcionarios[0].mostra();
        XYZ.funcionarios[1].mostra();
    }
}

Espero ter ajudado, qualquer dúvida poste aí no fórum que eu ou outras pessoas te ajudam, boa sorte nos estudos.

Obs.: Te aconselho a refazer a aula, com mais calma, ler os textos e pesquisar um pouco na internet, firmar esse conceito é muito importante para o avanço tanto na linguagem Java quanto me qualquer outra que utilize OO. Firme bem esse conceito, qualquer problema que você tenha com os conceitos de orientação a objetos abre um tópico aqui no fórum, sempre tem alguém pronto para ajudar.

Muito obrigado Joel!