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

Dúvida no Ex. 6 da Aula 3 - Começando com Orientação a objetos

C:\Users\Eduardo\Desktop>javac Empresa.java Empresa.java:72: error: cannot find symbol eduardo.dataEntrada = new Data(); ^ symbol: class Data location: class Empresa 1 error

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

void recebeAumento(double valorDeAumento){ this.salario += valorDeAumento; System.out.println ("salario de:"+salario); }

double calculaGanhoAnual(){ return this.salario*12; }

void mostra(){ System.out.println ("nome:"+this.nome); System.out.println ("departamento:"+this.departamento); System.out.println ("salario:"+this.salario); System.out.println ("entrada no Banco:"+this.entradaBanco); System.out.println ("RG:"+this.rg); System.out.println ("DATA DE ENTRADA:" + this.dataEntrada.dia +

"/"+this.dataEntrada.mes + "/" + this.dataEntrada.ano); }

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

void mostraData(int dia, int mes, int ano){ this.dia = dia; this.mes = mes; this.ano= ano; } } } class Empresa{ public static void main(String args[]){

Funcionario eduardo = new Funcionario(); eduardo.nome = "Eduardo Wilhelm"; eduardo.departamento = "RH"; eduardo.salario = 100.0; eduardo.entradaBanco = "05/05/93"; eduardo.rg = "12345";

eduardo.recebeAumento(50.0);

eduardo.mostra();

System.out.println("ganho anual:" + eduardo.calculaGanhoAnual());

Funcionario marlene = new Funcionario(); marlene.nome = "Marlene Willhelm"; marlene.departamento = "Vendas"; marlene.salario = 150.0; marlene.entradaBanco = "28/06/55"; marlene.rg = "54321";

marlene = eduardo;

if (marlene == eduardo){ System.out.println ("iguais"); }else{ System.out.println ("diferentes"); }

eduardo.dataEntrada = new Data(); eduardo.dataEntrada.mostraData(1, 2, 2006);

eduardo.mostra();

} }

8 respostas

Para voce criar um Objeto do Tipo Data tem que:

Data data = new Data();

Segue abaixo a minha classe Data e Funcionario e Principal que conem o metodo main como exemplo:

class Data{

    int dia;
    int mes;
    int ano;

    public Data(){}

    public Data(int dia, int mes, int ano){
        setData(dia, mes, ano);
    }

    public void setData(int dia, int mes, int ano){
        if(validaData(dia, mes, ano)){
            this.dia = dia;
            this.mes = mes;
            this.ano = ano;
        }else{
            System.out.println("A data informada imvalida");
        }
    }

    public String getData(){

        return dia+"/"+mes+"/"+ano;
    }

    private boolean validaData(int dia, int mes, int ano){
        if (dia <= 0 || mes <= 0) {
            return false;
        }

        int ultimoDiaDoMes = 31; // por padrao são 31 dias

        if (mes == 4 || mes == 6 || mes == 9 || mes == 11 ) {
            ultimoDiaDoMes = 30;
        }else if(mes == 2){
            if(ano % 4 == 0){
                ultimoDiaDoMes = 29;
            }else{
                ultimoDiaDoMes = 28;
            }
        }

        if(dia > ultimoDiaDoMes){
            return false;
        }

        return true;
    }
}

Classe Funcionario:

class Funcionario{

    private static int identificador = 0;

    private int id;
    private String nomeDoFuncionario;
    private String departamentoOndeTrabalha;
    private double salario;
    private Data dataDeEntradaNoBanco;
    private String rg;

    public Funcionario(){
        Funcionario.identificador++;
        this.id = Funcionario.identificador;
    }

    public Funcionario(String nomeDoFuncionario){
        this.nomeDoFuncionario = nomeDoFuncionario;
        Funcionario.identificador++;
        this.id = Funcionario.identificador;
    }

    public void setNomeDoFuncionario(String nome){
        this.nomeDoFuncionario = nome;
    }

    public String getNomeDoFuncionario(){
        return this.nomeDoFuncionario;
    }

    public void setDepartamentoOndeTrabalha(String departamento){
        this.departamentoOndeTrabalha = departamento;
    }

    public String getDepartamentoOndeTrabalha(){
        return this.departamentoOndeTrabalha;
    }

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

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

    public void setDataDeEntradaNoBanco(Data data){
        this.dataDeEntradaNoBanco = data;
    }

    public String getDataDeEntradaNoBanco(){
        return dataDeEntradaNoBanco.getData();
    }

    public void setRG(String rg){
        this.rg = rg;
    }

    public String getRG(){
        return this.rg;
    }

