布衣王子

          Email:roose2008@gmail.com QQ:79212131

          UML類(lèi)圖標(biāo)準(zhǔn)總結(jié)__大家相互學(xué)習(xí)

          以前在做一個(gè)項(xiàng)目之前總是在UML的一些概念上花費(fèi)極大的功夫,得出的圖形反而讓自己都含糊不清。這兩天一口氣在網(wǎng)上查了很多相關(guān)文章,
          在圖書(shū)管也翻了幾本書(shū),給自己定義了一個(gè)UML嚴(yán)格的標(biāo)準(zhǔn)。現(xiàn)在拿到網(wǎng)上來(lái),兄弟們幫我看看有那些地方又不妥當(dāng)?shù)牡胤健O嗷W(xué)習(xí)....

          首先弄清楚類(lèi)圖是個(gè)什么東西:
              類(lèi)圖(class diagram)描述了模型的靜態(tài)結(jié)構(gòu),包括模型中的類(lèi)的類(lèi)的內(nèi)部結(jié)構(gòu)以及于其他類(lèi)的關(guān)系,在結(jié)構(gòu)化設(shè)計(jì)一個(gè)系統(tǒng)的時(shí)候類(lèi)圖可以讓我們的思路更加清晰。
              類(lèi)的內(nèi)部結(jié)構(gòu)就不用說(shuō)了,沒(méi)什么好說(shuō)的。
              一個(gè)類(lèi)與其他的類(lèi)常見(jiàn)的關(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)是與類(lèi)之間是(is a)的關(guān)系。也就是類(lèi)與類(lèi)之間的繼承,接口于接口之間的繼承或者是對(duì)一個(gè)接口的實(shí)現(xiàn)。表示方法是用一個(gè)空心箭頭+實(shí)線,箭頭指向父類(lèi)。或用空心肩頭加虛線(如果富父類(lèi)是接口的話)

          如圖1,User定義了系統(tǒng)中一個(gè)用戶的原型,客戶Customer繼承了User類(lèi)并且有自己特有的方法。管理員Manager類(lèi)也繼承了User類(lèi),并且又自己特有的方法,而且Manager為了能夠管理客戶還實(shí)現(xiàn)了Cmanage這個(gè)接口,也就具備了Cmanage的所有功能,可以對(duì)客戶的余額進(jìn)行操作,而且還可以刪除一個(gè)客戶。


          關(guān)聯(lián)關(guān)系表現(xiàn)為類(lèi)與類(lèi)之間的(has a)關(guān)系。它使一個(gè)類(lèi)知道另一個(gè)類(lèi)的屬性和方法。關(guān)聯(lián)關(guān)系表示的是類(lèi)與類(lèi)之間的持久關(guān)系,這種關(guān)系一般是表示一種業(yè)務(wù)邏輯上的關(guān)系,需要保存到數(shù)據(jù)庫(kù)中的。
          如圖2.學(xué)生Student中存在一個(gè)班級(jí)Class的引用。在student中可以直接根據(jù)引用訪問(wèn)到Class.同時(shí)在數(shù)據(jù)庫(kù)中存在兩張表tb_student,tb_class,在表tb_student中有一個(gè)字段存儲(chǔ)了所關(guān)聯(lián)的class記錄的id。用箭頭+實(shí)指向被關(guān)聯(lián)的類(lèi)



          聚合關(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è)商品。可以說(shuō)進(jìn)貨單JinHuoDan是整體,商品ShangPin是個(gè)體。可以由進(jìn)貨單JinHuoDan導(dǎo)航到每個(gè)進(jìn)貨單包含的商品。空心菱形+實(shí)線+箭頭指向部分。

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

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

          posted on 2009-09-21 18:17 草包書(shū)生 閱讀(3296) 評(píng)論(8)  編輯  收藏

          評(píng)論

          # re: UML類(lèi)圖標(biāo)準(zhǔn)總結(jié)__大家相互學(xué)習(xí) 2009-09-22 10:22 草包書(shū)生

          你們這群人一點(diǎn)也不厚道!回個(gè)帖都老火!  回復(fù)  更多評(píng)論   

          # re: UML類(lèi)圖標(biāo)準(zhǔn)總結(jié)__大家相互學(xué)習(xí) 2009-09-22 10:55 于翔

          dia畫(huà)的吧  回復(fù)  更多評(píng)論   

          # re: UML類(lèi)圖標(biāo)準(zhǔn)總結(jié)__大家相互學(xué)習(xí) 2009-09-22 17:57 草包書(shū)生

          是阿  回復(fù)  更多評(píng)論   

          # re: UML類(lèi)圖標(biāo)準(zhǔn)總結(jié)__大家相互學(xué)習(xí) 2009-09-23 22:54 wangchangbing

          最近也是在整理UML的相關(guān)資料 為面試準(zhǔn)備
          但是發(fā)現(xiàn)公司原來(lái)利用VISIO畫(huà)的流程圖狀態(tài)圖 到了ROSE里面都不成立了

          其實(shí)公司畫(huà)的大部分只是一個(gè)示意圖 用來(lái)和客戶溝通
          有個(gè)圖客戶看了明白 至于里面的流程狀態(tài)在UML里面是不是規(guī)范的客戶不關(guān)心

          類(lèi)圖我確實(shí)沒(méi)有畫(huà)過(guò) 可能是還沒(méi)有遇到特別復(fù)雜的類(lèi)吧  回復(fù)  更多評(píng)論   

          # re: UML類(lèi)圖標(biāo)準(zhǔn)總結(jié)__大家相互學(xué)習(xí) 2009-09-24 12:01 草包書(shū)生

          @wangchangbing
          強(qiáng)烈建議你在項(xiàng)目之前用UML為你的project做一個(gè)總體的規(guī)劃  回復(fù)  更多評(píng)論   

          # re: UML類(lèi)圖標(biāo)準(zhǔn)總結(jié)__大家相互學(xué)習(xí) 2009-10-29 20:27 等牛奶的咖啡

          @草包書(shū)生
          Uml最大的作用不是用來(lái)文檔,也不是用來(lái)規(guī)劃什么,而是為了溝通和理解需求。
          在項(xiàng)目開(kāi)始之前是不需要花很長(zhǎng)的時(shí)間來(lái)進(jìn)行Uml的詳細(xì)建模,因?yàn)轫?xiàng)目在進(jìn)行的過(guò)程中需求可能會(huì)經(jīng)常的變動(dòng),另一方面,在進(jìn)行反復(fù)的迭代式開(kāi)發(fā)過(guò)程中才應(yīng)當(dāng)使用Uml畫(huà)圖同客戶交流進(jìn)行需求的分析  回復(fù)  更多評(píng)論   

          # re: UML類(lèi)圖標(biāo)準(zhǔn)總結(jié)__大家相互學(xué)習(xí) 2009-10-29 20:29 等牛奶的咖啡

          不過(guò)完整的UML類(lèi)圖的標(biāo)準(zhǔn)學(xué)習(xí)了下,還缺少組合和拋出異常這些  回復(fù)  更多評(píng)論   

          # re: UML類(lèi)圖標(biāo)準(zhǔn)總結(jié)__大家相互學(xué)習(xí) 2009-11-07 12:53 草包書(shū)生

          @等牛奶的咖啡
          個(gè)人認(rèn)為如果在每張一個(gè)獨(dú)立的uml圖中如果只有一條執(zhí)行路徑的話,思維反而更清晰。如果把異常一融合到uml圖中,試想一下異常在到處亂拋,雜亂無(wú)章的,亂七八糟。況且uml這個(gè)東西本來(lái)也只是一個(gè)指導(dǎo)性的東西。所以啦 uml圖中加入異常的描述是完全沒(méi)有必要的。  回復(fù)  更多評(píng)論   


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           

          導(dǎo)航

          常用鏈接

          相冊(cè)

          java的相關(guān)連接

          最新評(píng)論

          主站蜘蛛池模板: 铁力市| 柯坪县| 盐边县| 余庆县| 武川县| 达尔| 临澧县| 文安县| 调兵山市| 九寨沟县| 乐亭县| 榆树市| 庄河市| 广德县| 法库县| 五台县| 崇信县| 交城县| 浪卡子县| 日喀则市| 郁南县| 霍州市| 伊宁县| 威远县| 会昌县| 明星| 宁南县| 齐齐哈尔市| 图木舒克市| 松潘县| 肇东市| 金堂县| 北票市| 五大连池市| 满城县| 金秀| 拜泉县| 利辛县| 安吉县| 遂川县| 临沂市|