Aller au contenu

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

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

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 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