@startuml skinparam classAttributeIconSize 0 class Playlist{ - {static} serialVersionUID : long - id : int - name : String - songs : ArrayList - audiobooks : ArrayList + Playlist(name : String, songs : ArrayList, audiobooks : ArrayList) + getId() : int + getName() : String + getSongs() : void + getAudioBooks() : void + setId(id : int) : void + setName(name : String) : void + toString() : String } Playlist ..|> Serializable class AudioBook{ - {static} serialVersionUID : long - author : String + AudioBook(title : String, duration : int, content : String, author : String, language : Language, category : Category) + getAuthor() : String + getLanguage() : String + getCategory() : String + setArtist(author : String) : void + setGenre(language : Language) : void + setCategory(category : Category) : void + toString() : String } AudioBook --|> MusicalElement class jMusicHub{ + jMusicHub() + {static} addSong(scan : Scanner) : Song + {static} addAudioBook(scan : Scanner) : AudioBook + {static} addAlbum(scan : Scanner) : Album + {static} addPlaylist(scan : Scanner, songs : ArrayList, audiobooks : ArrayList) : Playlist + {static} save(filename : String, elements : ArrayList) : void + {static} listById(filename : String) : void + {static} listPlaylistsByName() : void + {static} listAlbumsByDate() : void + {static} listAlbumsByGenre() : void + {static} listAudioBooksByAuthor() : void + {static} extract(filename : String) : ArrayList + {static} addSongToAlbum(scan : Scanner, albums : ArrayList, songs : ArrayList) : void + {static} delPlaylist(playlists : ArrayList) : ArrayList + {static} contentOfPlaylist(playlists : ArrayList) : void + {static} contentOfAlbum(albums : ArrayList) : void + {static} main(args : String[]) : void } class Album{ - {static} serialVersionUID : long - id : int - date : Date - title : String - songs : ArrayList + Album(title : String, duration : int, artist : String, date : Date, songs : ArrayList) + getId() : int + getTitle() : String + getDuration() : int + getArtist() : String + getDate() : Date + getSongs() : void + getGenre() : String + setId(id : int) : void + setTitle(title : String) : void + setArtist(artist : String) : void + setDate(date : Date) : void + addSong(song : Song) : void + toString() : String } Album ..|> Serializable class Song{ - {static} serialVersionUID : long - artist : String + Song(title : String, duration : int, content : String, artist : String, genre : Genre) + getArtist() : String + getGenre() : String + setArtist(artist : String) : void + setGenre(genre : Genre) : void + toString() : String } Song --|> MusicalElement class MusicalElement{ - id : int - title : String + MusicalElement(title : String, duration : int, content : String) + getId() : int + getTitle() : String + getDuration() : int + getContent() : String + setId(id : int) : void + setTitle(title : String) : void + setDuration(duration : int) : void + setContent(content : String) : void } MusicalElement ..|> Serializable enum Genre{ JAZZ CLASSICAL HIPHOP ROCK POP RAP } enum Language{ FRENCH ENGLISH ITALIAN SPANISH GERMAN } enum Category{ TEEN NOVEL THEATER SPEECH DOCUMENTARY } @enduml