De nombreux développeurs rencontrent des difficultés à organiser leurs applications de gestion de données personnelles, comme les carnets d’adresses, en raison de la complexité des méthodes de manipulation des contacts.
Cette mauvaise organisation peut causer des erreurs de gestion des données, ralentir l’interaction avec l’utilisateur, et compliquer la maintenance à long terme.
Dans cet exercice pratique, apprenez à structurer et gérer un carnet d’adresses en utilisant la programmation orientée objet, pour une application efficace et évolutive.
Réalisez un exercice pratique Python : carnet d'adresses POO
Dans cet exercice, vous allez implémenter une application de carnet d’adresses en utilisant la programmation orientée objet en Python. Vous allez définir deux classes : Contact et AddressBook.
- La classe Contact représente un contact avec un nom, un e-mail et un numéro de téléphone.
- La classe AddressBook représente un carnet d’adresses contenant une liste de contacts. La classe permet d’ajouter, de supprimer et d’afficher des contacts.
L’application utilise une boucle while pour afficher un menu de choix à l’utilisateur :
- Ajouter un contact (Add Contact)
- Supprimer un contact (Remove Contact)
- Afficher les contacts (Display Contact)
- Quitter (Quit)
Architecture modulaire pour un carnet d'adresses Python
L’application sera structurée en deux modules distincts :
- contact.py : Contiendra la classe Contact, qui représente un contact individuel avec un nom, un e-mail et un numéro de téléphone.
- addressbook.py : Contiendra la classe AddressBook, qui gère une liste de contacts et inclut des méthodes pour ajouter, supprimer, et afficher les contacts.
Définir la classe Contact dans Python
On commence par définir la classe Contact. Le constructeur __init__ initialise trois
attributs : name, email, et phone_number, qui représentent les informations d’un contact. Chaque fois qu’un objet Contact est créé, ces attributs son automatiquement définis avec les valeurs fournies lors de la création de l’objet.
class Contact:
def __init__(self, name, email, phone_number):
self.name = name
self.email = email
self.phone_number = phone_number
La figure ci-dessous montre la définition de la classe Contact dans le fichier contact.py, où nous initialisons les attributs essentiels pour représenter un contact individuel.
Formation Python : Programmation Orientée Objet
Développez des applications robustes avec la POO en Python !
Créer une classe AddressBook pour gérer les contacts
La classe AddressBook est définie de la manière suivante. Le constructeur __init__ initialise une liste vide appelée contacts. Cette liste sera utilisée pour stocker les objets de la classe Contact déjà définie.
class AddressBook:
def __init__(self):
self.contacts = []
Ajouter un contact avec la méthode add_contact
La méthode add_contact permet d’ajouter un nouveau contact dans le carnet d’adresses. Quand un nouvel objet Contact est créé avec les informations fournies (nom, e-mail, numéro de téléphone) et est ajouté à la liste contacts. Un message sera affiché pour confirmer l’ajout du contact comme il est montré dans le code suivant.
def add_contact(self, name, email, phone_number):
c = Contact(name, email, phone_number)
self.contacts.append(c)
print(f"{c.name} added to address book.")
Supprimer un contact avec la méthode remove_contact
La méthode remove_contact permet de supprimer un contact en recherchant son nom dans la liste des contacts. Si un contact avec le nom correspondant est trouvé, il est retiré de la liste, et un message de confirmation de suppression est affiché. Si le contact n’est pas trouvé, un message d’erreur s’affiche comme il est montré dans le code suivant :
def remove_contact(self, name):
for item in self.contacts:
if item.name == name:
self.contacts.remove(item)
print(f"{name} removed from address book.")
return
print(f"{name} not found in address book.")
Afficher les contacts avec la méthode display_contacts
La méthode display_contacts affiche pour chaque contact dans la liste contacts, ses informations (nom, e-mail, numéro de téléphone) de manière formatée.
def display_contacts(self):
for item in self.contacts:
print(f"Name: {item.name}")
print(f"Email: {item.email}")
print(f"Phone Number: {item.phone_number}")
print()
Voici la figure du module addressbook.py, où la classe AddressBook est définie avec des méthodes nécessaires pour gérer les contacts.
Interagir avec l’utilisateur dans le carnet d'adresses
Construire le main pour gérer les contacts en Python
Comme une dernière étape, vous allez implémenter une boucle while pour offrir un menu interactif à l’utilisateur, lui permettant d’ajouter, de supprimer ou d’afficher des contacts, ou de quitter l’application.
address_book = AddressBook()
while True:
print("1. Add Contact")
print("2. Remove Contact")
print("3. Display Contacts")
print("4. Quit")
choice = input("Enter your choice: ")
if choice == "1":
name = input("Enter name: ")
email = input("Enter email: ")
phone_number = input("Enter phone number: ")
address_book.add_contact(name, email, phone_number)
elif choice == "2":
name = input("Enter name: ")
address_book.remove_contac(name)
elif choice == "3":
address_book.display_contacts()
elif choice == "4":
break
else:
print("Invalid choice. Please try again.")
- Ici, nous créons une instance de AddressBook pour commencer à gérer notre carnet d’adresses.
- Une boucle while est utilisée pour afficher un menu de choix à l’utilisateur.
- En fonction de la sélection de l’utilisateur, l’une des méthodes du carnet d’adresses est appelée :
Voici un tableau qui offre une vue d’ensemble clair du fonctionnement du menu interactif et de la manière dont chaque choix est géré par le programme :
Option de Menu | Description de l’Action | Méthode Correspondante |
---|---|---|
1. Add Contact | L’utilisateur est invité à entrer le nom, l’e-mail et le numéro de téléphone. Ces informations sont ensuite utilisées pour ajouter un nouveau contact dans le carnet d’adresses. | add_contact(name, email, phone_number)
|
2. Remove Contact | L’utilisateur entre le nom du contact à supprimer. Si ce contact est trouvé dans le carnet d’adresses, il est retiré. | remove_contact(name)
|
3. Display Contacts | Tous les contacts du carnet d’adresses sont affichés avec leurs informations respectives (nom, e-mail, numéro de téléphone). | display_contacts()
|
4. Quit | Quitte l’application. Si l’utilisateur choisit de quitter, la boucle while se termine et l’application se ferme. | break (sortie de la boucle while)
|
Exemple d’utilisation du carnet d'adresses en Python
La figure suivante illustre l’exécution de l’application depuis main.py, où l’utilisateur peut interagir avec le carnet d’adresses à travers un menu simple et intuitif. elle permet à l’utilisateur de manipuler facilement les contacts via un menu intuitif. En construisant une interface simple mais efficace, l’utilisateur peut ajouter, supprimer, ou afficher des contacts selon ses besoins comme il est montré d ns la figure suivant :
1. Add Contact
2. Remove Contact
3. Display Contacts
4. Quit
Enter your choice: 1
Enter name: Rosa
Enter email: Rosa@gmail.com
Enter phone number: +3312586479
Rosa added to address book.
1. Add Contact
2. Remove Contact
3. Display Contacts
4. Quit
Enter your choice: 2
Enter name: Rosa
Rosa removed from address book.
1. Add Contact
2. Remove Contact
3. Display Contacts
4. Quit
Enter your choice: 3
1. Add Contact
2. Remove Contact
3. Display Contacts
4. Quit
Formez-vous gratuitement avec Alphorm !
Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui. Découvrez des cours variés pour tous les niveaux !
Conclusion
Cet exercice vous permet de mettre en pratique les concepts de la programmation orientée objet en Python, tout en créant une application de carnet d’adresses simple et fonctionnelle. Vous apprendrez à gérer des objets et à implémenter des fonctionnalités pratiques tout en manipulant des données utilisateurs.