public class Contato{
private String nome;
private String tel;
List cont; //FAZ SENTIDO ESSA LINHA? (DECLARAÇÃO)
public Contato(String nome, String tel){
this.nome = nome;
this.tel = tel;
}
public void adiciona(Contato c){
cont = new ArrayList<Contato>(); //E INSTANCIAR SOMENTE NESSA??
cont.add(c);
}
public void imprime(){
for (Contato contatos : cont){
System.out.println ("Nome: " +nome+ "\nTelefone; " +tel+ "\n");
}
}
}[/code]
[code]public class Agenda{
public static void main (String args[]){
Contato contato = new Contato (“Rafa”, “9111-2233”);
contato.adiciona(contato);
Contato contato2 = new Contato ("Branca", "9111-5544");
contato2.adiciona(contato2);
// VARIÁVEL QUE CHAMA O MÉTODO IMPRIME() ?? COMO??
}
}[/code]
Está correto essa maneira de adicionar os contatos que eu fiz ou dá pra melhorar?
O problema principal…como imprimir todos os contatos depois?
Criei um método que imprime, mas como fazer isso? Tentei declarar uma variável do tipo Contato e mandar imprimir mas não deu certo.
:arrow: Você está declarando uma variável fora de todos os métodos (variável de instância) então todos os métodos dessa classe tem acesso à ela, assim como todas as instâncias dessa classe (a cada nova criação de um objeto - com a palavra-chave new) também terão uma cópia dessa variável;
:arrow: Você declarou como List e se precisar modificar a implementação por alguma outra classe que implementa List será muito mais fácil.
Aqui por exemplo se você resolver trocar ArrayList por Vector em uma possível modificação só precisará trocar essa linha do new ArrayList() por new Vector() já que as duas classes implementam List (Isso vale para TODAS as classes que implementam List).
// é só trocar essa linha...
cont = new ArrayList<Contato>();
// ...por essa (Vector ou qualquer outra classe que implemente List)
cont = new Vector<Contato>();
Você pode colocar o modificador static na variável cont, no método adiciona(Contato c) e no método imprime() pois não importa a instância ele sempre fará a impressão de TODOS os contatos. Dessa maneira mesma variável cont será compartilhada por todas as instâncias e qualquer modificação em uma instância afetará todas as outras. Daí é só chamar o método dessa maneira:
Contato.imprime();
A implementação de imprime está errada também. Crie métodos que retornem o nome e o telefone e ao invés de imprimir "Nome " + nome, faça "Nome " + cont.getNome();