# States and Invariants
# ---------------------
# States
# - A state is like a condition or "mode" an object is in at a specific time.
# - Example: A door object can be in the state "Open," "Closed," or "Locked."
# - States are shown in state diagrams (special UML diagrams) or sometimes as
# notes in other UML diagrams.
# Invariants
# - An invariant is a rule or condition that must always be true for an object
# at a certain time.
# - Example: A bank account's balance must never go below zero.
# - In diagrams, invariants can be shown as notes with curly braces {} attached
# to objects or lifelines.
me : actor
door : Door
ref(Sequence Diagrams | /diagrams/uml-sequence-diagrams )
door.open() {
state( Locked )
return(fail)
}
account.withdraw() {
invariant( Never < 0 )
}