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

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

Não consigo cria uma new data e chamar os metodos de entradaFuncionario e o getFormataData. meu código completo esta assim:

public class Funcionario {

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

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

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

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

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

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

public String getDepartemento(){ return this.departamento; }

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

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

public void setDataEntrada (Data dataEntrada){ this.dataEntrada = dataEntrada; }

public Data getDataEntrada(){ return this.dataEntrada; }

void recebeAumento(double valorDoAumento){ this.salario += valorDoAumento; }

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

public void mostra(){ System.out.println("Seu nome é : " + this.nome); System.out.println("Sua indentidade é : " + this.rg); System.out.println("Seu departamento é : " + this.departamento); System.out.println("Voce ganha por mes : " + this.salario); System.out.println("Voce ganhou durante o ano : " + this.getCalculaGanhoAnual()); System.out.println("Sua data de entrada na empresa foi em : " + this.dataEntrada.getFormataData()); //System.out.print("dia" + this.dataEntrada.dia); //System.out.print("\nmes" + this.dataEntrada.mes); //System.out.print("\nano" + this.dataEntrada.ano); }

}

public class TestaFuncionario {

public static void main(String[] args) {

Funcionario f1 = new Funcionario(); f1.setNome("Waldir escouto pereira"); f1.setRg("118977120"); f1.setSalario(2500.0); f1.setDepartamento("Desenvolvedor");

System.out.println(f1.getSalario());

/*f1.calculaGanhoAnual(); System.out.println(f1.calculaGanhoAnual());/

/*f1.recebeAumento(2000); System.out.println(f1.salario);/

/*f1.calculaGanhoAnual(); System.out.println(f1.salario);/

f1.setDataEntrada = new Data(); // Criando uma data de entrada para o funcionario

//f1.dataEntrada.entradaFuncionario(01, 06, 2015); //System.out.println(f1.dataEntrada.dia); //System.out.println(f1.dataEntrada.mes); //System.out.println(f1.dataEntrada.ano);

//f1.mostra();

}

}

public class Empresa {

String nome; String cnpj; String endereco; Funcionario[] empregados;

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

void mostraEmpregados() { for (int i = 0; i < this.livre; i++) { System.out.println("Funcionário na posição: " + i); System.out.println(this.empregados[i].getNome()); System.out.println("Seu salario é R$" + this.empregados[i].getSalario());

} }

void mostraTodasAsInformacoes (){ for (int i = 0; i < this.livre; i++){ System.out.println("Funcionario na posicao : " + i); this.empregados[i].mostra(); } }

boolean contem (Funcionario f){ for(int i = 0; i < this.livre; i++){ if (f == empregados[i]){ System.out.println("Esse empregado trabalha na empresa"); return true; } } return false; }}

public class TestaEmpresa {

public static void main(String[] args) {

Empresa e1 = new Empresa(); e1.nome = "Animasom"; e1.cnpj = "120130140"; e1.endereco = "Rua Barata ribeiro 560 sala 201";

e1.empregados = new Funcionario[10]; //Criando um array de funcionarios

Funcionario f1 = new Funcionario(); //Criando um novo funcionario

f1.dataEntrada = new Data(); // Criando uma nova data para esse funcionario f1.dataEntrada.dia = 25; f1.dataEntrada.mes = 10; f1.dataEntrada.ano = 1980;

f1.setNome("Waldir Pereira da silva"); f1.setSalario(5000.0); f1.setRg("1176997120"); f1.setDepartamento("Desenvolvedor"); //f1.dataEntrada.entradaFuncionario(02, 06, 2015);

Funcionario f2 = new Funcionario();

f2.dataEntrada = new Data(); f2.dataEntrada.dia = 25; f2.dataEntrada.mes = 10; f2.dataEntrada.ano = 1979; //f2.dataEntrada.entradaFuncionario(25, 10, 1979); f2.setNome("Rachel"); f2.setSalario(3500.0);

e1.adiciona(f1); // Adicionando o funcionario f1 da empresa e1 no array de empregados e1.adiciona(f2);

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

//e1.mostraEmpregados();

e1.mostraTodasAsInformacoes();

e1.contem(f2);

}

}

public class Data {

int dia; int mes; int ano;

void entradaFuncionario(int dia, int mes, int ano){ //Criando o metodo da data de entrada de um funcionario this.dia = dia; this.mes = mes; this.ano = ano; }

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

}

}

6 respostas
  1. Amigo, vamos lá. Quando você estuda acesso modificadores você também tem que ter a noção de usa-los.

  2. Quando você define um atributo como private, e gera um Getter dele use esse getter quando for exibilo, da mesma maneira, use o setter quando for passar algo.

  3. Você não conseguiu usar os métodos porque eles não estão público, quando os métodos não estão públicos você precisa definir ele como public para usar-lo em outra classe.

  4. Cuidado com as chaves de fechamento de inicio e fim de uma classe, refiz seu código e vi muito isso.

Segue o seu código:

Funcionario:

public class Funcionario {

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

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

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

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

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

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

    public String getDepartemento() {
        return this.departamento;
    }

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

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

    public void setDataEntrada(Data dataEntrada) {
        this.dataEntrada = dataEntrada;
    }

    public Data getDataEntrada() {
        return this.dataEntrada;
    }

    void recebeAumento(double valorDoAumento) {
        this.salario += valorDoAumento;
    }

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

    public void mostra() {
        System.out.println("Seu nome é : " + this.getNome());
        System.out.println("Sua indentidade é : " + this.getRg());
        System.out.println("Seu departamento é : " + this.getDepartemento());
        System.out.println("Voce ganha por mes : " + this.getSalario());
        System.out.println("Voce ganhou durante o ano : " + this.getCalculaGanhoAnual());
        System.out.println("Sua data de entrada na empresa foi em : " + this.dataEntrada.getFormataData()); // System.out.print("dia"
                                                                                                            // +                                                                                                    // }
    }
}

Empresa:

class Empresa {
    String nome;
    String cnpj;
    String endereco;
    Funcionario[] empregados;

    int livre = 0;

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

    void mostraEmpregados() { 
        for (int i = 0; i < this.livre; i++) { 
            System.out.println("Funcionário na posição: " + i); 
            System.out.println(this.empregados[i].getNome()); 
            System.out.println("Seu salario é R$" + this.empregados[i].getSalario());
        }
    }

    void mostraTodasAsInformacoes (){ 
        for (int i = 0; i < this.livre; i++){ 
            System.out.println("Funcionario na posicao : " + i); 
            this.empregados[i].mostra(); 
            }

    }

    boolean contem (Funcionario f){ 
        for(int i = 0; i < this.livre; i++){ 
            if (f == empregados[i]){ 
                System.out.println("Esse empregado trabalha na empresa"); 
            }
            return true; 
            } 
        return false; 
    }
}

Data:

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

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

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

        }
    }

Análise e caso precise não deixe de entrar em contato! Espero ter ajudado.

Oi Felipe obrigado pelos ensinamentos mas continuo com duvida sobre como criar uma new Data na classe main do TestaFuncionario que seria essa logo abaixo

public class TestaFuncionario {

public static void main(String[] args) {

Funcionario f1 = new Funcionario(); f1.setNome("Waldir escouto pereira"); f1.setRg("118977120"); f1.setSalario(2500.0); f1.setDepartamento("Desenvolvedor");

f1.setDataEntrada(new Data(1, 7, 2015)); // AQUI NAO COMPILA

Voce poderia colocar a classe TestaFuncionario? Obrigado.

Define essa linha como protected

 protected Data dataEntrada;

E na testaFuncionario você faz isso:

f1.dataEntrada = new Data();
f1.dataEntrada.entradaFuncionario(04, 05, 94);; // AQUI COMPILA

Oi Felipe compilou!!! mas eu gostaria de aprender como seria com private Data dataEntrada;

solução!

Amigo, não há sentindo em passar um objeto Data através de um setter da classe funcionário, fica meio sem lógica essa ação. Aliás, acredito que você nunca vai usar isso, foge das boas práticas, o correto é passar pelo construtor da classe Data, onde cada classe no java é responsável por uma determinada ação, lembra? Boas práticas.

Se tem uma maneira de passar essa data pelo Setter, e depois settar ela la na classe data eu não sei, eu tentei passando parâmetros com os atributos das classe Data e não foi!

Bons estudos!

Ok! Obrigado pela ajuda Felipe.