1
resposta

Minha solução

namespace Teste4_Alura.ExercicioOO;

internal class Contato
{
    public string Nome {  get; set; }
    public string Telefone {  get; set; }
    public Contato(string nome, string telefone)
    {
        Nome = nome;
        Telefone = telefone;
    }

}
namespace Teste4_Alura.ExercicioOO;

internal class Agenda
{

    public string Proprietario { get; set; }
    private List<Contato> contatos { get; }
    public int QuantContatos => contatos.Count;


    public Agenda(string proprietario)
    {
        Proprietario = proprietario;
        contatos = new List<Contato>();
    }

    public bool AdicionarContato(Contato contato)
    {
        bool jaExiste = contatos.Any(nome => nome.Nome == contato.Nome);

        if (jaExiste)
        {
            Console.WriteLine("Contato com esse nome já está na agenda.");
            return false;
        }
        else
        {
            contatos.Add(contato);
            return true;

        }

    }

    public void ListarContatos()
    {

        Console.WriteLine($"Agenda de: {Proprietario}");
        foreach (Contato contato in contatos)
        {
            Console.WriteLine($" - Contatos: {contato.Nome} | {contato.Telefone}");
        }
       
        Console.WriteLine($"Total de Contato: {QuantContatos}");
    }
}
# region Desafio Agenda com Controle de Contatos duplicados
using Teste4_Alura.ExercicioOO;

Agenda agenda = new Agenda("Marina Souza");
agenda.AdicionarContato(new Contato("Carlos", "11998887777"));
agenda.AdicionarContato(new Contato("Carlos", "11991112222")); // duplicado
agenda.AdicionarContato(new Contato("Julia", "21988776655"));
agenda.ListarContatos();

#endregion
1 resposta

Olá, Ulysses! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso de listas para organizar os contatos de forma eficiente, utilizou muito bem a verificação com Any para evitar duplicidades e ainda compreendeu a importância das propriedades para manter o controle do total de contatos na agenda.

Uma dica interessante para o futuro é implementar a busca de contatos pelo nome, facilitando a consulta direta. Assim:

public Contato BuscarContato(string nome)
{
    return contatos.FirstOrDefault(c => c.Nome.Equals(nome, StringComparison.OrdinalIgnoreCase));
}

Isso faz com que o usuário consiga localizar rapidamente um contato específico sem precisar percorrer toda a lista manualmente.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

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