﻿@startuml
skin rose

header Mastermind domain model
title Round
right footer (CC-BY-SA) 2022, RGV

class Guest
class Feedback
class SecretCode
class Winner
class CodePeg
class KeyPeg
class Codemaker
class Codebreaker
class Board
class Row
class Player
class Combination
enum CodeColor{
Red, Blue,
Yellow, Green,
White, Black 
}
enum KeyColor{
None, White, Black
}

SecretCode --|> Combination
Combination o-- "4" CodePeg
CodePeg o-- CodeColor

Winner ..> SecretCode : guesses
Codemaker ..> SecretCode : places
Codebreaker --> Guest : makes
Guest ..> SecretCode : attempts\nmatch\nto

Winner -u-|> Codebreaker
Codebreaker -u-|> Player
Codemaker -u-|> Player
Codemaker --> Feedback : gives
Codebreaker --> Feedback : receives

Feedback o----- "4" KeyPeg
KeyPeg o-- KeyColor

Board *-- "10" Row
Row *-- Combination : has\nholes\nfor
Row *-- Feedback : has\nholes\nfor

Feedback --> SecretCode : relates\nto
Feedback --> Combination : relative\nto

Guest o-- Combination
Feedback --> Guest : responses\nto


@enduml