Desenvolvendo meu primeiro projeto em JAVA

11/01/2012

0

SEEK estive ausente esses dias e estarei novamente apartir de amanhã, juro que perdi um pouco do rumo que tinha tomando desde o sábado... Vamos deixar de conversa mole e vamos ao que interessa... Como você me intimou, primeiro tenho que ler bastante pra evitar fazer algo estruturado numa ambiente orientado a objeto, entendi bem, só tem umas coisas que era complexas pra burro e não teve jeito(mas também achei que aquilo era coisa bem avançada)... Pelo que eu vi, o jeito é fazer pelo console(bem diferente comparado ao Shell do Python(tela preta)), só que eu tô com uma ideia desgraçada na cabeça que eu posso avançar já pra GUI(devo estar ficando louco pra poder desenvolver alguma coisa legal(clicável eu acho kkkkkk) me da um norte cara... Eu sou um cara que tem muita força de vontade só que sem muitas ideias(tenho que mudar isso urgente), a unica ideia que tenho é passar meu projeto do Python pra Java, e logo com GUI... Enfim eu acho que posso e não tenho dúvidas, não sei de tudo, mais gosto de estudar e fazer na hora, to afim de tentar meter a cara no negocio difícil sem medo de errar(até por que ainda estou estudando) me ajuda cara? Tô pensando em desenhar o programa(como ficaria a interface), ver os nomes dos JAlgumaCoisa(componentes que irei usar) para estudar mais sobre eles... e acho que a parada das classes já ta bem fixada na minha cabeça... ME AJUDA?! PS: Num sei se você é professor ou se já é um cara fodão da área sei que você pode me ajudar demais =D enfim... Qualquer coisa serve! Vlw aguadando... [img]http://javafree.uol.com.br/files_user/files/7/51/6E/challenge.jpg[/img]
Murilo Lopes

Murilo Lopes

Responder

Post mais votado

27/01/2012

[quote="Murilo Lilo"]Por que:
p.addTelefone("1234-5678");
? Se p(pessoa) só tem como parâmetro o nome como eu vou add telefone?
[img]http://javafree.uol.com.br/forum/images/smiles/tantan.gif[/img]

Luciano Cargnelutti

Luciano Cargnelutti
Responder

Mais Posts

18/01/2012

Luciano Cargnelutti

Hahahhahaha! Murilo, se quiser acho q vc pode deixar o toString() pra depois. É mais simples do que vc imagina, mas acho que 1 semana de Java é pouco para realmente entender o objetivo dele... EDIT: Pare de editar minha msg!! >< EDIT: Não paro não :D
Responder

19/01/2012

Luciano Cargnelutti

Eita... vamos voltar ao trabalho, onde estávamos mesmo? Falta fazer o Procurar... posto já o código!
Responder

19/01/2012

Luciano Cargnelutti

package ListaPackage;

import java.util.ArrayList;
import java.util.Scanner;

public class Agenda{

	private ArrayList<Pessoa> pessoas;
	private Scanner scanner;
	
	public boolean existe(String telefone){
		int i=0;
		boolean tem = true;
		for (Pessoa p: pessoas){
			if (p.getTelefone().equals(telefone) == true){
				i++;
			}
		}
			if (i==0){tem = false;}
			if (i>0){tem = true;}
		return tem;
	}
	
	public void apagar(){
		System.out.println("Digite o nome que deseja apagar:");  
	    String nome = scanner.nextLine();
	    for (Pessoa p : pessoas)
	    	if(p.getNome().equals(nome)){  
	            pessoas.remove(p);
	            break;
	    	}
		System.out.println("Cadastro apagado com sucesso!");
		msgVoltar();
	}
	
	public void listar(){
		int a = pessoas.size();
		System.out.println("A agenda tem "+a+" número(s) cadastrado(s)!");
		System.out.println("===========================");
		System.out.println("Nome		Telefone		Email");
		for (Pessoa p : pessoas)
			System.out.println(p);
		System.out.println("===========================");
		msgVoltar();
	}
	
	public void procurar(){
		System.out.println("Digite o nome que deseja apagar:");  
	    String nome = scanner.nextLine();
	    for (Pessoa p : pessoas)
	    	if(p.getNome().equals(nome)){  
	    		System.out.println(p);
	    	}
		msgVoltar();
	}
	
	public void msgVoltar(){
		System.out.println("Tecle Enter para voltar!");
		String opc = scanner.nextLine();
	}

	public void cadastrar(){		
		System.out.println("Formulário de cadastro:");
		System.out.println("Digite o nome:");  
		String nome = scanner.nextLine();
		System.out.println("Digite o telefone:");  
		String telefone = scanner.nextLine();
		System.out.println("Digite o email:");  
		String email = scanner.nextLine();
	    if (existe(telefone) == false){
	    	Pessoa pessoa = new Pessoa(nome, telefone, email);
		    pessoas.add(pessoa);
		    System.out.println("Cadastro realizado com sucesso!");
		    msgVoltar();	    	
	    }else{
	    	System.out.println("Número já cadastrado, favor tente outro número!");
	    	msgVoltar();
	    }
	}
	
	public void sair(){
	}
		
	public void menu(){
		int opc;
		do{
			System.out.println("=================");
			System.out.println("Agenda Telefônica");
			System.out.println("=================");
			System.out.println("1 - Cadastrar");
			System.out.println("2 - Procurar");
			System.out.println("3 - Listar todos");
			System.out.println("4 - Apagar");
			System.out.println("0 - Sair");
			System.out.println("==>");
			
			opc = Integer.parseInt(scanner.nextLine()); 
			
			switch (opc){
				case 1:
					cadastrar();
					break;
				case 2:
					procurar();
					break;
				case 3:
					listar();
					break;
				case 4:
					apagar();
					break;
			}
			
		}while(opc != 0);
	}

	
	public Agenda(){
		this.pessoas = new ArrayList<Pessoa>();
		this.scanner = new Scanner(System.in);
	}
	
}
Pronto, tá aí. Fiz algumas alterações: Como se trata de uma agenda telefônica, pode existir vários nomes iguais, porem, com números diferente, logo, o método de verificação agora, verifica se o telefone já existe, permitindo o cadastro de pessoas com o mesmo nome. O método procurar encontra apenas os nomes conforme for digitado, ele não faz uma busca "detalhada", por exemplo, se eu digitar Murilo, vai aparecer apenas os cadastros com o nome Murilo, ele método procurar não tem o poder de procurar quem tenha "rilo" no nome por exemplo, não sei o nome disso em java, assim que descobrir implementarei ele nesse projeto! Pronto galera(SEEK, mas precisamente), tá ai, fraquinho já que eu me preocupei mais com as funcionalidades do que com a boniteza, qualquer crítica, elogio, pedrada será bem vindo. Aguardo a avaliação de vocês, ficou legal?
Responder

19/01/2012

Luciano Cargnelutti

Pow cara, ficou muito bom! Nem da pra acreditar que você começou em java a tão pouco tempo! conheço gente que conhece java a muito mais tempo, eu passei esse exercício da agenda 2 semanas antes do que eu passei pra você, e ainda não conseguiram fazer nem o cadastrar! Parabens mesmo cara! Agora, ta pronto pra ir adicionando funcionalidades nessa agenda até ela ficar fodástica?
Responder

19/01/2012

Luciano Cargnelutti

[img]http://javafree.uol.com.br/files_user/files/7/51/6E/challenge.jpg[/img]
Responder

19/01/2012

Luciano Cargnelutti

Bora partir para uma interface gráfica JOptionPane.
Responder

19/01/2012

Luciano

Então, primeiro de tudo: apague aquele método sair que está sobrando. agora, faça uma nova funcionalidade para a sua agenda: Alterar Alterar deixa o usuário procurar alguém pelo nome, e depois alterar o telefone ou o email dessa pessoa.
Responder

19/01/2012

Luciano Cargnelutti

Mas se tem vários nomes? Não é melhor pegar pelo telefone? No "for" do método "Procurar" ele não tem break, se tiver ele vai parar no primeiro que achar e pode não ser o da pessoa iai? PS: Só um troll mesmo pra já meter bronca xD
Responder

19/01/2012

Luciano Cargnelutti

Tive uma ideia, fala nada não, vou tentar fazer do jeito que imaginei, vai ser mais difícil mas, vai mostrar que eu to me ligando bem nas coisas, porem, só quando eu voltar da academia, FUI!
Responder

20/01/2012

Luciano Cargnelutti

Sorry SEEK a net caiu ontem e só voltou hoje¬¬ Quebrei a cara com minha ideia(pensei em fazer algo difícil, não impossível), era a seguinte: A pessoa digitaria o nome de quem quer alterar os dados, logo apareceriam vários, se fosse o caso, esses vários seriam numerado por um contador colocado no "IF" do "FOR" até ai eu consegui, só que é o seguinte... Depois de listar e numerar os cadastros com os nomes iguais ele teria que escolher uma opção(o número dado aquele nome) para começar a edição só que dai eu não passei, se a sua ideia era essa bom senão você acha que devo continuar com essa ou fazer do seu jeito(não sei qual)? Segue o código:
public void alterar(){
		int cont = 0;
		int opc;
		System.out.println("Digite o nome que deseja alterar:");  
	    String nome = scanner.nextLine();
	    
	    for (Pessoa p : pessoas){
	    	if(p.getNome().equals(nome)){
	    		cont++;
		    	System.out.println(cont+"º "+p);
	    	}
	    }
	    System.out.println("A busca encontrou "+cont+" nome(s).");
	    System.out.println("Escolha o número da opção que deseja alterar:");
	    opc = Integer.parseInt(scanner.nextLine());

//daqui em diante eu não sei o que fiz xD
	    for (int i = 0; i <= cont; i++){
	    	if(i == opc){
	    		for (Pessoa p : pessoas){
	    			System.out.println(pessoas.indexOf(i));
	    			break;	    			
	    		}
	    	}
	    }
	   
		msgVoltar();
	}
Responder

20/01/2012

Luciano

Continue fazendo desse jeito! é aqui que entra a mágica da Orientação a Objeto. Dentro do método alterar, você vai criar mais uma ArrayList, essa ArrayList vai ser temporária (quando a chamada do método alterar() acabar, ela vai ser apagada) Primeiro, você cria mais essa ArrayList, depois, você pede o nome para o usuário. Percorra a ArrayList "pessoas" procurando pessoas com o nome igual, e, adicione-as nessa nova ArrayList temporária. Como estamos trabalhando com [b]referências[/b] a objetos, qualquer alteração feita em qualquer objeto da ArrayList temporária, também vai surtir efeito nos objetos da ArrayList principal, pois os objetos são os mesmos! A ArrayList temporária só vai servir pra ficar com os indices em ordem, para o usuário poder escolher.
Responder

20/01/2012

Luciano Cargnelutti

Como eu vou criar uma ArrayList temporária? Ela vai acabar quando eu chamar o Alterar()? Se ela ta no alterar como ela vai acabar assim que eu chamar o método? "Como estamos trabalhando com referências a objetos, qualquer alteração feita em qualquer objeto da ArrayList temporária, também vai surtir efeito nos objetos da ArrayList principal, pois os objetos são os mesmos!" Essa aqui eu meio que entendi, vendo o que fiz os valores que poderão ser alterados foram adicionados na ArrayList temporária, como uma alteração que eu fizer nela vai implicar em uma alteração na ArrayList principal? Certo isso aqui? A Array temporária pegando os dados que podem ser alterados?
ArrayList<Pessoa> temp = new ArrayList<Pessoa>();
         for (Pessoa p : pessoas){
	    	if(p.getNome().equals(nome)){
	    		cont++;
		    	System.out.println(cont+"º "+p);
		    	temp.add(p);
	    	}
	    }
Responder

20/01/2012

Luciano Cargnelutti

[quote="Murilo Lilo"]Como eu vou criar uma ArrayList temporária? Ela vai acabar quando eu chamar o Alterar()? Se ela ta no alterar como ela vai acabar assim que eu chamar o método?
Qualquer variável declarada dentro de um método (ou outro bloco de código [if, for, while, etc]) só tem o escopo dentro daquele bloco de código, e vai "sumir" assim que o bloco de códigos terminar. Não precisa você se preocupar em apagar ela, ela vai ser apagada pelo GarbageCollector sozinha. [quote="Murilo Lilo"] Certo isso aqui? A Array temporária pegando os dados que podem ser alterados?
ArrayList<Pessoa> temp = new ArrayList<Pessoa>();
         for (Pessoa p : pessoas){
	    	if(p.getNome().equals(nome)){
	    		cont++;
		    	System.out.println(cont+"º "+p);
		    	temp.add(p);
	    	}
	    }
É isso mesmo, agora para alterar você pega a pessoa da ArrayList temp (só uma coisa: Indices começam em 0, o seu vai começar em 1 e vai dar errado)
int index = //lê a opção que o usuário escolheu

Pessoa p = temp.get(index);
agora você altera as informações usando a referencia "p" e lembre-se de usar os métodos setters!
Responder

20/01/2012

Luciano Cargnelutti

[quote="sekkuar"]agora você altera as informações usando a referencia "p" e lembre-se de usar os métodos setters!
Não entendi bem cara, "alterar as informações usando a referência "P" isso quer dizer que todas as alterações que eu fizer nos dados, já que ta sendo referenciado o P ai vai mudar lá também? Usar os métodos set? Confesso que eu não sei como vou fazer isso. Com o método set eu vou setar o valores na ArrayList temp e em seguida eu pego os novas dados? Com o get?
Responder

20/01/2012

Luciano

[quote="Murilo Lilo"][quote="sekkuar"]agora você altera as informações usando a referencia "p" e lembre-se de usar os métodos setters!
Não entendi bem cara, "alterar as informações usando a referência "P" isso quer dizer que todas as alterações que eu fizer nos dados, já que ta sendo referenciado o P ai vai mudar lá também? Usar os métodos set? Confesso que eu não sei como vou fazer isso. Com o método set eu vou setar o valores na ArrayList temp e em seguida eu pego os novas dados? Com o get?
qualquer alteração feito em "p" vai ser alterado na pessoa da ArrayList "pessoas" e "temp" também, pois são o mesmo objeto, com referências diferentes. Usar os métodos setters, é usar os setters da classe Pessoa (setNome, setTelefone, setEmail)
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar