Files
training.python.beginner/source/07-objects/inheritance/aggregation.py
2025-07-04 19:26:39 +02:00

115 lines
3.0 KiB
Python

from typing import List, Set
class User(object):
"""
Classe représentant un utilisateur.
"""
name: str = None
first_name: str = None
email: str = None
password: str = None
def __init__(self, name, first_name, email, password):
"""
Initialiser un nouvel utilisateur.
Args:
name: nom
first_name: prénom
email: email
password: mot de passe
"""
self.name = name
self.first_name = first_name
self.email = email
self.password = password
def __repr__(self):
"""
Texte affiché pour l'objet quand on le passe dans `print()` ou surtout
que sa représentation textuelle est demandée.
Returns:
Le nom de l'utilisateur.
"""
return self.name
class Group(object):
"""
Classe de groupe d'utilisateurs.
"""
name: str = None
description: str = None
# Ici on a un attribut qui est une liste d'objets d'une autre classe.
# C'est ce qu'on appelle l'agrégation.
# Si on supprime le groupe, les objets utilisateurs existent toujours indépendamment,
# on a ici simplement un lien vers des utilisateurs.
users: Set[User] = None
def __init__(self, name, description=None):
"""
Initialiser un nouveau groupe d'utilisateurs.
Args:
name: nom du groupe
description: texte descriptif, facultatif
"""
self.name = name
self.description = description
def __repr__(self):
"""
Texte affiché pour l'objet quand on le passe dans `print()`
Returns:
Le nom du groupe.
"""
return self.name
def add_user(self, user: User):
"""
Ajouter un utilisateur au groupe.
Args:
user: instance d'utilisateur à ajouter
"""
self.users = self.users or set()
self.users.add(user)
def get_users(self):
"""
Renvoie la liste des utilisateurs dans le groupe.
Returns:
La liste des utilisateurs ajoutés au groupe.
"""
return self.users
if __name__ == "__main__":
# Créer quelques utilisateurs
user1 = User("Martin", "Jacques", "jmartin@example.com", "jmartin")
user2 = User("Carletti", "Audrey", "acarletti@example.com", "acarletti")
user3 = User("Richard", "Luc", "lrichard@example.com", "lrichard")
user4 = User("Havel", "Vaclav", "vhavel@example.com", "vhavel")
# Créer un groupe ou deux
group1 = Group("Amicale des amateurs de froid")
group2 = Group("Amicale des amateurs de chaud")
# Ajouter des utilisateurs aux groupes
group1.add_user(user1)
group1.add_user(user2)
group1.add_user(user3)
group2.add_user(user4)
# Afficher les utilisateurs pour chaque groupe
print(f"Utilisateurs du groupe {group1.name} : {group1.get_users()}")
print(f"Utilisateurs du groupe {group2.name} : {group2.get_users()}")