Plateforme de Streaming Musical
Hiérarchie d’héritage pour les utilisateurs de la plateforme avec gestion des droits d’artistes
classDiagram
class SacemRegistration {
-String reference
-Date dateRegistration
+SacemRegistration(String reference, Date dateRegistration)
+getReference() String
}
class Person {
<<abstract>>
#String firstName
#String lastName
+Person(String firstName, String lastName)
+getFullName() String
}
class Playlist {
-String id
-Date createdOn
-String name
+Playlist(String name)
+getName() String
}
class Artist {
-String bandName
-int size
-SacemRegistration registration
+Artist(String firstName, String lastName, String bandName, int size)
+registerWithSacem(SacemRegistration reg) void
+getBandName() String
}
class User {
-int id
-int$ userCount
-Date birthDate
-List~Playlist~ playlists
+User(String firstName, String lastName, Date birthDate)
+createPlaylist(String name) void
+getPlaylists() List~Playlist~
}
Artist --|> Person
User --|> Person
Artist "1" --> "1" SacemRegistration
User "1" --> "0..*" Playlist
Person (Classe de Base Abstraite)
Section intitulée « Person (Classe de Base Abstraite) »La classe parente abstraite pour tous les utilisateurs de la plateforme.
- firstName: Prénom de la personne (protégé - accessible aux sous-classes)
- lastName: Nom de famille de la personne (protégé - accessible aux sous-classes)
- Person(String firstName, String lastName): Constructeur pour initialiser les noms
- getFullName(): Retourne le prénom et nom concaténés
- Les membres protégés permettent aux sous-classes Artist et User d’accéder aux informations de nom
- Ne peut pas être instanciée directement - sert de modèle pour les types d’utilisateurs concrets
Artiste ou groupe de musique enregistré sur la plateforme.
- bandName: Nom de l’artiste ou du groupe (privé)
- size: Nombre de membres dans le groupe (privé) - 1 pour artiste solo, 2+ pour groupes
- registration: Objet d’enregistrement SACEM (privé)
- Artist(String firstName, String lastName, String bandName, int size): Constructeur qui appelle super()
- registerWithSacem(SacemRegistration reg): Assigne l’enregistrement SACEM à cet artiste
- getBandName(): Retourne le nom du groupe
- Hérite firstName et lastName de Person
- Doit avoir exactement une SacemRegistration (relation un-à-un)
- SacemRegistration est requise pour la protection des droits d’auteur et la collecte des redevances
Utilisateur régulier de la plateforme pouvant créer des playlists.
- id: Identifiant unique de l’utilisateur (privé)
- userCount: Compteur statique pour le total d’utilisateurs créés (privé, partagé entre toutes les instances)
- birthDate: Date de naissance de l’utilisateur pour vérification de l’âge (privé)
- playlists: Liste des playlists créées par cet utilisateur (
List<Playlist>privée) - User(String firstName, String lastName, Date birthDate): Constructeur qui appelle super() et auto-incrémente userCount
- createPlaylist(String name): Crée une nouvelle playlist et l’ajoute à la collection de l’utilisateur
- getPlaylists(): Retourne la liste des playlists de l’utilisateur
- Hérite firstName et lastName de Person
- Peut créer zéro ou plusieurs playlists (relation un-à-plusieurs)
- Représente les auditeurs/consommateurs sur la plateforme
SacemRegistration
Section intitulée « SacemRegistration »Enregistrement de gestion des droits pour les artistes (SACEM - organisme français des droits musicaux).
- reference: Numéro de référence d’enregistrement unique (privé)
- dateRegistration: Date d’enregistrement de l’artiste auprès de la SACEM (privé)
- SacemRegistration(String reference, Date dateRegistration): Constructeur pour initialiser l’enregistrement
- getReference(): Retourne la référence d’enregistrement
- Chaque Artist doit avoir exactement un enregistrement
- Requis pour la protection des droits d’auteur et le paiement des redevances
Playlist
Section intitulée « Playlist »Playlist musicale créée par l’utilisateur.
- id: Identifiant unique de la playlist (privé)
- createdOn: Horodatage de création de la playlist (privé)
- name: Nom de la playlist (privé)
- Playlist(String name): Constructeur qui génère automatiquement l’ID et définit l’horodatage de création
- getName(): Retourne le nom de la playlist
- Appartient à exactement un User
- Un User peut avoir plusieurs playlists
- Représente les collections musicales organisées par les utilisateurs de la plateforme

