@startuml

enum TerritoryType {
  FOREST
  MEADOW
  FIELD
  HILL
  MOUNTAIN
  DESERT
}

class Territory {
  TerritoryType type
}

enum ResourceType {
  WOOD
  WOOL
  WHEAT
  CLAY
  ORE
}

class Resource {
  ResourceType type
}

enum ProgressType {
  MONOPOLY
  ROAD_CONSTRUCTION
  INVENTION
}

class ProgressCard {
  ProgressType type
}

enum SpecialType {
  LONGEST_ROAD
  STRONGEST_ARMY
}

class SpecialCard {
  SpecialType type
}

enum VictoryPointType {
  LIBRARY
  MARKET_PLACE
  PARLIAMENT
  CHURCH
  UNIVERSITY
}

class VictoryPointCard{
  VictoryPointType type
}

interface Card
interface Construction
abstract DevelopmentCard
class Area <? extends Construction>

Game <-- "                              *" Command
Game <-- "            *" Trade
Game <-- "25 " Card
Game <-- "95 " Resource
Game <-- "[0, 2]" Player
Game <-- " 125" Area
Game <-- "19" Territory
Game <--  "            1" Dice


Card <|-- DevelopmentCard
Card <|-- SpecialCard

DevelopmentCard <|-- ProgressCard
DevelopmentCard <|-- VictoryPointCard
DevelopmentCard <|-- KnightCard

Area <-- "[0, 1]" Construction
Construction <|-- Building
Construction <|-- Path

Area <-- "12" Territory
Player <-- "[0, 95]   " Resource
Player <-- "[0, 24]" Construction
Player <-- "  [0, 25]" Card
Territory <-- "   [0, 1]" Resource
Territory <-- "[1, 3]   " Area 
Area <-- "[0, 1]" Dock
@enduml