@startuml
abstract class Media{
    #String titre
    +getInformations()
}
class Livre {
    -String isbn
    -String auteur
    -int nbPages
}
class BluRay{
    -String auteur
    -String duree
    -int anneeSortie
}
class Magazine{
    -int numero
    -Datetime datePublication
}

class Adherent{
    -String numero
    -String nom
    -String prenom
    -String email
    -Datetime dateAdhesion
    -genererNumero()
    +getInformations()
    +checkAdhesionValide()
    +renouvelerAdhesion()
}
class Emprunt{
    -Datetime dateEmprunt
    -Datetime dateRetourEstimee
    -Datetime dateRetourReel
    +getInformations()
    +checkEmpruntEnCours()
    +checkEmpruntEnAlerte()
    +checkEmpruntDureeDepassee()
    -calculerDureeRetourEstimee()

}
Media <|-- Livre
Media <|-- BluRay
Media <|-- Magazine

Adherent "1..1" <-- Emprunt : fait >
Emprunt --> "1..1" Media : contient >

@enduml
