實例解析UML面向對象技術
本節向大家介紹一下UML面向對象技術的應用,通過開發俄羅斯方塊這一實例向大家介紹,相信通過本節的介紹你對UML面向對象技術的應用有深刻的認識。
基于UML面向對象技術開發俄羅斯方塊?
1.1系統描述與規劃并建立用例圖?
俄羅斯方塊的功能需求是,提供一個界面顯示當前生成的方塊狀態、下落及下一個方塊,接收用戶輸入以控制下落和旋轉,調整到***位置,當下落終止后判斷是否產生滿行,如果有滿行則消行并設置分數,當分數達到一定要求時給用戶增加等級和下降速度,之后產生新方塊,重復執行此操作,直到方塊無法被消去而阻止新方塊的產生。?
根據系統描述我們可以抽象出9個用例:用戶輸入系統、圖像顯示系統、方塊動作、新方塊生成、消行、方塊死亡、分數設置、等級設置、下降速度控制。抽取出兩個角色:用戶和控制系統。
?
用例圖用簡單的圖形符號表示出系統的活動者,用例以及它們之間的聯系,準確的表達了活動者與系統的交互情況和系統所能提供的服務。在實際問題中提取出用例是系統的一個基本任務,把系統的功能需求用用例圖清楚、準確的表達出來,在此基礎上進行對象模型的分析與設計。在開發過程中要不斷的修改和完善用例模型,推動系統的分析與設計不斷精化,努力達到系統預定目標。?
1.2系統靜態分析、類圖及順序圖?
UML面向對象技術中系統分析主要是對領域問題及其解決方案的一個分析和設計過程,關鍵是要準確找出現實世界的對象和類之間的關系,把他們映射成系統中的對象類和類之間的聯系,并加以設計和調整,最終用圖形表示出來。?
本系統中主要類有窗口類、圖形顯示類和方塊類。窗口是操作的載體,圖形顯示是與用戶進行交互的媒介,方塊類是操作的對象執行具體的動作。窗口類是整個系統的載體,操作顯示等都在其上完成;圖形顯示類提供了將方塊的布局及產生的新方塊和下一個方塊顯示給用戶,以告知用戶當前狀態。具體的動作是由方塊執行,方塊接收用戶的控制消息,執行動作,同時刷新圖形。我們要處理的關鍵是方塊,這里方塊共7種圖形,要是建立七個單一的類,則系統編寫起來會非常復雜,這時可以根據系統的共性,得到一個基類。因為各種不同的方塊的動作是一樣的,都有下降、旋轉、移動三種動作,同時各種方塊的組成相同,即4個小方塊,可以統一存儲。這樣我們創建一個虛基類,它本身不創建實際對象,只提供操作和存儲功能,不同形狀的方塊對象由各子類創建。創建對象時,由子類的構造函數給類的屬性賦值,決定了類對象的形狀。類圖和具體方塊的形狀如圖2類圖及實例對象模型所示。?
在產生新對象時,只需創建一個對象并把對象賦給基類對象指針,就可以用全局基類指針來控制各種動作,而不用對各個子類單獨處理。系統只需對基類對象指針作移動、旋轉、下降等操作,而不用關心當前對象是那個類創建的。這樣操作和具體對象分離,就簡化了程序的控制,使全局的設計達到***化。?
通過發現類、類對象,明確他們的含義和責任,確定屬性和操作,發現類之間的靜態聯系,分析對象類之間的一般與特殊關系、部分與整體關系,研究類的繼承性、多態性,調整和精化類之間的聯系,使其能更準確地描述系統的靜態特征。?
順序圖表示完成某個行為的對象類和這些對象類之間所傳遞的消息的時間順序。用戶進入系統后,通過鍵盤輸入對方塊做動作控制,控制系統根據輸入或系統等待時間決定方塊的動作,當方塊下落到遇到障礙后,控制系統得到消息進行消行、分數設置等,見圖3順序圖。?
1.3動態分析設計及狀態圖?
UML面向對象技術中狀態圖用于描述系統的行為,描述類的一個對象在其生存周期間的行為,表現為一個對象所經歷的狀態序列,引起狀態或活動轉移的事件,以及因狀態或活動轉移而伴隨的動作,可以描述用例及整個系統的動態行為。在對確定的對象進行行為建模時,所選擇對象生存期中的狀態數量是有限的。對象處于每個狀態的持續時間也是有限的。當發生某個事件,或完成了某個動作或活動的執行,都會觸發狀態的轉移。首先選擇初始狀態和終結狀態,然后發現對象的各種狀態,確定狀態可能發生的轉移,把必要的動作加到狀態或轉移上。根據俄羅斯方塊的系統描述,功能要求,分析得到系統的狀態圖
總結?
利用上述方法,設計了俄羅斯方塊游戲,并用C++Builder6.0作為開發工具實現了系統,如果需要添加新的方塊形狀只需新建一個類并在控制中加入新建對象的過程即可,充分體現了系統的可擴充性,可維護性等。雖然游戲較小,但足可以生動的展現了面向對象UML技術的強大功能,不僅能夠提高開發效率,提高軟件質量,加速開發過程,而且具有較好的可重用性、可擴充性、可維護性和可移植性。?
【編輯推薦】