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()}")