@startuml

class Album {
  -id: unsigned int
  -date: std::chrono::system_clock
  -name: std::string

  +Album()
  +Album(unsigned int, std::chrono::system_clock, std::string)
  +~Album()
  +GetId()
  +GetDate()
  +SetDate()
  +GetName()
  +SetName()
}

class Artist {
  -id: unsigned int
  -name: std::string

  +Artist()
  +Artit(unsigned int, sdt::string)
  +~Artst()
  +GetId()
  +GetName()
  +SetName()
}

class Format {
  -id: unsigned int
  -titule: std::string

  +Format()
  +Format(unsigned int, std::string)
  +GetId()
  +GetTitule()
  +SetTitule()
}

class Genre {
  -id: unsigned int
  -type: std::string

  +Genre()
  +Genre(unsigned int, std::string)
  +GetId()
  +GetType()
  +SetType()
}

class Track {
  -id: unsigned int
  -duration: unsigned int
  -name: text
  -path: text
  

  +Track()
  +Track(unsigned in, unsigned int, std::string,@startuml
  +GetId()
  +GetDuration()
  +SetDuration()
  +GetName()
  +SetName()
  +GetPath()
  +SetPath()
}
 
class  Polyphony {
  -id: unsigned int
  -type: std::string

  +Polyphony()
  +Polyphony(unsignzd int, std::string)
  +~Polyphony
  +GetId()
  +GetType()
  +SetType()
}

class Subgenre {
  -id: unsigned int
  -sub_type: short int

  +Subgenre()
  +Genre(unsigned int, short int)
  +~Subgenre()
  +GetId()
  +GetSub_Type()
  +SetSub_Type()
}

class Playlist {
  -id: unsigned int
  -duration: unsigned int

  +Playlist()
  +Playlist(unsiigned int, unsiigned int)
  +~Playlist()
  +writeM3U()
  +writeXSPF()
  +GetId()
  +GetDuration()
  +SetDuration()
}

class CLI {

}


Playlist "0..*" o-- Track
Track "1..*" <|-- "1..*" Album
Track  "1..*" -- "1..*" Artist
Track "1..*" <|-- "1" Polyphony
Track "1..*" <|-- "1" Genre
Track "1..*" <|-- "1" Subgenre
Track "1..*" <|-- "1" Format

@enduml
