@startuml
'https://plantuml.com/class-diagram

skinparam style strictuml
skinparam classAttributeIconSize 0
skinparam classFontStyle Bold
hide enum methods

class Graphe #back:Wheat;line.bold {
    -taille[*][*]: Integer
    -caseDejaPrise[*][*]: Boolean
    -longueur:Integer
    -largueur:Integer
    -size:Integer
    -nbrNoeudDansGraphe:Integer
    -nombreColonie:Integer

    <<Create>>Graphe(longueur, largueur)
    +CreationEmplacement();
    +getEmplacementNoeud(n:Noeud): Integer
    +Obstacle()
}


class Noeud{
    -coordonneeNoeud

    <<Create>>Noeud(g:Graphe)
    +getCoordonneNoeud()
    +setCoordonneNoeud()
}

class Aretes {
    -taille[*][*]: Integer
    -coordonnee: Integer

    <<Create>>Aretes(g:Graphe, n:Noeud)
    +Affichage()
    -afficheDonnee(x.coordonnee, y.coordonnee)
    -valideDonnee(x.coordonnee, y.coordonnee):Boolean
    -deplacementNoeud()
}

class Colonie {
    +nomColonie():String
}

interface Fourmis <<interface>> #lightblue;line:blue {
    +coordonnee(N:Noeud)
    +residenceDeBase(N:Noeud)
    +colonie()
}
class Reine #lightblue;line:green {
    -residenceDeBase:Noeud
    -colonie:Colonie
    -coordonnee:Noeud

    <<Create>>Reine(g:Graphe, n:Noeud)
    +donnerNaissance(Integer, N:Noeud, C:Colonie, G:Graphe)
    +coordonnee(N:Noeud)
    +residenceDeBase(N:Noeud)
    +colonie(C:Colonie)
}

class Soldat #lightblue;line:green {
    -residenceDeBase:Noeud
    -colonie:Colonie
    -coordonnee:Noeud
    -ListeNoeud:ArrayList<Noeud>
    -numeroSoldat:Integer
    -graphe:Graphe

    <<Create>>Soldat(N:Noeud, C:Colonie, G:Graphe, Integer)
    +coordonnee(N:Noeud)
    +residenceDeBase(N:Noeud)
    +colonie(C:Colonie)
    +patrouille(N:Noeud)
    +enMouvement()
}

class Etranger #lightblue;line:green{
    -reside:Noeud
    residenceDeBase(N:Noeud)
}


Graphe "1" *--> "0..*" Noeud
Graphe "1" *-left-> "1" Colonie

Noeud "\n1" *-> "0..*" Aretes : \n Relie  >
Aretes "0..*" -> "1" Noeud : Relie noeuds adjacents >

Graphe .. Aretes : <<use>>
Colonie <.. Fourmis : <<use>>
Noeud "1" o--> Fourmis : Contient
Fourmis --> Reine : Occupé par une >
Fourmis --> "\t\t0..*" Etranger : Peut contenir >
Reine "1" --> "*" Soldat : Donne naissance >

@enduml