安裝完成Visual Studio 2010 Feature Pack 2之後我們便可以將分析完成的UML Class Diagram使用『Generate Code』產生程式碼,為演示這樣的一個塑模的設計流程,我們以一個簡單的Shopping網站為例。範例中會使用一些簡單的常被業界所使用的OOA & OOD的分析方法。如何透過Use Case找出領域模型 (Domain Class Diagram),
最近筆者有對公司內部上一些(UML塑模設計 使用 VS 2010) 的相關課程,課程中筆者介紹UML的基本概念與Use Case Diagram基本的Notation使用方式,課後將一些資料再進行整理一下成此篇文章。
安裝完成Visual Studio 2010 Feature Pack 2之後我們便可以將分析完成的UML Class Diagram使用『Generate Code』產生程式碼,為演示這樣的一個塑模的設計流程,我們以一個簡單的Shopping網站為例。範例中會使用一些簡單的常被業界所使用的OOA & OOD的分析方法。如何透過Use Case找出領域模型 (Domain Class Diagram),以及如何透過UML的循序圖 (Sequence Diagram)推演法方式找出物件會有的 (作業/方法)。
在進行塑模設計之前我們先來看一下這個Shpooing網站的Scenario (情境):
顧客至Shopping網站購物,首先會瀏覽型錄,決定商品後放入購物車,結帳,並填寫送貨單,包含送貨地址、收件人等資訊,始完成訂購。
接著:
(依照上方情境畫出Shopping 的Use Case)
一般來說使用OOA找出Domain物件的分析方式就是直接在Use Case裡找出所謂的『名詞』物件,此又俗稱名詞分析法,這是一個比較簡單且普遍使用的一種方式,傳統的資料導向也是類似的方式,找出的可能資料的實體ERM。
在顧客Shopping的情節(Scenario)中,我們可以找出會有『顧客』、『購物車』、『商品』、『交易紀錄』、『送貨單』、 『送貨地址』、 『收件人』等名詞(物件)。
分析的方法:在Use Case中顧客會瀏覽型錄,確定商品後會放入購物車中,瀏覽型錄不一定會購買,放入購物車為顧客會執行的一個動作,所以購物車為一個物件,而在購物車的物件當中應該會有一個”放入購物車”的作業(Operation),且傳入”商品”物件。在情節當中找出屬於子類型的名詞(屬性),通常不會一次全找出,有些一定會存在的如:顧客一定會有姓名等資訊。
先找出所謂的領域模型,而其實就是一種初步的類別圖,又可稱為Domain Class Diagram。也為一種Conceptual Modeling。
再重複一次:在Scenario中出現的名詞、詞組通常都會是在Conceptual Modeling淺在的類別/物件或屬性。當然,這時候我們通常會再過濾掉一些不必要的名詞 (如:同義詞、補助詞) 等等。接著找出所謂的後選類別,並考慮其中的連結關係(Association),要包括多重性(如:一對多、多對一、多對多..等關係)
此時,根據候選類別可以找出如下的Domain Class Diagram,此時為概念性Conceptual Modeling所以還未具備任何屬性:
接著我們再繼續檢視類別的完整性,補足遺漏的類別。文件中規範的條件或限制一併考慮進來。決定名詞項目為類別或是屬性。通常之前收集到的名詞項目均被定義為獨立的類別,但有時它可能是依附在某個類別下的屬性。然而,除非能夠確定該名詞項目所代表的只是一個數值或字串,否則最好還是將該名詞項目當成類別。
進一步檢視的結果:剛才的『送貨地址』、 『收件人』應為『送貨單』類別的屬性,而顧客應該要有姓名等資訊。推導出循序圖(Sequence Diagram),物件間作業的關係,完成合理的流程。
回到前面敘述之Scenario,顧客瀏覽商品,將商品置入購物車並結帳填寫送貨單等,這是一連串的動作與流程。使用Sequence Diagram我們便可輕易的推導出各個物件需要實作什麼作業(Operation/Method)以便可以完成一連串的工作。一般來說不只一個流程,因此在實際的分析方式會By功能來進行分析,這有許多不同的角度,也要視實際計統需求而定,從Use Case的角度來說,可說就是該Use Case的參與者會進行的動作。
因此顧客購物的Sequnce Diagram結果如下:
經由Sequence Diagram進一步檢視的結果,我們發現各個物件會需要哪些(Operation/Method),比如:商品會需要GetGoodsName()、購物籃會有InsertGood()等方法等等,因此此時類別圖變會成如下:
現在可以開使產生程式碼。在安裝了Visual Studio 2010 Feature Pack 2後,在UML Class Diagram圖中按下滑鼠右鍵會有 [Generate Code]選項:
接著先使用預設的Class類別方式,如下圖:
此時Visual Studio 2010會建立一個GenerateCodeModelingTestProject的Library專案,包含UML Class Diagram的程式碼框架,如下圖,這時可以由Program撰寫所需要的程式碼了。
如上範例展示了以Visual Studio 2010進行塑模設計的方法,下次有機會筆者再介紹更深入的部分,謝謝各位。
PS:
不過當然,程式碼中的中文屬性名稱在實務上是不建議的,本範例只是提供一個示意。在此說明。
如有勘誤不吝指正^_^
範例程式下載:
GenerateCodeModelingTestProject.rar
簽名:
學習是一趟奇妙的旅程
這當中,有辛苦、有心酸、也有成果。有時也會有瓶頸。要能夠繼續勇往直前就必須保有一顆最熱誠的心。
軟體開發之路(FB 社團):https://www.facebook.com/groups/361804473860062/
Gelis 程式設計訓練營(粉絲團):https://www.facebook.com/gelis.dev.learning/
如果文章對您有用,幫我點一下讚,或是點一下『我要推薦』,這會讓我更有動力的為各位讀者撰寫下一篇文章。
非常謝謝各位的支持與愛護,小弟在此位各位說聲謝謝!!! ^_^