1
resposta

[Projeto] Lista de contatos

package ListaDeContatos;

import java.util.ArrayList;
import java.util.List;

public class Main {
    static void main(String[] args) {

        List<Contatos> listaDeContatos = new ArrayList<>();

        listaDeContatos.add(new Contatos("Julia", "(61) 999117692"));
        listaDeContatos.add(new Contatos("Alisson", "(61) 981789276"));
        listaDeContatos.add(new Contatos("Edson", "(61) 951765861"));

        System.out.println("Lista de contatos:");
        int indice = 1;
        for (Contatos contato : listaDeContatos){
            System.out.printf("%s. %s - %s\n",
                    indice++,
                    contato.getNome(),
                    contato.getTelefone());
        }
    }
}
package ListaDeContatos;

public class Contatos {
    private String nome;
    private String telefone;

    public Contatos(String nome, String telefone) {
        this.nome = nome;
        this.telefone = telefone;
    }

    public String getNome() {
        return nome;
    }

    public String getTelefone() {
        return telefone;
    }
}
1 resposta

Oii, Gabriel!

Meus parabéns por finalizar mais esse desafio de organização de dados com Java.

Sua implementação demonstra uma compreensão sólida sobre o uso de coleções e a importância do encapsulamento. Ao utilizar a interface List para declarar sua variável e ArrayList para instanciá-la, você seguiu uma recomendação valiosa de design de código, o que permite que sua aplicação seja flexível caso precise mudar a implementação da lista futuramente. O uso do System.out.printf com o contador indice++ também garantiu que a saída ficasse organizada e fácil de ler, exatamente como solicitado.

  • Abstração de dados: A classe Contatos (embora o ideal seja o nome no singular, Contato) agrupa as informações de maneira coesa, tratando o conjunto "nome e telefone" como uma única entidade.
  • Uso de generics: Ao definir List<Contatos>, você garante que apenas objetos desse tipo entrem na sua lista, evitando erros de tipo em tempo de execução.
  • Iteração limpa: O uso do laço for-each é a maneira mais elegante e legível de percorrer coleções em Java quando não precisamos manipular os índices manualmente de forma complexa.

Para avançar ainda mais nos seus estudos, vale observar que na opinião do instrutor foi sugerido o uso do modificador final nos atributos da classe. Como em uma agenda os dados básicos costumam ser fixos após o cadastro, o final ajuda a garantir a imutabilidade do objeto, tornando seu código mais seguro contra alterações acidentais.

Você notou como a combinação de construtores com atributos privados impede que um contato seja criado ou alterado de forma incompleta pelo sistema?

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!