    public void recebeAlmento(double valorDoAlmento){
        this.salario += valorDoAlmento;
    }

    public void mostra(){
        System.out.println("Identificador: "+this.getId());
        System.out.println("Funcionario: "+this.nomeDoFuncionario);
        System.out.println("Departamento: "+this.departamentoOndeTrabalha);
        System.out.println("Salario: "+this.salario);
        System.out.println("Admissao: "+this.dataDeEntradaNoBanco.getData());
        System.out.println("RG: "+this.rg);
        System.out.println("Ganho Anual: "+getGanhoAnual());
        System.out.println("");
    }

    public double getGanhoAnual(){
        return salario * 12;
    }

    public static int getIdentificador(){
        return Funcionario.identificador;
    }

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

classe Princiapl.java

class Principal{
    public static void main(String[] args){
        Empresa empresa = new Empresa(50);
        Funcionario funcionario;
        Data data;

        empresa.setNome("Banco do Brasil");
        empresa.setCnpj("11.123.456/0001-12");

        data = new Data();
        data.setData(6,10,2014);

        funcionario = new Funcionario();
        funcionario.setNomeDoFuncionario("Lendro Torres");
        funcionario.setRG("004553045 SSP/SP");
        funcionario.setSalario(2000);
        funcionario.setDepartamentoOndeTrabalha("Caixa");
        funcionario.setDataDeEntradaNoBanco(data);

        empresa.adiciona(funcionario);

        data = new Data();
        data.setData(4,9,2015);

        funcionario = new Funcionario();
        funcionario.setNomeDoFuncionario("Marcos Ricardo Rodrigues");
        funcionario.setRG("001441045 SSP/MS");
        funcionario.setSalario(1700);
        funcionario.setDepartamentoOndeTrabalha("TI");
        funcionario.setDataDeEntradaNoBanco(data);

        empresa.adiciona(funcionario);

        empresa.mostraTodasAsInformacoes();

        if(empresa.contem(funcionario)){
            System.out.println("Contem");
        }else{
            System.out.println("Nao Contem");
        }
    }
}

Cuidado para nao se confundir, pois minhas classes tem varios metodos porque ja cheguei ao fim do curso primeiro passo

solução!

Esta compilando, só dei uma arrumada no seu código

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

    double recebeAumento(double valorDeAumento){
        return this.salario += valorDeAumento; 
    }

    double calculaGanhoAnual(){
        return this.salario*12; 
    }

    void mostra() {
     System.out.println ("nome:"+this.nome);
     System.out.println ("departamento:"+this.departamento); 
     System.out.println ("salario:"+this.salario); 
     System.out.println ("entrada no Banco:"+this.entradaBanco);
     System.out.println ("RG:"+this.rg);
     System.out.println ("DATA DE ENTRADA:" + this.dataEntrada.dia +

    "/"+this.dataEntrada.mes + "/" + this.dataEntrada.ano);
    }
}
class Data{
    int dia; int mes; int ano;

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

} 
class Empresa{ 
    public static void main(String args[]){

        Funcionario eduardo = new Funcionario();
         eduardo.nome = "Eduardo Wilhelm";
         eduardo.departamento = "RH";
         eduardo.salario = 100.0;
         eduardo.entradaBanco = "05/05/93";
         eduardo.rg = "12345";

        eduardo.recebeAumento(50.0);

        System.out.println("ganho anual:" + eduardo.calculaGanhoAnual());



        Funcionario marlene = new Funcionario();
         marlene.nome = "Marlene Willhelm";
         marlene.departamento = "Vendas";
         marlene.salario = 150.0;
         marlene.entradaBanco = "28/06/55";
         marlene.rg = "54321";



        if (marlene == eduardo){ 
        System.out.println ("iguais");
        }else{ 
        System.out.println ("diferentes"); 
        }

        eduardo.dataEntrada = new Data();
        eduardo.dataEntrada.mostraData(1, 2, 2006);

        eduardo.mostra();

        marlene.mostra();

    } 
}

muito obrigado! :D

Para um melhor entendimento, achei o meu código-fonte do Ex.06, e vou compartilhar com vocês, pois está mais fácil o entendendo.

Segue abaixo minhas classes:

Data.java

class Data{

    int dia;
    int mes;
    int ano;

    void setDia(int dia){
        this.dia = dia;
    }

    void setMes(int mes){
        this.mes = mes;
    }

    void setAno(int ano){
        this.ano = ano;
    }

    String getData(){
        return dia+"/"+mes+"/"+ano;
    }
}

Funcionario.java

class Funcionario{

