从UML模型到C++代码..pptVIP

  • 14
  • 0
  • 约3.47千字
  • 约 33页
  • 2019-01-03 发布于湖北
  • 举报
入口动作的执行 void Microwave::onEntry() { switch (mystate) { case InitialCooking: setTimer(); turnOnLight(); turnOnTube(); break; case Complete: turnOffTube(); turnOffLight(); soundBeep(); break; case IdleDoorOpen: turnOnLight(); break; case IdleDoorClosed: turnOffLight(); break; case Interrupted: turnOffLight(); clearTimer(); break; case Extended: addMinuteToTimer(); break; default: //发出错信号 }; } 微波炉的状态图 为对象要响应的各事件引入方法 Class Microwave { enum state {InitialCooking, Complete, IdleDoorOpen, IdleDoorClosed, Interrupted, Extended} state myState; void turnOnLight(); void turnOffLight(); void turnOnTube(); void turnOffTube(); void addMinuteToTimer(); void clearTimer(); void setTimer(); void soundBeep(); Public: void doorOpen(); void doorClosed(); void buttonPush(); void timerTimeout(); … … } 事件处理函数的定义 void Microwave::doorOpen() { switch (mystate) { case InitialCooking: mystate=Interrupted; onEntry(); break; case Complete: mystate=IdleDoorOpen; onEntry(); break; case IdleDoorOpen: break; case IdleDoorClosed: myState=IdleDoorOpen; onEntry(); break; case Interrupted: break; case Extended: myState=Interrupted; onEntry(); break; default: //发出错信号 }; } 存在监护条件和与转换相关的动作时 if (cond1) { onExit(); action1(); state=state2; onEntry(); } else if (cond2) { onExit(); acti

文档评论(0)

1亿VIP精品文档

相关文档