以前在做一個項目之前總是在UML的一些概念上花費極大的功夫,得出的圖形反而讓自己都含糊不清。這兩天一口氣在網上查了很多相關文章,
在圖書管也翻了幾本書,給自己定義了一個UML嚴格的標準?,F在拿到網上來,兄弟們幫我看看有那些地方又不妥當的地方。相互學習....
首先弄清楚類圖是個什么東西:
類圖(class diagram)描述了模型的靜態結構,包括模型中的類的類的內部結構以及于其他類的關系,在結構化設計一個系統的時候類圖可以讓我們的思路更加清晰。
類的內部結構就不用說了,沒什么好說的。
一個類與其他的類常見的關系(我所接觸到的關系)有:
1.一般化關系
2.關聯關系
3.聚合關系
4.組合關系(合成關系)
5.依賴關系
其中,聚合關系合成關系又屬于關聯關系。
一般化關系表現是與類之間是(is a)的關系。也就是類與類之間的繼承,接口于接口之間的繼承或者是對一個接口的實現。表示方法是用一個空心箭頭+實線,箭頭指向父類?;蛴每招募珙^加虛線(如果富父類是接口的話)
如圖1,User定義了系統中一個用戶的原型,客戶Customer繼承了User類并且有自己特有的方法。管理員Manager類也繼承了User類,并且又自己特有的方法,而且Manager為了能夠管理客戶還實現了Cmanage這個接口,也就具備了Cmanage的所有功能,可以對客戶的余額進行操作,而且還可以刪除一個客戶。
關聯關系表現為類與類之間的(has a)關系。它使一個類知道另一個類的屬性和方法。關聯關系表示的是類與類之間的持久關系,這種關系一般是表示一種業務邏輯上的關系,需要保存到數據庫中的。
如圖2.學生Student中存在一個班級Class的引用。在student中可以直接根據引用訪問到Class.同時在數據庫中存在兩張表tb_student,tb_class,在表tb_student中有一個字段存儲了所關聯的class記錄的id。用箭頭+實指向被關聯的類
聚合關系是關聯的一種,是一種強關聯關系。聚合關系還體現了一種整體與個體的關系。如圖3:
商品ShangPin是獨立的,一張進貨單JinHuoDan內可以又很多個商品??梢哉f進貨單JinHuoDan是整體,商品ShangPin是個體??梢杂蛇M貨單JinHuoDan導航到每個進貨單包含的商品??招牧庑?實線+箭頭指向部分。

依賴關系是表現為類與類之間的一種(use a)的關系。一個類用到了另一個類,為了完成一特定的操作。但是類與類之間不存在業務邏輯上的關系。依賴關系是針對于程序來說的。依賴關系體現在程序中主要是些局部變量、方法參數、或對一個類方法的調用。如圖四:
商品管理類ShangPinManager主要對上提供查詢商品,刪除商品的功能,而這些功能的實現必須調用Dao類的某些方法來實現(一種調用關系)但是他和我們數據庫持久類Dao沒有業務上的關系,更不可能把這兩個類存到數據庫中去。虛線+箭頭指向被調用的類。

另外我個人覺得利用聚合足以體現合成,沒必要分的那么詳細。UML本身是一種工具,沒必要把太多時間花費在工具的一些概念上面。
小弟愚見,請多多指教!。。。。