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

16/01/2012

Murilo Lopes

Estressado não cara, tô feliz =D SEKK consegui convertendo pra int =D
Responder

16/01/2012

Murilo Lopes

[quote="Murilo Lilo"]Estressado não cara, tô feliz =D SEKK consegui convertendo pra int =D
Então parabéns!
Responder

16/01/2012

Murilo Lopes

IIIIIIIIIIIIIIIIIIIHHHHHHHHHHHUUUUUUUULLLLLLLLLL Agora já está listando xD
Responder

16/01/2012

Renan Zimmer

[quote="Murilo Lilo"]IIIIIIIIIIIIIIIIIIIHHHHHHHHHHHUUUUUUUULLLLLLLLLL
http://www.youtube.com/watch?v=IofpDsXq8Qg
Responder

16/01/2012

Murilo Lopes

O que é isso?
Responder

16/01/2012

Murilo Lopes

Não tem não template né? Fica feio mesmo na hora de mostrar a lista com os nomes cadastrados né?
Responder

16/01/2012

Renan Zimmer

[quote="Murilo Lilo"]Não tem não template né? Fica feio mesmo na hora de mostrar a lista com os nomes cadastrados né?
huh??? depende... como você está mostrando? da uma lida aqui: http://javafree.uol.com.br/artigo/884104/Representacao-textual-de-objetos-metodo-toString.html
Responder

17/01/2012

Murilo Lopes

Gente vou dormir por que não aguento mais pesquisar, e sem os especialistas que me auxiliam fica very hard. Depois irei "LIMPAR" o código onde der, mas até aqui o que vale é que ta funfando =D. Vou postar o meu progresso até então: Pessoa.java :
package ListaPackage;

public class Pessoa {  
    
    public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public String getTelefone() {
		return telefone;
	}
	public void setTelefone(String telefone) {
		this.telefone = telefone;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}

	private String nome;
	private String telefone;
    private String email;
    
    public Pessoa(String nome, String telefone, String email) {     
    	setNome(nome);  
    	setTelefone(telefone);  
    	setEmail(email);
    }

}
Main.java :
package ListaPackage;

public class Main {

	public static void main(String[] args) {    
		Agenda agenda = new Agenda();
		agenda.menu();
	}

}
Agenda.java :
package ListaPackage;

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

public class Agenda{
	private ArrayList<Pessoa> pessoas;
	private Scanner scanner;
	
	public boolean existe(String nome){//Não acho que o erro esteja aqui
		int i=0;
		boolean tem = true;
		for (Pessoa p: pessoas){
			if (pessoas.contains(nome)){i++;}
		}
			if (i==0){tem = false;}
			if (i>0){tem = true;}
		return tem;
	}
	
	public void listar(){
		//Funcionando legal aqui, e a parada do template que eu falei era pra ficar mais organizado
		//quando listar os cadastros
		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.getNome()+" "+p.getTelefone()+" "+p.getEmail());
		System.out.println("===========================");
		
		msgVoltar();
	}
	
	public void procurar(){//Depois que resolver o resto farei essa parte.
	}
	
	public void msgVoltar(){//Pra não ter que digitar isso um bocado de vez.
		System.out.println("Tecle Enter para voltar!");
		String opc = scanner.nextLine();
		menu();
	}
	
	public void apagar(){//Aqui ta dando pau em algum lugar por que não apaga.
		System.out.println("Digite o nome que deseja apagar:");  
	    String nome = scanner.nextLine();
	    for (Pessoa p : pessoas)
	    	pessoas.remove(p.getNome());
		System.out.println("Cadastro apagado com sucesso!");
		
		msgVoltar();
	}

	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(nome) == false){
	    	//Antes de cadastrar verifica se o nome já existe para nao permitir um cadastro repetido.
	    	Pessoa pessoa = new Pessoa(nome, telefone, email);
		    pessoas.add(pessoa);
		    menu();	    	
	    }else{System.out.println("Nome já cadastrado, favor tente outro nome!");menu();}
	    
	    msgVoltar();   
	}
	
	public void sair(){//Falta fazer aqui ainda.
	}
		
	public void menu(){
		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("==>");
		
		int opc = Integer.parseInt(scanner.nextLine()); 
		
		switch (opc){
		case 1:
			cadastrar();
			break;
		case 2:
			procurar();
			break;
		case 	3:
			listar();
			break;
		case 4:
			apagar();
			break;
		case 0:
			sair();
			break;
		default:
			System.out.println("Opção inválida, tente novamente!");
			menu();
		}
	}
	
	public Agenda(){
		this.pessoas = new ArrayList<Pessoa>();
		this.scanner = new Scanner(System.in);
		}
	
}
Bem gente, é isso, desculpa qualquer erro infantil, pois é com eles que aprendo! Por favor, aceito tudo, comentários, críticas, ajudas, esculhambamentos... Enfim, toda e qualquer informação é bem vinda =D
Responder

