115 lines
3.0 KiB
Python
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()}") |