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

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

Boa Noite

Pessoal preciso de uma explicação pois estou meio perdido , não entendi muito bem esses dois trechos de código:

Qual seria a utilidade não entendi deste trecho:

    public Funcionario getFuncionario(int posicao){
        return this.empregados[posicao];
    }

Este também porque o cnpj do tipo Empresa ?

    public Empresa(String cnpj) {
                          this.cnpj = cnpj;
                          this.empregados = new Funcionario[10];
}

Obrigado

7 respostas
/*Primeiramente o 'this' refere-se a um atributo da classe.*/

/**
 Esse é um método. Ao que parece retorna um funcionário de um
vetor de empregados */
 public Funcionario getFuncionario(int posicao){
        return this.empregados[posicao];
    }


/** Esse é um construtor de uma classe chamada Empresa 
 que deveria ter um problema ao se atribuir um funcionário a 
uma lista de empregados.
*/
   public Empresa(String cnpj) {
                          this.cnpj = cnpj;
                          this.empregados = new Funcionario[10];
}

Olá Ataide,

para complementar o que o Carlos já explicou muito bem acima:

O método getFuncionario() é usado quando você quiser saber qual funcionário está em um posição especifica do array empregados[] dai você passa como parâmetro o numero da posição que está interessado em saber, algo do tipo: teste.getFuncionario(5), o resultado dessa invocação será o conteúdo da posição 6 do array empregados[].

Já o public Empresa(String cnpj){} vai obrigar a quem instanciar um objeto da classe Empresa a sempre informar um cnpj e automaticamente já será criado um array empregados com 10 posições.

Ataide, boa noite.

Ficou alguma dúvida em relação ao assunto? Irei fechar o tópico. Caso tenha mais alguma dúvida, não hesite em entrar em contato.

solução!
class Funcionario {

    private String nome;
    //private String departamento;
    private double salario;
    //private String dataEntrada;
    //private String cpf;
    //private String dataFuncionario;

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

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

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

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

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

    public double calculaGanhoAnual(double salarioMensal) {

        return salarioMensal * 12;
    }

}

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

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

    }
}

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

    public Funcionario getFuncionario(int posicao){
        return this.empregados[posicao];
    }

    public Empresa(String cnpj) {
        this.cnpj = cnpj;
        this.empregados = new Funcionario[10];
    }

    public void setNomeEmpresa(String nomeEmpresa) {
        this.nomeEmpresa = nomeEmpresa;
    }

    /*public void setCNPJ(String CNPJ) {
        this.cnpj = CNPJ;
    }*/

    public String getNomeEmpresa() {
        return this.nomeEmpresa;
    }

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

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

    public void mostrarFuncionarioEmpresa() {
        for (int i = 0; i < this.empregados.length; i++) {
            Funcionario func = this.empregados[i];
            if (func == null) {
                continue;//System.out.println("Posicao Vazia");
            } else {
                System.out.println("Nome: " + func.getNomeFuncionario() + ", Salario: "  + func.getSalario());
            }
        }
    }

    public boolean contem(Funcionario f) {
        for (int i = 0; i < this.empregados.length; i++ ) {
            Funcionario func = this.empregados[i];

            if (func == null) {
                continue;
            } else {        
                if (f.getNomeFuncionario() == func.getNomeFuncionario() && f.getSalario() == func.getSalario()) {
                    System.out.println("Achou");
                    return true;
                } 
            }
        }
        return false;
    }

}

class TestaEmpresa {

    public static void main(String args[]){

        Empresa empresa01 = new Empresa();
        empresa01.setNomeEmpresa("Indra");
        empresa01.Empresa("99.999.999/9999-99");

        empresa01.empregados = new Funcionario[10];

        //cadastro de funcionarios

        for (int j=0; j<5; j++){ 
            Funcionario f = new Funcionario();
            f.setNomeFuncionario("Funcionario" + j);
            f.setSalario(500.0 + j);
            empresa01.adiciona(f);
        }

        empresa01.mostrarFuncionarioEmpresa();

    }
}

Gostaria de saber porque estou recebendo o seguinte erro:

TestaEmpresa.java:117: error: constructor Empresa in class Empresa cannot be applied to given types; Empresa empresa01 = new Empresa(); ^ required: String found: no arguments reason: actual and formal argument lists differ in length TestaEmpresa.java:119: error: cannot find symbol empresa01.Empresa("99.999.999/9999-99"); ^ symbol: method Empresa(String) location: variable empresa01 of type Empresa 2 errors

Ops, pode desconsiderar, o problema ocorria devido a falta do void.

public void Empresa(String cnpj) { this.cnpj = cnpj; this.empregados = new Funcionario[10]; }

Ok.