以前在做一個項目之前總是在UML的一些概念上花費極大的功夫
得出的圖形反而讓自己都含糊不清
這兩天一口氣在網上查了很多相關文章
在圖書管也翻了幾本書
給自己定義了一個UML嚴格的標准
現在拿到網上來
兄弟們幫我看看有那些地方又不妥當的地方
相互學習
首先弄清楚類圖是個什麼東西
類圖(class diagram)描述了模型的靜態結構
包括模型中的類的類的內部結構以及於其他類的關系
在結構化設計一個系統的時候類圖可以讓我們的思路更加清晰
類的內部結構就不用說了
沒什麼好說的
一個類與其他的類常見的關系(我所接觸到的關系)有
一般化關系
關聯關系
聚合關系
組合關系(合成關系)
依賴關系
其中
聚合關系合成關系又屬於關聯關系
一般化關系表現是與類之間是(is a)的關系
也就是類與類之間的繼承
接口於接口之間的繼承或者是對一個接口的實現
表示方法是用一個空心箭頭+實線
箭頭指向父類
或用空心肩頭加虛線(如果富父類是接口的話)
如圖
User定義了系統中一個用戶的原型
客戶Customer繼承了User類並且有自己特有的方法
管理員Manager類也繼承了User類
並且又自己特有的方法
而且Manager為了能夠管理客戶還實現了Cmanage這個接口
也就具備了Cmanage的所有功能
可以對客戶的余額進行操作
而且還可以刪除一個客戶
關聯關系表現為類與類之間的(has a)關系
它使一個類知道另一個類的屬性和方法
關聯關系表示的是類與類之間的持久關系
這種關系一般是表示一種業務邏輯上的關系
需要保存到數據庫中的
如圖
學生Student中存在一個班級Class的引用
在student中可以直接根據引用訪問到Class
同時在數據庫中存在兩張表tb_student
tb_class
在表tb_student中有一個字段存儲了所關聯的class記錄的id
用箭頭+實指向被關聯的類
聚合關系是關聯的一種
是一種強關聯關系
聚合關系還體現了一種整體與個體的關系
如圖
商品ShangPin是獨立的
一張進貨單JinHuoDan內可以又很多個商品
可以說進貨單JinHuoDan是整體
商品ShangPin是個體
可以由進貨單JinHuoDan導航到每個進貨單包含的商品
空心菱形+實線+箭頭指向部分
依賴關系是表現為類與類之間的一種(use a)的關系
一個類用到了另一個類
為了完成一特定的操作
但是類與類之間不存在業務邏輯上的關系
依賴關系是針對於程序來說的
依賴關系體現在程序中主要是些局部變量
方法參數
或對一個類方法的調用
如圖四:
商品管理類ShangPinManager主要對上提供查詢商品
刪除商品的功能
而這些功能的實現必須調用Dao類的某些方法來實現(一種調用關系)但是他和我們數據庫持久類Dao沒有業務上的關系
更不可能把這兩個類存到數據庫中去
虛線+箭頭指向被調用的類
另外我個人覺得利用聚合足以體現合成
沒必要分的那麼詳細
UML本身是一種工具
沒必要把太多時間花費在工具的一些概念上面
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27320.html