    String nomeDoFuncionario;
    String departamentoOndeTrabalha;
    double salario;
    Data dataDeEntradaNoBanco;
    String rg;

    void setNomeDoFuncionario(String nome){

        this.nomeDoFuncionario = nome;
    }

    void setDepartamentoOndeTrabalha(String departamento){

        this.departamentoOndeTrabalha = departamento;
    }

    void setSalario(double valorSalario){

        this.salario = valorSalario;
    }

    void setDataDeEntradaNoBanco(Data data){

        this.dataDeEntradaNoBanco = data;
    }

    void setRG(String rg){

        this.rg = rg;
    }

    void recebeAlmento(double valorDoAlmento){

    }

    void mostra(){

        System.out.println("Funcionario: "+this.nomeDoFuncionario);
        System.out.println("Departamento: "+this.departamentoOndeTrabalha);
        System.out.println("Salario: "+this.salario);
        System.out.println("Admissao: "+this.dataDeEntradaNoBanco.getData());
        System.out.println("RG: "+this.rg);
        System.out.println("Ganho Anual: "+calculaGanhoAnual());
        System.out.println("");
    }

    double calculaGanhoAnual(){

        return salario * 12;
    }
}

TestaFuncionario.java

class TestaFuncionario{

    public static void main(String[] args){

        Data data = new Data();

        Funcionario funcionario1 = new Funcionario();

        Funcionario funcionario2 = funcionario1;

        data.setDia(5);
        data.setMes(7);
        data.setAno(1985);

        funcionario1.setNomeDoFuncionario("Marcos Ricardo Rodrigues");
        funcionario1.setDepartamentoOndeTrabalha("Tecnologia da Informacao");
        funcionario1.setRG("001441045 SSP/MS");
        funcionario1.setSalario(1200.0);
        funcionario1.setDataDeEntradaNoBanco(data);
        funcionario1.recebeAlmento(500.0);
        funcionario1.mostra();

        data.setDia(16);
        data.setMes(4);
        data.setAno(1989);

        funcionario2.setNomeDoFuncionario("Tamiris Rodrigues da Silva");
        funcionario2.setDepartamentoOndeTrabalha("Juridico");
        funcionario2.setRG("001441045 SSP/MS");
        funcionario2.setSalario(5000.0);
        funcionario2.setDataDeEntradaNoBanco(data);
        funcionario2.recebeAlmento(1000.0);
        funcionario2.mostra();

        if(funcionario1 == funcionario2){

            System.out.println("iguais");
        }else{

            System.out.println("diferentes");
        }

    }
}

Muito bom, mas como voce conseguiu utilizar o objecto Empresa se a classe empresa nao foi existe?

Neste segundo código não existia ainda a Classe empresa, mais se refere ao primeiro código que aqui postei, realmente esqueci de colocar o código da classe empresa. Em tempo segue abaixo o código do meu arquivo:

Empresa.java

class Empresa{
    private String nome;
    private String cnpj;
    private Funcionario[] funcionarios;
    private int posicao = 0;

    public Empresa(int tamanhoDoArray){
        this.funcionarios = new Funcionario[tamanhoDoArray];
    }

    public void setNome(String nome){
        this.nome = nome;
    }

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

    public void setCnpj(String cnpj){
        this.cnpj = cnpj;
    }

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

    public void setFuncionarios(Funcionario[] funcionarios){
        this.funcionarios = funcionarios;
    }

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

    public void mostraEmpregados(){
        System.out.println("Empresa: "+nome);
        System.out.println("CNPJ: "+cnpj);
        System.out.println("");

        for(int i = 0; i < this.posicao; i++){
            System.out.println("Nome do Funcionario: "+this.funcionarios[i].getNomeDoFuncionario());
            System.out.println("RG: "+this.funcionarios[i].getRG());
            System.out.println("Salario: "+this.funcionarios[i].getSalario());
            System.out.println("Departamento: "+this.funcionarios[i].getDepartamentoOndeTrabalha());
            System.out.println("Data de Entrada no Banco: "+this.funcionarios[i].getDataDeEntradaNoBanco());
            System.out.println("");
        }
    }

    public void mostraTodasAsInformacoes(){
        System.out.println("Empresa: "+nome);
        System.out.println("CNPJ: "+cnpj);
        System.out.println("");

        for(Funcionario f : this.funcionarios){
            if(f == null) continue;
            f.mostra();
        }
    }

    boolean contem(Funcionario f){
        for(Funcionario fun : this.funcionarios){
            if(fun.getRG() == f.getRG() ){
                return true;
            }
        }
        return false;
    }
}

Obrigada. excelente trabalho.