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

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

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