Utilisateur «abstract» # id : int # nom, prenom : String # username, email : String # motDePasse : String # statut : EN_LIGNE | ABSENT # dateCreation : Date + seConnecter() : boolean + seDeconnecter() : void UtilisateurNormal # telephone : String # dateNaissance : Date # sexe : String # photoProfil : String + sInscrire() : int + consulterProfil() + modifierProfil() + scannerURL() / poserQuestion() AdministrateurSysteme + bannirCompteUtilisateur() + bannirGroupe() : int + consulterSignalements() + gererRoles() AdminGroupe + accepterDemande() + refuserDemande() + expulserMembre() + modifierGroupe() Appartenance «jointure» - utilisateurId : int - groupeId : int - roleId : int - dateAdhesion : Date + ajouterMembre() + supprimerMembre() Amitie «nouvelle classe» - id : int - demandeurId : int - destinataireId : int - statut : EN_ATTENTE | ACCEPTE | BLOQUE + envoyerDemande() + accepter() / refuser() Groupe - id : int - nom, description : String - typeGroupe : String - dateCreation : Date + creerGroupe() : int + modifierParametresGroupe() + supprimerGroupe() : int + consulterListeGroupes() + rejoindreGroupe() : int + gererCanaux() Canal «nouvelle classe» - id : int - nom : String - groupeId : int - type : TEXTE | VOCAL | ANNONCE + creerCanal() : int + supprimerCanal() : int Role «nouvelle classe» - id : int - groupeId : int - nom : String - couleur : String - permissions : List + assignerRole() + modifierPermissions() Conversation (DM) «nouvelle classe» - id : int - utilisateur1Id : int - utilisateur2Id : int - dateCreation : Date + ouvrirConversation() + archiverConversation() Fichier «nouvelle classe» - id : int - messageId : int - nom : String - type : IMAGE | AUDIO VIDEO | DOC - data : BLOB - taille : long + uploadFichier() Message - id : int - contenu : String - type : TEXT | AUDIO | FILE - canalId : int (nullable) - conversationId : int (nullable) - senderId : int - messageParentId : int - dateEnvoi : Date + envoyer() / modifier() / supprimer() + repondre() : int Reaction «nouvelle classe» - id : int - messageId : int - utilisateurId : int - emoji : String - date : Date + ajouterReaction() + supprimerReaction() Notification - id : int - userId : int - messageId : int (nullable) - contenu : String - date : Date + creerNotification() + consulterNotifications() Signalement - id : int - raison : String - dateSignalement : Date - statut : int - cibleId : int - cibleType : USER | MSG + signalerContenu() : int + signalerMembre() : int + consulterSignalements() 1..N 1..N 1..N 0..N 1..N 1..N msgs 0..N 0..N 1..N déclenche 0..N 1 role Légende Classes originales Nouvelles classes Groupe / Canal Héritage Association Dépendance