@startuml
package com.iluwatar.objectmother {
  class RoyaltyObjectMother {
    + RoyaltyObjectMother()
    + createDrunkKing() : King {static}
    + createFlirtyQueen() : Queen {static}
    + createHappyDrunkKing() : King {static}
    + createHappyKing() : King {static}
    + createNotFlirtyQueen() : Queen {static}
    + createSoberUnhappyKing() : King {static}
  }
  class Queen {
    - isDrunk : boolean
    - isFlirty : boolean
    - isHappy : boolean
    + Queen()
    + getFlirted(king : King) : boolean
    + isFlirty() : boolean
    + makeDrunk()
    + makeHappy()
    + makeSober()
    + makeUnhappy()
    + setFlirtiness(flirtiness : boolean)
  }
  interface Royalty {
    + makeDrunk() {abstract}
    + makeHappy() {abstract}
    + makeSober() {abstract}
    + makeUnhappy() {abstract}
  }
  class King {
    ~ isDrunk : boolean
    ~ isHappy : boolean
    + King()
    + flirt(queen : Queen)
    + isHappy() : boolean
    + makeDrunk()
    + makeHappy()
    + makeSober()
    + makeUnhappy()
  }
}
Queen ..|> Royalty 
King ..|> Royalty 
@enduml