Aller au contenu principal

Plateforme de Streaming Musical

Hiérarchie d'héritage pour les utilisateurs de la plateforme avec gestion des droits d'artistes

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

Artist

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

User

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

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

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