本文根據《Together ControlCenter6.0 入門實踐教程》(李穎譯)結合公司所用版本together,實現《TogetherControlCenter 6.0 入門實踐教程》中的airline樣本工程。我只完成了工程的建模,至於函數的編寫、調試,以及說明文檔的自動產生,在本文中均未實現。
一、工程結構
airline工程建模完成後如下圖:
說明:
1.左邊為菜單區。樹形菜單中的二級項目包括了AirLine工程中的所有內容,包括角色(Actor)、對象(Object)、用例(Use Case)、活動(Activity)。最後三項metamodels、patterns、PrimitiveTypes是由系統產生的,我們不需要動。
2.右上部分編輯區。本工程包含一個package——AirLinePD,一個Use Case——MakeReservation,一個Activity——Request Reservation。右邊的樹形菜單中展開了AirLine項目,其中包括AirLinePD、MakeReservation、Request Reservation,也清楚地顯示了本工程包含的內容。
3.右下部分為屬性區。它顯示選中的元素的屬性,供我們修改。
4.雙擊AirLinePD後進入名為AirLinePD的編輯區,如下:
5.雙擊MakeReservation後進入名為MakeReservation的編輯區,如下:
6.雙擊Request Reservation後進入名為Request Reservation的編輯區,如下:
下面我們來看看這些東西是怎麼來的。
二、步驟
1.建立工程
a.在電腦中建立一個檔案夾,命名為AirLine。開啟together,選擇開啟位置為AirLine檔案夾;
b.together開啟後,看到歡迎介面;
c.左上方的系統功能表中選擇檔案->建立->項目,選擇“UML 2.0 Project”,點“下一步”;
d.填寫項目名稱為AirLine,點“完成”,出現名為AirLine的空白編輯區。
注意三點:
i)項目儲存的位置預設為使用預設位置,即我們開啟together時選擇的目錄。由於我們已經指定了目錄,這裡不用修改;
ii)建議為每一個工程建立相應的檔案夾,否則會出現多個工程存在於同一工程目錄下的混亂情況。
iii)不要在已經開啟一個工程的情況下建立工程,因為新工程會被預設地添加到已開啟的工程中。
至此,一個名為AirLine的空項目建立完成。現在我們開始往AirLine中新增內容:即一個package——AirLinePD,一個Use Case——MakeReservation,一個Activity——Request Reservation。
2.建立包(Package)並添加類(Class)
說明:本圖的目的是展示工程中的資料關係。包可以理解為本工程。類就是工程中涉及的類。在很多工程中,類(Class)對應資料庫中相應的表(*.tbl)。
a.在名為AirLine的編輯區點右鍵,選擇New->Package。一個名為package1的Package以表徵圖的方式出現了;
b.修改Package的名稱為AirLinePD:在表徵圖上單擊名稱即可修改;也可以選中表徵圖,在右下邊的屬性欄中修改其name屬性;
至此,名為AirLinePD的Package添加完成。下一步我們為AirLinePD添加名為Flight的Class。
c.雙擊AirLinePD表徵圖,進入名為AirLinePD的空白編輯區;
d.在空白編輯區點右鍵,選擇New->Class。一個名為Class1的Class出現了;
e.修改Class1的名稱為Flight,可以直接修改,也可修改其name屬性;
至此,名為Flight的Class被添加到了AirLinePD中。眾所周之,一個Class會包含一些變數和方法,下面我們來把它們添加到Class。
f.選中Flight,點右鍵,選擇New->Attribute,一個名為Attribute1的屬性(可以理解為變數名)就出現在Flight中了;
g.修改Attribute1的名稱為date,資料類型為Date;
h.選中Flight,點右鍵,選擇New->Operation,一個名為Operation1的屬性(可以理解為方法名)就出現在Flight中了;
i.修改Operation1的名稱(name)為makeReservation,傳回型別(return type)為Boolean,添加2個參數(parameters):String型的name和int型的tKind;
至此,我們完成了為Class添加變數和方法的工作。其他的Class可以用同樣的方法添加,這裡不再贅述。下面來用連線表示類與類之間的關係。
注意:複雜的修改(例如步驟g和i)應該在屬性欄中修改。
j.連線工具在功能表列和編輯區之間的狹長部分。大家可以根據箭頭的名稱判斷其用途。
注意:帶菱形的箭頭是由Association改變其association type屬性得到的。
3.建立使用案例圖(Use Case Diagram)並添加角色(Actor)、對象(Object)、用例(Use Case)
說明:本圖表示角色、活動、本工程(系統)之間的互動關係。即展示了將來有哪些使用者來使用本系統。使用者需要本系統完成什麼功能。本系統需要承載什麼內容。
a.回到名為AirLine的編輯區。點右鍵,選擇New Diagram->Use Case。得到Use Case Diagram1;
b.修改Use Case Diagram1的名稱為MakeReservation:在表徵圖上單擊名稱即可修改;也可以選中表徵圖,在右下邊的屬性欄中修改其name屬性;
至此,名為MakeReservation的Use Case Diagram添加完成。下一步我們為MakeReservation添加角色(Actor)、對象(Object)以及用例(Use Case)。
c.雙擊MakeReservation表徵圖,進入名為MakeReservation的空白編輯區;
d.點右鍵,選擇New->Actor,得到Actor1;
e.修改Actor1的名稱為Passenger,可以直接修改,也可在屬性欄修改其name屬性;
至此,添加角色完成。本工程AirLine包含3個角色,其餘兩個按以上方法添加。下面添加Object。
f.在空白地區點右鍵,選擇New->Object,得到Object1;
g.修改Object1的名稱為AirLine Reservation System;
至此,名為AirLine Reservation System的Object被添加到了MakeReservation中。下面來添加Use Case。
h.選中AirLine Reservation System,點右鍵,選擇New->Use Case,得到UseCase1;
i.修改UseCase1的名稱為Check Availability;
j.串連角色和用例。
至此,名為Check Availability的Use Case被添加到了AirLine Reservation System中。其餘三個Use Case可用相同方法完成。
注意:用例(Use Case)要在對象(Object)內部建立,以顯示其歸屬關係。而角色(Actor)是在對象(Object)之外的。
4.建立活動圖表(Activity Diagram)並添加活動(Activity)和行動(Action)
說明:相信用過Visio的人一看就知道,是流程圖。
a.回到名為AirLine的編輯區。點右鍵,選擇New Diagram->Activity。得到Activity Diagram1;
b.修改Activity Diagram1的名稱為Request Reservation:在表徵圖上單擊名稱即可修改;也可以選中表徵圖,在右下邊的屬性欄中修改其name屬性;
至此,名為Request Reservation的Activity Diagram添加完成。下一步我們為Request Reservation添加活動(Activity)。
c.雙擊Request Reservation表徵圖,進入名為Request Reservation的空白編輯區; d.點右鍵,選擇New->Activity,得到Activity1;
e.修改Activity1的名稱為Request Reservation,可以直接修改,也可在屬性欄修改其name屬性;
至此,添加活動完成。下面添加泳道(Activity Partition)。
f.選中Request Reservation,點右鍵,選擇New->Activity Partition,得到Activity Partition1;
g.修改Activity Partition1的名稱為Plane/Flight Description;
h.用同樣的方法增加名為Flight Reservations和Reservation/Ticket Services的泳道;
注意:
i)泳道在書裡的名稱為swimlane,但在本軟體中沒找到這個東西,現在叫Activity Partition;
ii)要在Request Reservation內添加泳道,因為他們有隸屬關係。
至此,Request Reservation中三個泳道添加完畢。下面來添加Action。
i.選中Plane/Flight Description,點右鍵,選擇New->Action,得到Action1;
j.修改Action1的名稱為Get capacity(cap);
k.用同樣的方法在其他泳道裡添加相應的行動;
l.最後用Control Flow串連這些Action,若Control Flow上有解說文字,修改其label屬性。
注意:添加Action之前一定要確定其所屬的泳道。流程圖表徵圖可通過右鍵在New中選取,也可在工具條中直接選取。流程起點符號叫Initial,結束符號叫Activity Final,並行叫Fork,判斷叫Decision。
三、經驗總結
a.添加完以上內容後,回到AirLine的編輯區,可以看到,together已經將新添加的內容產生到視圖。只要內容添加正確,就可以得到工整的視圖;
b.名稱中需要隔開的,盡量使用底線。點、冒號、連接線等往往不能被接受;
c.注意層、級之間的關係。只要關係對了,視圖就是正確且有序的。