@startuml
'https://plantuml.com/sequence-diagram
skinparam style strictuml
skinparam classAttributeIconSize 0
skinparam circledCharacterRadius 0
skinparam circledCharacterFontSize 0
skinparam classFontStyle Bold
'autonumber


interface AntFacadeController<<interface>>{

}

enum STATE <<enum>> {
    FREE
    OBSTACLE
    ANTHILL
}


class Graph {
     width
     height
}
abstract Node <<abstract>>{
    food
}



abstract Ant <<abstract>>{

}

class AntHill {

}

class Soldier extends Ant{

}

class Worker extends Ant{
}


class ControlAnt implements AntFacadeController{
}

class Pheromone{
    quantity
}

abstract class Node2d extends Node{
}

Node - Node : est voisin de >
ControlAnt -- Graph : possède un >
ControlAnt --- Ant : possède des >
ControlAnt -- AntHill : possède des >
Graph -- Node2d : composé de >
Ant  - Node : est sur le >
Node --  STATE : est >
Node - Pheromone : contient >
Node - AntHill : est sur le <

Ant -u- AntHill : provient de >
Pheromone - AntHill : provient de >


@enduml