@startuml set namespaceSeparator \\ namespace MyGame\\Player { class Computer { + playOneMove(rules : \\MyGame\\Rules\\IRules): string } abstract Player << abstract >> { - string name -- + __construct(name : string) + getName(): string } interface IPlayer << interface >> { + getName(): string + playOneMove(rules : \\MyGame\\Rules\\IRules): string } class Human { # prompt(gestures : array): void # showPossibilities(gestures : array): string # getInput(): string + playOneMove(rules : \\MyGame\\Rules\\IRules): string } } MyGame\\Player\\IPlayer <|.. MyGame\\Player\\Player MyGame\\Player\\Player <|-- MyGame\\Player\\Computer MyGame\\Player\\Player <|-- MyGame\\Player\\Human @enduml