• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-60  評(píng)論-111  文章-0  trackbacks-0
            介紹
                Boost狀態(tài)機(jī)庫(kù)一個(gè)應(yīng)用程序框架,你可以用它將UML狀態(tài)圖快速的轉(zhuǎn)換為可執(zhí)行的c++代碼,而不需要任何的代碼生成器。它支持幾乎所有的UML特征,可以直接了當(dāng)?shù)霓D(zhuǎn)換,并且轉(zhuǎn)換后的c++代碼就像對(duì)狀態(tài)機(jī)進(jìn)行一次文本描述一樣具體可讀性。

            如何閱讀這個(gè)教程
                這個(gè)教程是以線性閱讀的方式進(jìn)行的章節(jié)設(shè)計(jì)。如果你是第一次看這個(gè)教程的話,你可以從頭開(kāi)始讀,到你覺(jué)得了解的東西對(duì)你手頭的任務(wù)來(lái)說(shuō)已經(jīng)足夠時(shí)就停止。具體可以這樣:
                * 如果你的任務(wù)是要實(shí)現(xiàn)一個(gè)小的、簡(jiǎn)單的,并且有很少幾個(gè)狀態(tài)的狀態(tài)機(jī),那么下面的“初級(jí)主題:秒表”里所講的就差不多夠你用的了。
                * 如果你要做一個(gè)有很多狀態(tài)的大型狀態(tài)機(jī),你可以看一下“中級(jí)主題:數(shù)碼相機(jī)”,那里的講解可能對(duì)你有幫助。
                * 最后,如果你是一個(gè)要?jiǎng)?chuàng)建異常復(fù)雜狀態(tài)機(jī)的用戶,或者是一個(gè)想要評(píng)估一個(gè)Boost狀態(tài)機(jī)的設(shè)計(jì)師的話,你就要看一下“高級(jí)主題”部分。并且,我還強(qiáng)烈建議你看一下Rationle里的Limitions部分。

            Hello World!
                我們將要從一個(gè)最簡(jiǎn)單程序開(kāi)始我們的第一步,狀態(tài)圖如下:

            對(duì)于這個(gè)狀態(tài)圖,我們的實(shí)現(xiàn)代碼如下:
             1#include <boost/statechart/state_machine.hpp>
             2#include <boost/statechart/simple_state.hpp>
             3#include <iostream>
             4
             5namespace  sc = boost::statechart;
             6
             7// 為了避免寫(xiě)public,下面聲明的類型全部為struct。
             8// 如果你不在乎的話可以把它們都改成class。
             9
            10// 我們需要先聲明一下初始狀態(tài),這是因?yàn)槲覀円诙x狀態(tài)機(jī)時(shí)使用它
            11// 但又不得不在狀態(tài)機(jī)這后定義它。
            12
            13struct  Greeting;
            14
            15// Boost.Statechart大量應(yīng)用模板模式。
            16// 派生類必須將自己做為基類模板的第一個(gè)參數(shù)。
            17//
            18// 狀態(tài)機(jī)必須要知道當(dāng)其初始化后進(jìn)行的第一個(gè)狀態(tài)。
            19// 這就是為什么Greeting要做為每二個(gè)模板參數(shù)。
            20// (譯者注:也就是說(shuō)Greeting狀態(tài)是Machine狀態(tài)機(jī)初始化后進(jìn)入的第一個(gè)狀態(tài))
            21struct  Machine : sc::state_machine< Machine, Greeting > {};
            22
            23// 對(duì)于每一個(gè)狀態(tài),我們需要為其指明:它屬于哪一個(gè)狀態(tài)機(jī),它位于狀態(tài)圖的哪個(gè)位置。
            24// 我們用simple_state<>的上下文參數(shù)就可以完成這些指定了。
            25// 對(duì)于我們目前的這個(gè)簡(jiǎn)單的狀態(tài)機(jī)來(lái)說(shuō),上下文就是狀態(tài)機(jī)(Machine)
            26// 所以,Machine必須要做為simple_state的第二個(gè)模塊參數(shù)。
            27// (關(guān)于上下文參數(shù)的詳細(xì)解釋在下一個(gè)例子中有)
            28struct  Greeting : sc::simple_state< Greeting, Machine >
            29{
            30  // 一旦狀態(tài)機(jī)進(jìn)行一個(gè)狀態(tài)的時(shí)候,它就要?jiǎng)?chuàng)建一個(gè)相應(yīng)狀態(tài)類的對(duì)象(類實(shí)例)
            31  // 只要狀態(tài)機(jī)保持在這個(gè)狀態(tài)下,這個(gè)對(duì)象就會(huì)一直存在。
            32  // 最后,當(dāng)狀態(tài)機(jī)離開(kāi)這個(gè)狀態(tài)時(shí),對(duì)象被銷毀。
            33  // 所以,一個(gè)狀態(tài)的進(jìn)入動(dòng)作就是這個(gè)狀態(tài)類的構(gòu)造器,而它的退出動(dòng)作則是它的析構(gòu)類。   Greeting() { std::cout <<  "Hello World!\n" ; }  // 進(jìn)入
            34  ~Greeting() { std::cout <<  "Bye Bye World!\n" ; }  // 退出
            35}
            ;
            36
            37int  main()
            38{
            39  Machine myMachine;
            40  // 構(gòu)造完?duì)顟B(tài)機(jī)后,它并未開(kāi)始運(yùn)行。我們要通過(guò)調(diào)用它的initiate()來(lái)啟動(dòng)它。
            41  // 同時(shí),它也將觸發(fā)它的初始狀態(tài)(Greeting)的構(gòu)造。
            42  myMachine.initiate();
            43  // 當(dāng)我們離開(kāi)main()函數(shù)時(shí),myMachine將被銷毀,這將導(dǎo)致它銷毀它內(nèi)部的所有活動(dòng)的狀態(tài)類。
            44  // (譯者注:為什么會(huì)說(shuō)所有?這是因?yàn)橐粋€(gè)狀態(tài)機(jī)可以同時(shí)保持在多個(gè)狀態(tài)中,可以參考“高級(jí)主題”部分)
            45  return  0;
            46}
            這個(gè)程序會(huì)顯示“Hello World!”和“ Bye Bye World! ”,然后退出。
            posted on 2010-08-16 14:42 shaker(太子) 閱讀(5731) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C++
            2021最新久久久视精品爱| 99久久香蕉国产线看观香| 久久久久亚洲精品天堂| 久久精品国产亚洲av麻豆小说 | 日韩精品久久久久久| 99热热久久这里只有精品68| 久久久久国产日韩精品网站| 香蕉久久夜色精品国产尤物| 国产精品久久久福利| 狠狠色综合久久久久尤物| 欧美午夜A∨大片久久| 男女久久久国产一区二区三区 | 精品一久久香蕉国产线看播放 | 99久久国产综合精品五月天喷水| 国内精品伊人久久久久影院对白| 伊人久久精品影院| 伊人久久综合热线大杳蕉下载| 精品综合久久久久久98| 国产成人精品久久综合 | 狠狠色丁香久久婷婷综合蜜芽五月| 久久久久se色偷偷亚洲精品av| 亚洲国产成人久久综合碰碰动漫3d| 香蕉久久夜色精品国产2020| 国产亚洲成人久久| 久久精品aⅴ无码中文字字幕重口| 日韩va亚洲va欧美va久久| 久久ww精品w免费人成| 亚洲伊人久久综合影院| 国产成人精品久久一区二区三区av | 久久久久99精品成人片欧美| 久久久精品久久久久特色影视| 国内精品久久国产大陆| 精品国产乱码久久久久久呢| 亚洲国产精品久久久久久| 中文字幕久久久久人妻| 狠狠色丁香久久婷婷综合蜜芽五月| 久久精品亚洲精品国产欧美| 国产福利电影一区二区三区久久老子无码午夜伦不 | 97久久天天综合色天天综合色hd| 一本一本久久A久久综合精品| 人人狠狠综合久久亚洲高清|