Aller au contenu principal

Atelier 10 - Gestionnaire de contacts unique

Créez un programme Java qui gère une liste de contacts sans doublons en utilisant les génériques et les HashSet.

Spécifications:

  1. Classe générique Registre<T> :

    • Contient un HashSet<T> pour stocker les éléments
    • Méthode ajouter(T element) : ajoute un élément et retourne true si l'ajout a réussi, false si l'élément existait déjà
    • Méthode supprimer(T element) : supprime un élément et retourne true si la suppression a réussi
    • Méthode contient(T element) : vérifie si un élément est présent
    • Méthode getTaille() : retourne le nombre d'éléments
    • Méthode afficherTout() : affiche tous les éléments
  2. Classe Contact :

    • Attributs : nom (String), courriel (String)
    • Deux contacts sont considérés égaux s'ils ont le même courriel (peu importe le nom)
    • Redéfinir equals() et hashCode() en conséquence
    • Redéfinir toString() pour afficher le nom et le courriel
  3. Programme principal (menu interactif) :

    • Créer un Registre<Contact>
    • Menu en boucle avec les options :
      1. Ajouter un contact (demander nom et courriel)
      2. Supprimer un contact (par courriel)
      3. Rechercher un contact (par courriel)
      4. Afficher tous les contacts
      5. Afficher le nombre de contacts
      6. Quitter

Exemple d'exécution:

=== Gestionnaire de contacts ===
1. Ajouter un contact
2. Supprimer un contact
3. Rechercher un contact
4. Afficher tous les contacts
5. Nombre de contacts
6. Quitter
Choix : 1
Nom : Alice Tremblay
Courriel : alice@email.com
Contact ajouté avec succès!

Choix : 1
Nom : Alice T.
Courriel : alice@email.com
Ce contact existe déjà (même courriel)!

Choix : 4
--- Liste des contacts ---
Alice Tremblay (alice@email.com)

Questions de réflexion:

  • Quelle est la complexité de temps pour ajouter, supprimer et rechercher un contact dans votre Registre?
  • Pourquoi est-il important de redéfinir hashCode() en même temps que equals()?
  • Quel serait l'avantage d'utiliser un Registre<T> générique plutôt qu'un Registre spécifique aux contacts?