類圖::添加操作和方法
看到標題,也許有人會問,操作和方法不是一回事么?還真不是一回事。
操作
操作指明了目標對象狀態的轉換或返回給操作調用者值的查詢。它有名稱和參數列表,包括返回參數。操作指定了行為的結果,而不是行為本身,行為可以是一個方法,一次狀態機轉換或其他。
方法
方法是一個過程,它實現了一個操作,它有一個演算法或過程描述,調用如果解析為一個方法,將導致該過程被執行。
以上是ULM2.0對操作的方法的說明。你看懂了么,反正我是琢磨了好一會。那我就舉個例子吧。
說有一個駕駛者基類,它有有兩個派生類,分別是車主和小偷。駕駛者類聲明了一個啟動汽車的操作,車主類使用(實現)的方法是擰車鑰匙,小偷類使用(實現)的方法是直接接發動機電源線(電影里常有的)。
怎麼樣,好點沒,下面繼續今天的話題。
屬性窗口的打開方法:
雙擊類圖中的對應類框圖,選擇【General】以後,點擊【Operation】按鈕。
2.從模型樹中選擇對應的類節點,打開上下文菜單並選擇【Operations...】菜單項。
無論哪種方法都可以打開下面的操作設定對話框。嚴格講這並不是操作自己的對話框,而是屬性和操作共同的對話框。本文只關注操作部分。
添加新操作的操作主要是在紅綠藍三個矩形框中進行的。和上篇文章一樣我們在這裡只說明有(zhi)關(dao)的項目。
基本項目
基本項目通過紅框中的列表控制項來設置。
Name:變數名,可以自由輸入文本。
Parameters:在參數設定部分詳細說明,此處省略。
Retun Type:數據類型,可以自由輸入文本,也可以點從下拉菜單中選擇。在下拉菜單的最下面,還有一個【Select Type...】選項,提供了從工程中選擇類型的功能。但是選擇的結果也只是作為文本保存,起到的作用僅限於輸入輔助。這一點和屬性類型一樣。
Scope:設定操作的可視性。從下拉列表中選擇,一共有四個選項:Public/Protected/Private/Package。Package也是可選的,表示也沒有問題。但是在生成代碼時當作Public處理。
Stereotype:可以設定一些分類信息,比如property set,property get,或者constructor等。
擴展項目
操作列表中有操作被選中時,可以設定該操縱的擴展屬性。
Concurrency:用於自定操作的並發屬性。可能的選項有:
sequential:同時只能有一個調用發生。如果並發調用發生,則結果不保證。
guarded:允許並發調用發生,但同時只允許一個調用執行。
concurrent:允許並發調用發生,並保證可以正確地並發執行。
Virtual:用於指定抽象操作(虛函數)。
Static:表明該操作是類操作(靜態函數),而非實例操作。
參數設定項目
參數定義主要是通過藍框中的【Parameters】表單來進行的。可以定義多個參數,並設定他們的屬性。方法和類設定屬性的方法基本一致,此處省略。我們試著為Person類追加了兩個方法,一個是靜態方法GetMarryAge,一個是虛函數Show。Person類變成了如下的樣子。
可以看到靜態方法GetMarryAge的下面有一條橫線,而Show操作被表示成斜體。這就是UML中靜態方法和抽象操作的表達方式。
如果這還不夠,還可以再往前走一步,生成代碼。在Person類上點擊滑鼠右鍵調出上下文菜單選中【Code Engineering】-【Generate
Code】可以調出如下的生成代碼對話框。在選擇路徑之後,按下【Generate】按鈕,我們既可以得到以下代碼。
首先是頭文件
然後是cpp
不做重複的事情,這才是正確的方法應該有的樣子。
推薦閱讀:
※設計模式剖析
※(翻譯)14.4 ProtocolStateMachines
※OOD 高頻面試題 | 如何設計一個ATM
※EA&UML日拱一卒--序列圖(Sequence Diagram)::並行和臨界區
※(翻譯)14.1 Summary