Duvida Java Basica - Somente preciso adicionar varias pessoas em 1 variavel de objeto

8 respostas
S

Boa Noite a todos, sou programador Cobol, PL/I e Natural, então objetos pra mim são as coisas que deixo em cima da minha mesa.

Tirando as brincadeiras de lado, meu professor da pós pediu para fazer um programa que tivesse 1 classe de funcionarios, e a principal, e que fossemos adicionando novos funcionarios nessa classe.

“Consegui” fazer essa classe só que estou com problema para adiconar novos “elementos” nessa classe.

Toh com a vista cansada já de ler sobre os iterators da vida, e dos arraylist e collections, mas infelizmente ainda não consegui intender essa porcaria …

O que eu quero realmente eh a coisa mastigada, uma vez na vida, para entender com que esse arraylist funciona, e sei que toh pedindo demais da conta porque eu soh consigo aprender atraves de exemplos …

Se ninguem tiver saco (porque sei que é chato mesmo) pr ajudar, e puder indicar um ótimo tutorial, seria grato também.

/*
* Main.java
*
* Created on 4 de Agosto de 2005, 21:34
*/

package primeirotrabalhopratico;

/**
*
* @author  Samuel
*/
public class Main {
   
    /** Creates a new instance of Main */
    public Main() {
    }
   
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Funcionario Func = new Funcionario();
        System.out.println("Que coisa, netbeans é muito mais fácil");
        System.out.print(" Agora vou associar um nome");
        Func.SetNome("Samuca");
        System.out.print("Agora vamos ver o que sai,: " + Func.GetNome());
       
    }
   
}

class Funcionario{
   
   private String Nome, cpf, DataAdmissao;
   private int Dependentes;
   private String Funcao;
   
   public void SetNome(String Nome){
       this.Nome = Nome;
   }
   public String GetNome(){
       return this.Nome;
   }
   public void SetCPF(String CPF){
       this.cpf = CPF;
   }
   public String GetCPF(){
       return this.cpf;
   }
}

8 Respostas

S

minha pergunta eh a seguinte, eu preciso adicionar varios funcionarios, ou seja, quero adicionar 5 por exemplo.

Teria que fazer 5 vezes isso ?

Funcionario f = new Funcionario(bla bla bla); ?

Funcionario f = new Funcionario(bla bla bla);

Funcionario f = new Funcionario(bla bla bla);

Funcionario f = new Funcionario(bla bla bla);

Funcionario f = new Funcionario(bla bla bla);

Mas sempre quando eu fizer isso eu vou perder a referencia deles nao ? Porque ele vai salvar por cima do mesmo enderecamento inicial do objeto.

Queria mais ou menos criar 1 collection desses objetos, ou seja, como se fosse 1 array …

ajuda ai please

R

Nesse caso você necessita de uma collection

Collection funcionarios = new ArrayList();

funcionarios.add(new Funcionario(bla bla bla1));
funcionarios.add(new Funcionario(bla bla bla2));
funcionarios.add(new Funcionario(bla bla bla3));
funcionarios.add(new Funcionario(bla bla bla4));
funcionarios.add(new Funcionario(bla bla bla5));

E para varrer:

Iterator it = funcionarios.iterator();
Funcionario fun = null;

while(it.hasNext()){
fun = (Funcionario)it.next(); 
System.out.println(fun.getNome());
}

Resumindo, collections.

Valeu

:smiley:

S

Rafaelprp:
Nesse caso você necessita de uma collection

Collection funcionarios = new ArrayList();

funcionarios.add(new Funcionario(bla bla bla1));
funcionarios.add(new Funcionario(bla bla bla2));
funcionarios.add(new Funcionario(bla bla bla3));
funcionarios.add(new Funcionario(bla bla bla4));
funcionarios.add(new Funcionario(bla bla bla5));

E para varrer:

Iterator it = funcionarios.iterator();
Funcionario fun = null;

while(it.hasNext()){
fun = (Funcionario)it.next(); 
System.out.println(fun.getNome());
}

Resumindo, collections.

Valeu

:smiley:

obrigado

R

Que bom que ajudou.

Abraço, :smiley:

zirocool

Estou com uma dúvida semelhante a essa.

package br.unisc.Exer1;

/**
 * @author Misael Silveira
 *
 */
public class Pessoa {
	private String nome;
	private int idade;
	private String endereco;
	
	public Pessoa() {
		nome = null;
		endereco = null;
		idade = 0;
	}
	
	/**
	 * 
	 * @param nome
	 * @param idade
	 * @param endereco
	 */
	public Pessoa(String nome, int idade, String endereco) {
		
		setNome(nome);
		setIdade(idade);
		setEndereco(endereco);
	}
	
	/**
	 * 
	 * @return String
	 */
	public String getEndereco() {
		return endereco;
	}
	
	/**
	 * 
	 * @param endereco
	 */
	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}
	/**
	 * 
	 * @return int
	 */
	public int getIdade() {
		return idade;
	}
	
	/**
	 * 
	 * @param idade
	 */
	public void setIdade(int idade) {
		this.idade = idade;
	}

	/**
	 * 
	 * @return String
	 */
	public String getNome() {
		return nome;
	}
	
	/**
	 * 
	 * @param nome
	 */
	public void setNome(String nome) {
		this.nome = nome;
	}	
	
}
import br.unisc.Exer1.*;
import javax.swing.JOptionPane;

public class TestePessoa {
	
	public static void main(String args[]) {
		
		Pessoa[] pessoa;
		String auxStr = null;
		//int auxInt = 0;
		
		pessoa = new Pessoa[5];
		
		for( int i = 0; i < pessoa.length; i++ ) {
			auxStr = JOptionPane.showInputDialog(
					"Digite o nome da " + (i+1) + "ª pessoa: " );
			pessoa[i].setNome( auxStr );
			
			auxStr = JOptionPane.showInputDialog(
					"Digite a idade da " + (i+1) + "ª pessoa: " );
			pessoa[i].setIdade( Integer.parseInt( auxStr ) );
			
			auxStr = JOptionPane.showInputDialog(
					"Digite o endereço da " + (i+1) + "ª pessoa: ");
			pessoa[i].setEndereco( auxStr );
		}
		
		for( int i = 0; i < pessoa.length; i++ ) {
			auxStr += "Nome: " + pessoa[i].getNome() + "\n" + 
					  "Idade: " + pessoa[i].getIdade() + "\n" +
					  "Endereço: " + pessoa[i].getEndereco() + "\n\n";
		}
		
		JOptionPane.showMessageDialog( null, auxStr );		
	}
}

Eu preciso ler um vetor composto com 5 objetos da classe Pessoas.

A maneira que eu fiz está lançando uma excessao...
Gostaria que alguém pudesse me dá uma luz... :)

zirocool

Problema resolvido, faltou soh instanciar a classe pra cada referência do array…
Faltou isso no meu for

for( int i = 0; i < pessoa.length; i++ ) { pessoa[i] = new Pessoa(); //segue o resto do código anterior

zirocool

Se eu quisesse ordenar esse array pela idade do cara, como poderia fazer isso, sem ter que criar um novo metodo de ordenaçao?
Existe alguma coleção que faz o ordenamento por um determinado “campo”?

Rafael_Steil

Sim. escreva um Comparator. Veja em

http://www.sleepycat.com/jedocs/GettingStartedGuide/comparator.html
java.sun.com/j2se/1.4.2/docs/api/java/util/Comparator.html
http://www.developer.com/tech/article.php/862991

Rafael

Criado 7 de agosto de 2005
Ultima resposta 13 de ago. de 2005
Respostas 8
Participantes 4