Dúvida com Construtor e Main

14 respostas
A

Pessoal,a dúvida que eu tinha foi esclarecida e meu pensamento estava correto.Porém,agora é no Construtor e no Main.
O construtor para adicionar ficou assim:

Contato(String nome, Endereco endereco, String telefone, String email){
this.nome = nome;
this.endereco = endereco;
this.telefone = telefone;
this.email = email;
}

E o de remover estou com essa dificuldade,não sei pra que lado ir.

void removeContato(String nome, Endereco endereco, String telefone, String email){
	  
	 /*Aqui dentro(construtor da classe Contato),eu crio um if pra direcionar para exclusão usando delete ou o if vai ficar no main?
          *Se o if ficar no main,então no construtor(classe Contato) eu vou usar o this.nome = nome,pra apontar pra ele igual ao    
          *construtor adicionar?
  }

14 Respostas

A

não estou usando banco de dados,apenas a memória temporária dele.

Natalia_Lima

Bom, não sei se entendi direito o que quer fazer…
Pelo que notei, no construtor vc esta atribuindo valores para as suas variaveis. Apenas isso!
Seguindo essa linha, no remover, vc só deveria “apagar” os valores atribuidos…

Mas se nao for isso, explica melhor sua ideia, posta mais codigo que ajudamos vc…

Natalia_Lima

Ahhh… e outra coisa…
No remover contato vc faz a sua lógica e lá no seu main vc chama o método removerContato. Melhor que colocar if no construtor, ok?
Lembre-se de que cada método deve cuidar apenas da sua função… :slight_smile:

A

Então natália,queria era remover mesmo o contato,só que não sei como implementar isso dentro do construtor na classe Contato.
Pois são 4 classe,Agenda,Contato,Endereco e GerenciadorAgenda.

No caso do adicionar,já fiz,que ficou assim:

public class Agenda {
    
    
    ArrayList<Contato> listaContato = new ArrayList<Contato>();
    
    public void adicionarContato(Contato c){
    
        listaContato.add(c);
            
    }
    
    
    public void removerContato(Contato c){
    	
    	listaContato.remove(c);  //o Remover do agenda está pronto.
    	
    	
    }
    
}

Este é da classe Contato.

Contato(String nome, Endereco endereco, String telefone, String email){
this.nome = nome;
this.endereco = endereco;
this.telefone = telefone;
this.email = email;
} //Esse é do adicionar,e que no Main já está pronto também.

void Contato(String nome, Endereco endereco, String telefone, String email){

//Gostaria de saber o que eu vou colocar aqui dentro desse construtor,se é if ou não...se será apenas no Main.

}

Natalia_Lima

Ah tá, entendi…

O seu método removerContato já está pronto, vc nao precisa implementar nada, nenhum tipo de construtor.
o

listaContato.remove(c);

já faz sozinho o trabalho de encontrar dentro do seu ArrayList o objeto que vc passou como parametro (no caso o objeto “c”) e ele remove da lista! :lol:

Faça alguns testes imprimindo os itens da sua lista no console, só para testar. Vc vai ver que o contato passado terá sumido da lista…

Natalia_Lima

Além disso, lembre-se que o Construtor é um método acionado somente na construção do seu objeto
Ou seja

Contato c = new Contato("passa os parametros todos...");

Ele não é acionado no seu método adicionarContato, mas sim em algum momento anterior, quando vc executou a chamada como no exemplo.

A

Natália,então no Main ficaria assim?

else if (opcaoEscolhida == 2)
        {
            //Remover Contato
        	String RemoveSN2 = JOptionPane.showInputDialog("Deseja remover da Lista? (1 para SIM e 2 para NÃO)");
        	  if(RemoveSN == 1){
        		  
        		 Contato c = new Contato();
        		 c.removerContato(delete);
        		  
        	  }
        	
        	
        }

Só que está dando erro,o erro no Contato c = new Contato();
c.removercontato(delete);
Mas não entendi o porque.

A

Alguém?

Natalia_Lima
AndreAllen:
Natália,então no Main ficaria assim?
else if (opcaoEscolhida == 2)
        {
            //Remover Contato
        	String RemoveSN2 = JOptionPane.showInputDialog("Deseja remover da Lista? (1 para SIM e 2 para NÃO)");
        	  if(RemoveSN == 1){
        		  
        		 Contato c = new Contato();
        		 c.removerContato(delete);
        		  
        	  }
        	
        	
        }

Só que está dando erro,o erro no Contato c = new Contato();
c.removercontato(delete);
Mas não entendi o porque.

Vamos com uma coisa de cada vez... 1º - no seu if já vai ter um problema. Vc está comparando uma String com um número.
if(RemoveSN == 1)
Tem que ser assim:
if(RemoveSN.equals("1")

2º - Vc precisa pensar no seguinte: se vai remover um contato da sua agenda, ele já existe, certo? Ou seja, vc não deve criar um novo contato como está fazendo, para depois remove-lo. Isso vai dar problema mesmo. Vc precisa saber qual dos contatos que está na lista que vc deve remover e daí chamar o método que removerá.

3º - O erro que está dando é pq vc está chamando o construtor sem parametros, que não está definido na sua classe.

Vou te passar um exemplo de como deveria funcionar as suas classes, pq percebi vc está tentando, se esforçando, apesar de estar se perdendo um pouco...

Classe Contato
public class Contato {

	private String nome;
	
	//metodo construtor
	Contato(String nome){
		this.nome = nome;
	}

	public String getNome() {
		return nome;
	}

	
	public void setNome(String nome) {
		this.nome = nome;
	}
}
Classe Agenda
import java.util.ArrayList;


public class Agenda {

	private ArrayList<Contato> lista = new ArrayList<Contato>();
	
	public void adicionarContato(Contato c){
		lista.add(c);
	}
	
	public void removerContato(Contato c){
		lista.remove(c);
	}
	
	public void imprimirAgenda(){
		if(lista.size()==0){
			System.out.println("LISTA VAZIA");
		}
		else{
			System.out.println("\n\n\n---------------------------");
			for(int i=0; i<lista.size(); i++){
				System.out.println(lista.get(i).getNome());
			}
		}
	}
}
Classe ExecutaAgenda com o main
public class ExecutaAgenda {

	public static void main(String[] args) {

		//criando um contato
		Contato a = new Contato("Maria");
		Contato b = new Contato("Jose");
		Contato c = new Contato("Joao");
		
		Agenda agenda = new Agenda();
		agenda.imprimirAgenda();
		
		//insere primeiro contato
		agenda.adicionarContato(a);
		agenda.imprimirAgenda();
		
		//insere segundo contato
		agenda.adicionarContato(b);
		agenda.imprimirAgenda();
		
		//insere terceiro contato
		agenda.adicionarContato(c);
		agenda.imprimirAgenda();
		
		//PARA REMOVER
		agenda.removerContato(b);
		agenda.imprimirAgenda();
		
	}

}

Execute em um projetinho a parte essas classes e veja no console as impressões. Acho que assim conseguirá entender direitinho. Depois volte ao seu projeto original e reordene a sua idéia, ok?? :wink:

Natalia_Lima

Calmaaa kkkkk
Estava respondendo… kkkk
:lol:

A

Calmaaa kkkkk
Estava respondendo… kkkk
:lol:

Ah tá,me desculpe…é porque eu estava ficando tão sem paciência sabe,acabei desistindo por um tempo e fui ver televisão.
Obrigado,agora vou conferir o que você me ajudou xD’

A

aaah tah,entendi agora…legal isso hein,kkkkkkkkk’

Desculpe esses erros todos meus,mas sou bem iniciante mesmo em JAVA.E não estou conseguindo pensar direito pra onde ir.
Abraço.Vou continuar a fazer.

Natalia_Lima

kkkk
Tranquilo, no começo é meio nebuloso mesmo…
Mas estamos aí pra dar uma luz!

S

[quote=Natalia Lima]

AndreAllen:

1º - no seu if já vai ter um problema. Vc está comparando uma String com um número.

if(RemoveSN == 1)

Tem que ser assim:

if(RemoveSN.equals("1")

[/code]

Só lembrando que a boas práticas dizem que ao usar o metodo equals sempre use o equals do objeto constante, no case a String “1”. Ficaria assim:

if("1".equals(RemoveSn))

Isso porque assim você assegura que o objeto que está invocando o metodo equals não estará null, evitando um NullPointerException.

Criado 12 de julho de 2012
Ultima resposta 12 de jul. de 2012
Respostas 14
Participantes 3