TrafficLight
red : Lamp
yellow : Lamp
green : Lamp
leftGreenArrow : Lamp ?
rightGreenArrow : Lamp ?
arrowsOff ?
[ arrowsOff <=> no leftGreenArrow.on && no leftGreenArrow.flashing ]
[ arrowsOff <=> no rightGreenArrow.on && no rightGreenArrow.flashing ]
xor TrafficSignals
proceed
[ red.off ]
[ yellow.off ]
[ green.on ]
prepareToStop
[ red.off ]
[ yellow.on ]
[ green.off ]
stop
[ red.on ]
[ yellow.off ]
[ green.off ]
warning
[ red.off ]
[ green.off ]
prepareToGo
[ red.on ]
[ yellow.on ]
[ green.off ]
allStop
[ yellow.off ]
[ green.off ]
allYellow
[ red.off ]
[ green.off ]
advancedLeft
[ red.on ]
[ yellow.off ]
extendedLeft
[ red.on ]
[ yellow.off ]
abstract xor Lamp
on
off
flashing
TrafficLightSystem
Lamps
LeftGreenArrow ?
RightGreenArrow ?
redAndYellowToGreen ?
allWayFlashingRedAsStop ?
allWayYellow ?
xor advancedOrExtendedLeft ?
greenFlashing
leftArrow
[ no LeftGreenArrow ]
[ no RightGreenArrow ]
[ no redAndYellowToGreen ]
[ no allWayFlashingRedAsStop ]
[ no allWayYellow ]
[ no advancedOrExtendedLeft ]
[ red.on ]