17/01/2012

Murilo ângelo

Cara, você realmente, assim como eu, penso ser pessoas meio difíceis de se achar, "pouco" sei sobre java, estou recém no 1º ano do ensino médio com informática, mas já sei que sei "sei que sei :hauhau: " mais do que muitos alunos do 3º ano para cima, é muito legal ver alguém se esforçando a este ponto, só uma dúvida, a quanto tempo você começou a aprender java?
Responder

17/01/2012

Murilo Lopes

Acabou que esse tópico virou um tutorial bem completinho das noções básicas de Java. Até o nome do tópico sugere isso! Voto por fix!
Responder

17/01/2012

Renan Zimmer

[quote="Murilo Lilo"] Agenda.java :
package ListaPackage;

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

public class Agenda{
	private ArrayList<Pessoa> pessoas;
	private Scanner scanner;
	
	public boolean existe(String nome){//Não acho que o erro esteja aqui
		int i=0;
		boolean tem = true;
		for (Pessoa p: pessoas){
			if (pessoas.contains(nome)){i++;}
		}
			if (i==0){tem = false;}
			if (i>0){tem = true;}
		return tem;
	}
	
	public void listar(){
		//Funcionando legal aqui, e a parada do template que eu falei era pra ficar mais organizado
		//quando listar os cadastros
		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.getNome()+" "+p.getTelefone()+" "+p.getEmail());
		System.out.println("===========================");
		
		msgVoltar();
	}
	
	public void procurar(){//Depois que resolver o resto farei essa parte.
	}
	
	public void msgVoltar(){//Pra não ter que digitar isso um bocado de vez.
		System.out.println("Tecle Enter para voltar!");
		String opc = scanner.nextLine();
		menu();
	}
	
	public void apagar(){//Aqui ta dando pau em algum lugar por que não apaga.
		System.out.println("Digite o nome que deseja apagar:");  
	    String nome = scanner.nextLine();
	    for (Pessoa p : pessoas)
	    	pessoas.remove(p.getNome());
		System.out.println("Cadastro apagado com sucesso!");
		
		msgVoltar();
	}

	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(nome) == false){
	    	//Antes de cadastrar verifica se o nome já existe para nao permitir um cadastro repetido.
	    	Pessoa pessoa = new Pessoa(nome, telefone, email);
		    pessoas.add(pessoa);
		    menu();	    	
	    }else{System.out.println("Nome já cadastrado, favor tente outro nome!");menu();}
	    
	    msgVoltar();   
	}
	
	public void sair(){//Falta fazer aqui ainda.
	}
		
	public void menu(){
		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("==>");
		
		int opc = Integer.parseInt(scanner.nextLine()); 
		
		switch (opc){
		case 1:
			cadastrar();
			break;
		case 2:
			procurar();
			break;
		case 	3:
			listar();
			break;
		case 4:
			apagar();
			break;
		case 0:
			sair();
			break;
		default:
			System.out.println("Opção inválida, tente novamente!");
			menu();
		}
	}
	
	public Agenda(){
		this.pessoas = new ArrayList<Pessoa>();
		this.scanner = new Scanner(System.in);
		}
	
}
Bem gente, é isso, desculpa qualquer erro infantil, pois é com eles que aprendo! Por favor, aceito tudo, comentários, críticas, ajudas, esculhambamentos... Enfim, toda e qualquer informação é bem vinda =D
Cara, ta ficando muito bom mesmo, meus parabens! Só algumas coisinhas pra te ajudar No método apagar...
public void apagar(){//Aqui ta dando pau em algum lugar por que não apaga.  
      System.out.println("Digite o nome que deseja apagar:");    
       String nome = scanner.nextLine();  
       for (Pessoa p : pessoas)  
          pessoas.remove(p.getNome());  
      System.out.println("Cadastro apagado com sucesso!");  
        
      msgVoltar();  
   }
Bem veja, você pediu o nome para o usuário digitar, mas nunca usou ele. o certo é você fazer uma comparação (dentro do for)
 
for (Pessoa p : pessoas) 
     if(p.getNome().equals(nome)){
         pessoas.remove(p); //remove a pessoa, não o nome dela
         break;
     }
