@startuml class Graph{ + final class + private final String mapId; + private final String mapName; + private final List nodes; + private final GraphStatistics graphStatistics; - public GraphStatistics getGraphInformation() - public Node get(int id) - public int size() - public List getNodes() - public String getMapId() - public String getMapName() - public Graph transpose() { } class Node { + private final int id; + private final Point point; + private final ArrayList successors; -public Node(int id, Point point) -protected void addSuccessor(Arc arc) -public int getId() -public int getNumberOfSuccessors() -public boolean hasSuccessors() -public List getSuccessors() -public Point getPoint() -public boolean equals(Object other) } class Path { + private final Graph graph; + private final Node origin; + private final List arcs; - public Graph getGraph() - public Node getOrigin() - public Node getDestination() - public List getArcs() - public boolean isEmpty() - public int size() - public boolean isValid() - public float getLength() - public double getTravelTime(double speed) - public double getMinimumTravelTime() } class Arc { + public abstract Node getOrigin(); + public abstract Node getDestination(); + public abstract float getLength(); - public double getTravelTime(double speed) - public double getMinimumTravelTime() - public abstract RoadInformation getRoadInformation(); - public abstract List getPoints(); } class Roadinformation { + public enum RoadType + private final RoadType type; + private final AccessRestrictions access; + private final boolean oneway; + private final int maxSpeed; + private final String name; - public RoadInformation(RoadType roadType, AccessRestrictions access, - boolean isOneWay, int maxSpeed, String name) - public AccessRestrictions getAccessRestrictions() - public RoadType getType() - public boolean isOneWay() - public int getMaximumSpeed() - public String getName() - public String toString() } class ArcBackward { } class ArcForward { } Node --* Arc : une origine Node --* Arc : une destination Node --* Graph : une origine Node --* Graph : une liste de nodes Graph --* Path : a un graphe Node --* Path : a une origine Arc --* Path : a une liste d'arcs ArcBackward <|-- Arc ArcForward <|-- Arc Roadinformation "1..*"--"1..*" Arc : arcs associated infos @enduml