Boost学习-MSM翻译

用户指南:

第一章: 索引:

让我们从C++模板元编程书籍中的一个例子开始吧:

class player : public state_machine<player>

{

// The list of FSM states enum states { Empty, Open, Stopped, Playing, Paused , initial_state = Empty };

// transition actions void start_playback(play const&) { std::cout << "player::start_playback/n"; }

void open_drawer(open_close const&) { std::cout << "player::open_drawer/n"; }

void close_drawer(open_close const&) { std::cout << "player::close_drawer/n"; }

void store_cd_info(cd_detected const&) { std::cout << "player::store_cd_info/n"; }

void stop_playback(stop const&) { std::cout << "player::stop_playback/n"; }

void pause_playback(pause const&) { std::cout << "player::pause_playback/n"; }

void resume_playback(play const&) { std::cout << "player::resume_playback/n"; }

void stop_and_open(open_close const&) { std::cout << "player::stop_and_open/n"; }

friend class state_machine<player>;

typedef player p; // makes transition table cleaner

// Transition table

struct transition_table : mpl::vector11<

row < Stopped , play , Playing , &p::start_playback >,

row < Stopped , open_close , Open , &p::open_drawer >,

row < Open , open_close , Empty , &p::close_drawer >,

row < Empty , open_close , Open , &p::open_drawer >,

row < Empty , cd_detected , Stopped , &p::store_cd_info >,

row < Playing , stop , Stopped , &p::stop_playback >,

row < Playing , pause , Paused , &p::pause_playback >,

row < Playing , open_close , Open , &p::stop_and_open >,

row < Paused , play , Playing , &p::resume_playback >,

row < Paused , stop , Stopped , &p::stop_playback >,

row < Paused , open_close , Open , &p::stop_and_open >

> {};

// Replaces the default no-transition response.

template <class Event> int no_transition(int state, Event const& e) { std::cout << "no transition from state " << state << " on event " << typeid(e).name() << std::endl; return state; } };

void test() { player p; p.process_event(open_close());

}

 

找个例子是很好的说明了我们为什么使用MSM,作为一门表述性语言如果采用上述的语法可能会让人诟病。虽然找个例子尽可能多的展示了UML2.0的特性,不过MSM经过取舍提供了很多有用的定义方法。

 

第二章: UML的基础知识

1 什么是状态机?

状态机是事物生命线的描述,描述了事物生命线不同阶段的行为,使用事件的概念来表述。表述了一个特定阶段一个特定的事件触发将会做什么。状态机是事物动态行为的完整描述。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值