Download as pdf or txt
Download as pdf or txt
You are on page 1of 1

package fsm

1 src [0..*] out


<<Interface>> package fsm.printer
State Transition
FsmAlg<M, S, F extends S, T>
+ name: String + event : char
1 target [0..*] in + machine(Machine it) : M <<Interface>>
+ state(State it) : S Printer
[0..*] transitions + finalState(FinalState it) : F
+ transition(Transition it) : T + print() : String
states
+ $(Machine it) : M
[0..*] + $(Transition it) : T
+ $(FinalState it) : F
+ $(State it) : S
FinalState
Machine <<Interface>>
PrintFsm extends
FsmAlg<Printer,Printer,Printer,Printer>
addTr(Transition t) : Machine

+ machine(Machine it) : Printer


Block Extends + state(State it) : Printer
if (it instanceof MachineExec)  + finalState(FinalState it) : Printer
  return machineExec((MachineExec) it);  + transition(Transition it) : Printer
package fsm.executable
else return super(it); 

<<Interface>>
MachineExec
ExecFsmAlg<M, S, F extends S, T, Me extends M>
StateExec
+ current: State
+ event : String
+ step(event) : State + machineExec(MachineExec it) : Me
+ $(Machine it) : M
+ step(ch)

<<Interface>> <<Interface>>
<<Interface>> ExecFsm extends PrintCurrentFsm extends
Stepper
ExecFsmAlg<Stepper,Stepper,Stepper,Stepper,Stepper> ExecFsmAlg<Printer,Printer,Printer,Printer,Printert>
+ step(event)
+ machine(Machine it) : Stepper + machineExec(MachineExec it) : Printer
+ machineExec(MachineExec it) : Stepper
+ state(State it) : Stepper
+ finalState(FinalState it) : Stepper
+ transition(Transition it) : Stepper

You might also like