Outra coisa, fazer {<codigo>} não é legal, mesmo que seja uma instrução só, o melhor é identar as chaves
{
     <codigo>
}
E uma ultima coisa que me deixou precupado no seu programa, seus métodos nunca retornam! Isso é ruim, você vai colocar na pilha de chamadas mais e mais métodos que nunca vão terminar. digamos que vá cadastrar 5 pessoas, ele va seguir essa lógica
menu() -- > cadastrar() --> msgVoltar() -->
(depois ele começa de novo, sem terminar o anterior)
menu() -- > cadastrar() --> msgVoltar() -->
menu() -- > cadastrar() --> msgVoltar() -->
menu() -- > cadastrar() --> msgVoltar() -->
menu() -- > cadastrar() --> msgVoltar() --> menu()
Ou seja, no fim, você vai ter 16 métodos na pilha, quando na verdade vai usar apenas um, e os outros deviam ter terminado. A lógica correta deveria ser
menu() -- > cadastrar() --> msgVoltar() -->
       <---(return) <--- (return)<----
  (volta para o primeiro menu() que foi chamado, não chama um novo)
Dentro do primeiro menu você faz um [color=blue]while[/color] para repetir enquanto o usuário não escolher 0 Mas essas chamadas para menu() indiscriminadas do seu código devem ser removidas. menu() só vai ser chamado uma vez na programa inteiro, na classe main
Responder

17/01/2012

Douglas Eric

[quote="LeoCarmona"]Cara, você realmente, assim como eu, penso ser pessoas meio difíceis de se achar, "pouco" sei sobre java, estou recém no 1º ano do ensino médio com informática, mas já sei que sei "sei que sei :hauhau: " mais do que muitos alunos do 3º ano para cima, é muito legal ver alguém se esforçando a este ponto, só uma dúvida, a quanto tempo você começou a aprender java?
Faz uma semana ele está aqui no fórum se esforçando pra aprender do 0 sobre java e POO [quote="MathewsMotta"]Acabou que esse tópico virou um tutorial bem completinho das noções básicas de Java. Até o nome do tópico sugere isso! Voto por fix!
O tópico ainda não acabou :D
Responder

17/01/2012

Renan Zimmer

[quote="sekkuar"] E uma ultima coisa que me deixou precupado no seu programa, seus métodos nunca retornam! Isso é ruim, você vai colocar na pilha de chamadas mais e mais métodos que nunca vão terminar. digamos que vá cadastrar 5 pessoas, ele va seguir essa lógica
menu() -- > cadastrar() --> msgVoltar() -->
(depois ele começa de novo, sem terminar o anterior)
menu() -- > cadastrar() --> msgVoltar() -->
menu() -- > cadastrar() --> msgVoltar() -->
menu() -- > cadastrar() --> msgVoltar() -->
menu() -- > cadastrar() --> msgVoltar() --> menu()
Ou seja, no fim, você vai ter 16 métodos na pilha, quando na verdade vai usar apenas um, e os outros deviam ter terminado. A lógica correta deveria ser
menu() -- > cadastrar() --> msgVoltar() -->
       <---(return) <--- (return)<----
  (volta para o primeiro menu() que foi chamado, não chama um novo)
Dentro do primeiro menu você faz um [color=blue]while[/color] para repetir enquanto o usuário não escolher 0
Deixa eu tentar explicar isso aqui. Murilo, fazer do jeito que vc fez não quer dizer que o programa não irá funcionar, mas deixará sua aplicação mais lenta por nada. É claro que dificilmente um programa assim vai dar problema, mas imagine que vc está fazendo um software de cadastramento de pessoas em algum sistema(assim como sua agenda). Imagine centenas de usuários cadastrando ao mesmo tempo . Eu simplesmente imagina sua própria agenda, ai uma secretária recebe do chefe dela uma lista de 750 pessoas para cadastrar nessa agenda. Se para cadastrar 5 foi gerada uma pilha de 16 métodos como sekkuar nos mostrou. A pilha nesse caso chegará à casa dos 2400 métodos!! O que acontece é que seus métodos nunca terminam(não há valor de retorno). Por isso eles ficam na pilha.
Responder

17/01/2012

Renan Zimmer

[quote="MathewsMotta"] O que acontece é que seus métodos nunca terminam(não há valor de retorno). Por isso eles ficam na pilha.
O problema não é não haver valor de retorno, o problema é que eles nunca chegam ao final mesmo. O menu() sempre vai chamar uma função, e as funções sempre chamam um novo menu... e isso vai empilhando. Todos os métodos vão ficar aberto enquanto o programa estiver funcionando e mais e mais serão chamados, até que o usuário decida sair em um dos menus, ai todos vão fechar em cascata até terminar o programa.
Responder

17/01/2012

Murilo Lopes

LEO: É isso ai que o SEKK falou! SEKK: Vou corrigir esses erros agora, jaja posto eles. Só que eu boto pra retornar o que?
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