Boa tarde amigos,
Estou com uma dúvida.
No exercício 4, o método getFuncionario é exemplificado da seguinte forma:
class Empresa {
// ...
public Funcionario getFuncionario (int posicao) {
return this.empregados[posicao];
}
}
Eu até consegui reproduzir as informações através do meu código abaixo:
package Exercícios;
class Empresa{
private String nome;
int cnpj;
public Funcionario[] funcionarios;
private int livre = 0;
public Funcionario getFuncionario(int posicao){
return this.funcionarios[posicao];
}
public String getNome(int posicao){
return this.funcionarios[posicao].getNome();
}
public double getSalario(int posicao){
return this.funcionarios[posicao].getSalario();
}
public void imprimeFuncionarios(){
for(int i = 0; i < 10; i++){
Funcionario funcionario = this.funcionarios[i];
if(funcionario == null) continue;
System.out.println(this.funcionarios[i].nome);
}
}
public void mostraEmpregados(){
for(int b = 0; b < this.funcionarios.length; b++){
System.out.println(this.funcionarios[b].nome);
}
}
public void adiciona(Funcionario f) {
this.funcionarios[livre] = f;
livre++;
}
public void mostraPosicaoLivre(){
for(int c = 0; c < this.livre; c ++){
System.out.println(this.livre);
}
}
public boolean contem(Funcionario f){
for(int i = 0; i < this.livre; i++){
if( this.funcionarios[i] == f){
return true;
}
}
return false;
}
}
class Data{
int dia;
int mes;
int ano;
public void preencherData(int dia, int mes, int ano){
this.dia = dia;
this.mes = mes;
this.ano = ano;
}
//@Override
//public String toString(){
// return dia + "/" + mes + "/" + ano;
String getFormatada() {
return this.dia + "/" + this.mes + "/" + this.ano;
}
}
class Funcionario{
private String nome;
private String departamento;
private double salario;
private int RG;
private Data dataDeEntrada;
public double getSalario(){
return this.salario;
}
public void setSalario(int s){
this.salario = s;
}
public void setNome(String f){
this.nome = f;
}
public String getNome(){
return this.nome;
}
public void recebeAumento(double valor){
this.salario += valor;
}
public double calculaGanhoAnual(){
return this.salario * 12;
}
public void mostra(){
System.out.println("Nome: " + this.nome);
System.out.println("Departamento: " + this.departamento);
System.out.println("Salario: " + this.salario);
System.out.println("Data de Entrada: " + this.dataDeEntrada.getFormatada());
System.out.println("RG: " + this.RG);
System.out.println("Ganho Anual: " + this.calculaGanhoAnual());
}
}
class TestaEmpresa{
public static void main(String[] args){
Empresa empresa = new Empresa();
empresa.funcionarios = new Funcionario[10];
// Cria 10 funcionarios no array empresa.funcionarios
for(int i = 0; i < empresa.funcionarios.length; i++){
empresa.funcionarios[i] = new Funcionario();
}
empresa.funcionarios[0].setNome("Vitor");
empresa.funcionarios[0].setSalario(1000);
// Invoca o método getNome (Mostra todos os nomes dos funcionarios dentro do Array)
for(int i = 0; i < empresa.funcionarios.length; i++){
if(empresa.getNome(i) == null)continue;
System.out.println(empresa.getNome(i));
}
// Invoca o método getSalario (Mostra os salarios de todos os funcionarios do Array)
for(int i = 0; i < empresa.funcionarios.length; i++){
if(empresa.getNome(i) == null)continue;
System.out.println(empresa.getFuncionario(i));
}
}
}
Só que trazendo os Funcionarios pelo método getFuncionario(), eu tenho o seguinte resultado:
run: Exercícios.Funcionario@15db9742 CONSTRUÍDO COM SUCESSO (tempo total: 0 segundos)
E trazendo pelo metodo getNome(), aparece o nome do Funcionario Vitor, e pelo getSalario(), aparece o salario 1000.
A minha dúvida é a seguinte:
Quando eu chamo um Funcionario do Array, na posição 0 por exemplo, é uma informação um pouco vaga certo ? Por isso ocorre esta mensagem "Exercícios.Funcionario@15db9742". Eu tenho que especificar qual o atributo que eu quero ver do Funcionario, certo ?
Att Vitor