startuml

class Labyrinthe {

}
Labyrinthe "1" --> "*" Case : cases

interface Case {

}

class Mur implements Case {

}

class Sol implements Case {

}

class Personnage {
    - x : Int
    - y : Int
    - {static} LIMIT_X : int
    - {static} LIMIT_X : int
    + Personnage()
    + void deplacer(Commande c)
    + String toString()
}

abstract class Monstre {

}

class Fantome extends Monstre {

}

class Mechant extends Monstre {

}

interface JeuAbstract {
    + void evoluer()
    + boolean etreFini()
}

interface DessinAbstract {
    + void dessiner()
}

Jeu "1" --> "1" Labyrinthe : labyrinthe
Jeu "1" --> "1" Personnage : pj
Jeu "1" --> "*" Monstre : monstres

class Main {

}

class Jeu implements JeuAbstract {
    + Jeu()
    + String toString()
    + void evoluer(Commande commande)
    + boolean etreFini()
    + Personnage getPj()
}

class DessinPerso implements DessinAbstract {
    - {static} int tailleCase
    + DessinPerso(Jeu j)
    + void dessinerObjet(String s, int x, int y, BufferedImage im)
    + void dessiner(BufferedImage im)
}
DessinPerso "1" -> "1" Jeu : jeu

@enduml