跳轉到內容

軟體工程/UML/示例簡介

來自華夏公益教科書

實驗 1a: StarUML (30 分鐘)

[編輯 | 編輯原始碼]

我們需要學習一個 UML 建模工具。StarUML[1]是一個免費的 UML 建模工具,功能非常強大,它允許進行正向和逆向工程。它支援 Java、C++ 和 C#。一個小小的缺點是它不再受支援,因此它僅限於 Java 1.4 和 C# 2.0,這非常不幸。

啟動 StarUML,在啟動時選擇“空專案”。然後在模型資源管理器中透過右鍵單擊“無標題”來新增一個新模型。之後,您可以透過右鍵單擊模型來建立各種 UML 圖表。

可以在以下 StarUML 教程中找到更多詳細資訊。 [2]


實驗 1b: objectiF (30 分鐘)

[編輯 | 編輯原始碼]

另一個 UML 建模工具,個人使用免費,是 objectiF。[3]要學習如何使用 objectiF,請檢視他們的教程。[4]

實驗 2: 餐館示例 (30 分鐘)

[編輯 | 編輯原始碼]

使用課堂上的餐館示例,使用 StarUML 或您喜歡的 UML 建模工具建立我們在課堂上建立的所有不同的 UML 圖表。

完成類圖後,嘗試“生成程式碼”功能。在 StarUML 中,您右鍵單擊類圖,然後選擇“生成程式碼”。檢視生成的類並將其與您的模型進行比較。

重要說明:餐館示例實際上不是一個很好的示例,因為它可能會讓你覺得角色變成了物件。它們不會。角色永遠不會變成物件,角色始終在系統外部,因此下面的俄羅斯方塊示例要好得多。


實驗 3: 俄羅斯方塊 (60 分鐘)

[編輯 | 編輯原始碼]

我們大多數人都知道俄羅斯方塊遊戲。[5] [6](然而,我有一些學生不知道,所以如果你不知道,請先了解它並玩一會兒,然後繼續這個實驗)。如果你還記得課堂上的內容,在發明 UML 時,三位先驅者從一個名為面向物件分析和麵向物件設計的東西開始。所以我們來做吧。

面向物件分析和設計

[編輯 | 編輯原始碼]

我們想編寫俄羅斯方塊遊戲。但在我們開始之前,我們需要分析一下游戲。我們首先需要識別“物件”,其次我們必須找出它們是如何相互關聯和交流的。因此,對於這個實驗,請執行以下操作

  • 每組 5 到 6 名學生組成一個小組
  • 觀察遊戲,嘗試識別物件,例如,掉落的磚塊就是物件
  • 讓每個學生代表一個物件,例如一塊磚
  • 那個學生/磚塊有哪些屬性?(顏色、形狀等)
  • 可以有多少塊磚?它們是如何相互作用的?
  • 玩遊戲的人也是一個物件還是一個角色?
  • 玩家如何與磚塊互動?
  • 磚塊的移動有哪些限制?你將如何實施它們?
  • 你將如何計算遊戲的得分?

遊戲時間

[編輯 | 編輯原始碼]

一旦你確定了所有物件,就開始玩真正的遊戲。對於這個遊戲,一個學生是“角色”,一個學生會寫分鐘(協議),其他學生將是物件(例如磚塊)。現在開始遊戲:角色和不同的物件透過相互交談進行互動。寫分鐘的學生將寫下誰對誰說了什麼,即物件與角色之間以及物件之間所說的所有內容。

至少玩一兩輪。你的模擬有效嗎?你遺漏了什麼嗎?也許你需要新增另一個物件,比如計時器。

現在我們需要建立遊戲和 UML 之間的聯絡。

  • 用例圖:這非常簡單,你將角色識別為玩家,並寫下玩家可以執行的所有用例。你應該檢查的一個問題是計時器是否是角色。用例圖告訴你你的系統如何與其環境互動。繪製俄羅斯方塊的用例圖。
  • 活動圖:從你的遊戲中,你會發現有一些重複,並且在遊戲的不同階段必須做出一些決定。這可以用活動圖很好地表示。為遊戲繪製一個高階活動圖。

接下來我們來談談我們的分鐘(協議):它包含了我們繪製序列圖和最終得到協作圖所需的所有資訊。

  • 序列圖:看一下你的分鐘(協議)。首先,識別物件並將它們水平放置。然後逐行瀏覽你的分鐘。對於你的分鐘中的每一行,在你的序列圖中繪製相應的行。正如你所看到的,序列圖與分鐘是一一對應的。
  • 協作圖:從序列圖很容易建立協作圖。做吧。
  • 類圖(關聯):從協作圖中,你可以推斷出類和類需要的函式。至於屬性,有些你已經確定了(例如磚塊的顏色和形狀),其他的你需要思考一下。繪製類圖,併為每個類嘗試猜測什麼屬性是該類正常工作所必需的。
  • 類圖(繼承):如果你對面向物件語言有更多經驗,你可以嘗試識別超類,即嘗試使用繼承來考慮物件的共同特徵。

如果你正確地完成了這個實驗,你將學到很多東西。首先,你已經看到,透過模擬,可以識別物件、物件之間的連線、隱藏的要求以及你假設中的缺陷。其次,使用仔細編寫的模擬協議足以建立序列圖、協作圖和類圖。所以建立這些圖沒有魔法,只是玩遊戲而已。雖然你可能認為這只是一個有趣或愚蠢的遊戲,但我建議你:在你開始的每個新專案中都玩這個遊戲。

參考文獻

[編輯 | 編輯原始碼]
  1. http://staruml.sourceforge.net/en/ StarUML - 開源 UML/MDA 平臺
  2. http://cnx.org/content/m15092/latest/ StarUML 教程
  3. http://www.microtool.de/objectif/en/index.asp objectiF - 使用 UML 進行模型驅動軟體開發的工具
  4. http://www.microtool.de/mT/pdf/objectiF/01/Tutorials/JavaTutorial.pdf 使用 UML 開發 Java 應用程式
  5. http://en.wikipedia.org/wiki/Tetris 俄羅斯方塊
  6. http://www.percederberg.net/games/tetris/index.html Java 俄羅斯方塊


  1. 說出兩位 UML 發明者的名字。
  2. 現在誰管理 UML 標準?
  3. 為“打磚塊”遊戲繪製一個用例圖。
  4. 看一下下面的活動圖。用你自己的話說描述一下資訊流。 # 在課堂上,我們介紹了餐館的例子,拉爾夫是想要吃晚飯的顧客。他的服務員是萊納斯,廚師是拉里,收銀員是史蒂夫。拉爾夫點了一份漢堡和啤酒。請畫一個序列圖,顯示從點餐到拉爾夫拿到他的啤酒和漢堡的步驟。
  5. 考慮下面的類圖。請編寫實現此類圖的 Java 類。 # 你應該為一臺自動取款機編寫程式碼。繪製一個用例圖。
  6. 將下面的序列圖轉換為類圖。
  7. 結構圖和行為圖有什麼區別?
華夏公益教科書