UML類圖幾種關(guān)系的總結(jié)

?在UML類圖中,常見(jiàn)的有以下幾種關(guān)系:?泛化(Generalization),??實(shí)現(xiàn)(Realization)赴蝇,關(guān)聯(lián)(Association)滩租,聚合(Aggregation)角溃,組合(Composition)颗圣,依賴(Dependency)

?1.?泛化(Generalization)

? ? ? ? 【泛化關(guān)系】:是一種繼承關(guān)系喳钟,表示一般與特殊的關(guān)系屁使,它指定了子類如何特化父類的所有特征和行為。例如:老虎是動(dòng)物的一種奔则,即有老虎的特性也有動(dòng)物的共性蛮寂。

????????【箭頭指向】:帶三角箭頭的實(shí)線,箭頭指向父類

? ? ? ? 2.?實(shí)現(xiàn)(Realization

????????【實(shí)現(xiàn)關(guān)系】:是一種類與接口的關(guān)系易茬,表示類是接口所有特征和行為的實(shí)現(xiàn).

????????【箭頭指向】:帶三角箭頭的虛線酬蹋,箭頭指向接口

? ? ? ? 3.?關(guān)聯(lián)(Association)

????????【關(guān)聯(lián)關(guān)系】:是一種擁有的關(guān)系,它使一個(gè)類知道另一個(gè)類的屬性和方法抽莱;如:老師與學(xué)生范抓,丈夫與妻子關(guān)聯(lián)可以是雙向的,也可以是單向的食铐。雙向的關(guān)聯(lián)可以有兩個(gè)箭頭或者沒(méi)有箭頭匕垫,單向的關(guān)聯(lián)有一個(gè)箭頭。

????????【代碼體現(xiàn)】:成員變量

????????【箭頭及指向】:帶普通箭頭的實(shí)心線璃岳,指向被擁有者

? ? ? ? 上圖中年缎,老師與學(xué)生是雙向關(guān)聯(lián)悔捶,老師有多名學(xué)生铃慷,學(xué)生也可能有多名老師。但學(xué)生與某課程間的關(guān)系為單向關(guān)聯(lián)蜕该,一名學(xué)生可能要上多門課程犁柜,課程是個(gè)抽象的東西他不擁有學(xué)生。?

????????下圖為自身關(guān)聯(lián):?

? ? ? ? 4.?聚合(Aggregation

????????【聚合關(guān)系】:是整體與部分的關(guān)系堂淡,且部分可以離開(kāi)整體而單獨(dú)存在馋缅。如車和輪胎是整體和部分的關(guān)系,輪胎離開(kāi)車仍然可以存在绢淀。

????????聚合關(guān)系是關(guān)聯(lián)關(guān)系的一種萤悴,是強(qiáng)的關(guān)聯(lián)關(guān)系;關(guān)聯(lián)和聚合在語(yǔ)法上無(wú)法區(qū)分皆的,必須考察具體的邏輯關(guān)系覆履。

????????【代碼體現(xiàn)】:成員變量

????????【箭頭及指向】:帶空心菱形的實(shí)心線,菱形指向整體

? ? ? ? 5.?組合(Composition)

????????【組合關(guān)系】:是整體與部分的關(guān)系费薄,但部分不能離開(kāi)整體而單獨(dú)存在硝全。如公司和部門是整體和部分的關(guān)系,沒(méi)有公司就不存在部門楞抡。

???????組合關(guān)系是關(guān)聯(lián)關(guān)系的一種伟众,是比聚合關(guān)系還要強(qiáng)的關(guān)系,它要求普通的聚合關(guān)系中代表整體的對(duì)象負(fù)責(zé)代表部分的對(duì)象的生命周期召廷。

  【代碼體現(xiàn)】:成員變量

  【箭頭及指向】:帶實(shí)心菱形的實(shí)線凳厢,菱形指向整體


? ? ? ? 6.?依賴(Dependency)

????????【依賴關(guān)系】:是一種使用的關(guān)系账胧,即一個(gè)類的實(shí)現(xiàn)需要另一個(gè)類的協(xié)助,所以要盡量不使用雙向的互相依賴.

????????【代碼表現(xiàn)】:局部變量先紫、方法的參數(shù)或者對(duì)靜態(tài)方法的調(diào)用

????????【箭頭及指向】:帶箭頭的虛線找爱,指向被使用者

? ? ? ? 各種關(guān)系的強(qiáng)弱順序:

? ? ? ? ? ?泛化?=?實(shí)現(xiàn)?>?組合?>?聚合?>?關(guān)聯(lián)?>?依賴

????????下面這張UML圖,比較形象地展示了各種類圖關(guān)系:



  Powerdesigner 畫圖

面向?qū)ο竽P?/p>

? 面向?qū)ο竽P褪抢肬ML(統(tǒng)一建模語(yǔ)言)的圖形來(lái)描述系統(tǒng)結(jié)構(gòu)的模型泡孩,它從不同角度實(shí)現(xiàn)系統(tǒng)的工作狀態(tài)车摄。這些圖形有助于用戶,管理人員仑鸥,系統(tǒng)分析人員吮播,開(kāi)發(fā)人員,測(cè)試人員和其他人員之間進(jìn)行信息交流眼俊。這里主要介紹用例圖意狠,序列圖和類圖。

? 1.面向?qū)ο竽P蚈OM

??? 面向?qū)ο竽P褪抢肬ML的圖形描述系統(tǒng)結(jié)構(gòu)的模型疮胖,可以利用PowerDesigner的面向?qū)ο竽P瓦M(jìn)行創(chuàng)建环戈。PowerDesigner支持UML的下列圖形。

用例圖(User Case Diagram):通常用來(lái)定義系統(tǒng)的高層次草圖澎灸,它從用戶角度描述了應(yīng)用的系統(tǒng)功能院塞,指出了各個(gè)功能的外部操作者。

序列圖(Sequence Diagram):描述系統(tǒng)如何實(shí)際完成在User Case圖中定義的功能性昭±怪梗可以畫出對(duì)象(類的實(shí)例)之間交互時(shí)產(chǎn)生的時(shí)序關(guān)系。

類圖(Class Diagram):描述類與類之間的靜態(tài)關(guān)系糜颠。其中包括一系列的包汹族,類,接口和它們之間的關(guān)系其兴。類圖是定義其他圖的基礎(chǔ)顶瞒。

? 2.創(chuàng)建面向?qū)ο竽P?/b>

(1)選擇File-New Model命令或者單擊工具欄中的New Model圖標(biāo)

,彈出New Model窗口元旬。

??? (2)在左側(cè)是Model type欄中選擇Object-Oriented Model(面向?qū)ο竽P?選項(xiàng)榴徐,在右側(cè)輸入模型名稱,語(yǔ)言法绵,如圖8-1所示箕速。

? ? (3)單擊“確定”按鈕,進(jìn)入OOM設(shè)計(jì)工作區(qū)朋譬。在該工作區(qū)中可以定義OOM的屬性和操作盐茎,也可以設(shè)計(jì)各種UML的圖形。

??? (4)選擇Model-Model Properties命令徙赢,顯示如圖8-2所示OOM的Model Properties窗口字柠。

? ? (5)定義完畢后單擊“確定”按鈕探越。然后選擇File-Save As命令,以PubInfoSys.OOM這個(gè)名稱將所定義的模型存盤窑业。

??? (6)設(shè)置模型的選擇钦幔。選擇Tools-Model Options命令,打開(kāi)Model Options(模型選項(xiàng))窗口常柄。如圖8-3所示鲤氢。

? ?(7)單擊Set As Default按鈕,設(shè)置為默認(rèn)選項(xiàng)西潘,然后單擊OK按鈕卷玉。

?3.設(shè)計(jì)用例圖

?? 3.1 用例圖用于系統(tǒng)需求分析階段,進(jìn)行系統(tǒng)需求和功能設(shè)計(jì)喷市,它包含執(zhí)行者和用例兩個(gè)要素相种。執(zhí)行者指用戶在系統(tǒng)中的角色,用例是用戶與計(jì)算機(jī)的一次交互品姓。用例圖主要用來(lái)描述每個(gè)用例將有哪些執(zhí)行者進(jìn)行參與寝并。

定義用例:用例是外部可見(jiàn)的一個(gè)系統(tǒng)功能單元,這些功能由系統(tǒng)單元提供腹备,通過(guò)一系列單元與一個(gè)或多個(gè)參與者之間交換的消息表達(dá)衬潦。?

定義角色:角色描述了與系統(tǒng)相互作用的一組用戶,最明顯的角色是系統(tǒng)中的人馏谨,但也可能是系統(tǒng)本身别渔。

定義關(guān)聯(lián):用例除了與其參與者發(fā)生關(guān)聯(lián)外,還可以參與系統(tǒng)中的多個(gè)關(guān)系惧互,允許定義的關(guān)聯(lián)有關(guān)聯(lián),擴(kuò)展喇伯,用例泛化喊儡,包括。

? 3.2定義用例圖

??? 定義用例圖如下:

(1)單擊“用例”圖標(biāo)

定義4個(gè)用例稻据,如圖8-4所示艾猜。

圖8-4


?(2)選中第一個(gè)用例雙擊,打開(kāi)Use Case Properties(用例屬性)窗口捻悯,將Name屬性修改為“查找”匆赃,將Code屬性修改為Search,如圖8-5所示。

圖8-5



(3)利用同樣的方法今缚,修改其他3個(gè)用例屬性如圖8-6所示算柳。

圖8-6


(4)單擊“執(zhí)行者”圖標(biāo)

定義3個(gè)執(zhí)行者,如圖8-7所示姓言。

圖8-7

??? (5)選中第一個(gè)執(zhí)行者并雙擊瞬项,打開(kāi)Actor Properties窗口蔗蹋,將Name屬性修改為“顧客”,將Code屬性修改為Buyer囱淋,如圖8-8所示猪杭。

圖8-8


??? (6)利用同樣的方法,修改其他兩個(gè)執(zhí)行者的屬性妥衣。

(7)定義執(zhí)行者和用例之間的關(guān)系皂吮。單擊“關(guān)系”圖標(biāo)

,再單擊執(zhí)行者“顧客”并拖動(dòng)鼠標(biāo)至用例“查找”税手,釋放鼠標(biāo)涮较,這時(shí)在執(zhí)行者和用例之間建立了關(guān)系。雙擊該關(guān)系冈止,打開(kāi)Association Properties窗口狂票,將Name屬性修改為“查詢商品”,將Code屬性修改為SearchProduct熙暴。

??? (8)按照步驟(7)的方法闺属,在其他執(zhí)行者和用例之間建立關(guān)系。

??? (9)定義完成后的用例圖如圖8-9所示周霉。

圖8-9


?4設(shè)計(jì)序列圖

??? 4.1序列圖(Sequence Diagram)是用來(lái)描述系統(tǒng)如何實(shí)現(xiàn)完成在Use Case圖中定義的功能掂器。可以畫出對(duì)象之間的交互時(shí)產(chǎn)生的時(shí)序關(guān)系俱箱。它一方面描述了一次交互国瓮,交互中涉及類圖中的類,另一方面細(xì)化了用例的描述狞谱。

??? 序列圖有角色(Actor),對(duì)象(Object)乃摹,消息(Message)和激活期(Activation)幾個(gè)要素如果8-10所示。

圖8-10


????? 消息類型有:

Message:消息

Slef Message 遞歸消息

Call Message帶有激活期的消息

Self Call Message帶有激活期的遞歸消息

Return Message返回消息

Self Return Message遞歸返回消息

? 4.2創(chuàng)建序列圖

??? (1)選擇File-New Model命令跟衅,打開(kāi)New Model窗口孵睬。在窗口左側(cè)的Mode type欄選擇Object-Oriented Model選項(xiàng),在右側(cè)的First diagram下拉列表框中選擇Sequence Diagram選項(xiàng)伶跷,在Object language下拉框中選擇Java選項(xiàng)掰读,如圖8-11所示。

圖8-11


(2)選擇完畢后單擊“確定”按鈕叭莫,進(jìn)入PowerDesigner設(shè)計(jì)工作區(qū)蹈集。

(3)單擊Palette工具欄的Object圖標(biāo)

,在右邊空白工作區(qū)單擊鼠標(biāo)雇初,出現(xiàn)對(duì)象符號(hào)如圖8-12所示拢肆。

圖8-12


??? (4)在設(shè)計(jì)區(qū)空白區(qū)域右擊,鼠標(biāo)指針變?yōu)榧^形狀,雙擊對(duì)象符號(hào)善榛,彈出Actor Properties窗口辩蛋,在Name文本框中輸入"呼叫方",在Code文本框中輸入“Caller”,然后單擊“確定”按鈕移盆。

??? (5)重復(fù)步驟(3)(4),添加其他兩個(gè)對(duì)象悼院,Name分別為“交換機(jī)”和“被叫方”,Code分別為Exchange和Receiver咒循。

(6)單擊Palette工具欄中的Message圖標(biāo)

据途,在“呼叫方”對(duì)象下方的虛線處單擊,拖動(dòng)鼠標(biāo)至“交換機(jī)”對(duì)象下方的虛線釋放鼠標(biāo)叙甸,即可增加一個(gè)消息颖医。

??? (7)在設(shè)計(jì)區(qū)空白區(qū)域右擊,鼠標(biāo)指針變成箭頭形狀裆蒸,雙擊對(duì)象符號(hào)熔萧,彈出“消息屬性”窗口,在Name文本框中輸入“拿起話筒”僚祷,在Code文本框中輸入“Lift Reciever”,然后單擊“確定”按鈕佛致。

??? (8)重復(fù)(6)(7),添加其他消息。

??? (9)最終的序列圖如圖8-13所示辙谜。

圖8-13


??? (10)選擇File-Save命令俺榆,保存新建的面向?qū)ο竽P?/p>

?5設(shè)計(jì)類圖

? 類圖是用一種抽象的方法來(lái)描述對(duì)象及對(duì)象之間的關(guān)系,并不能描述對(duì)象的所有細(xì)節(jié)装哆。

??? 5.1創(chuàng)建Class(類)

??? (1)選擇File-New Model命令罐脊,打開(kāi)New Model窗口。在窗口左側(cè)的Mode type欄選擇Object-Oriented Model選項(xiàng)蜕琴,在右側(cè)的First diagram下拉列表框中選擇Class Diagram選項(xiàng)萍桌,在Object language下拉框中選擇Java選項(xiàng),如圖8-14所示奸绷。

圖8-14


??? (2)在類圖工作區(qū)中單擊Palette工具欄中的Class圖標(biāo)梗夸,創(chuàng)建一個(gè)類,雙擊類圖的圖形符號(hào)号醉,打開(kāi)Class Properties窗口。

??? (3)選擇Detail選項(xiàng)卡辛块,可以定義類的更多屬性畔派。

??? (4)選擇Attributes選項(xiàng)卡,可以為類增加屬性润绵。單擊Add a Row圖標(biāo)线椰,增加屬性,也可以單擊Add Attributes圖標(biāo)打開(kāi)Selection窗口列表模型中其他類的屬性尘盼,選擇需要的屬性憨愉,然后單擊“OK”按鈕即可烦绳。

??? (5)選擇Operations選項(xiàng)卡,單擊Add Operation圖標(biāo)配紫,打開(kāi)Selection窗口径密,從中可以選擇該模型中其他類包含的操作。選擇完畢后躺孝,單擊OK按鈕享扔,所選的操作即可增加到當(dāng)前類上。

??? (6)選擇Inner Classifies選項(xiàng)卡植袍,可以為該類定義內(nèi)部類惧眠。內(nèi)部類是PowerDesigner的一個(gè)分類器,在UML中分類器是一個(gè)包含有屬性和操作等的模型元素于个。定義完畢后可以通過(guò)Preview選項(xiàng)卡觀察當(dāng)前類或接口所包含的內(nèi)部類代碼氛魁,如圖8-15所示。

圖8-15


??? (7)除了以上屬性外厅篓,還可以定義Associations,Identifies等屬性秀存。屬性定義完畢后創(chuàng)建的內(nèi)容如圖8-16所示。

圖8-16


? 5.2創(chuàng)建聯(lián)系

? 在類圖中贷笛,聯(lián)系有關(guān)聯(lián)应又,依賴,泛化和實(shí)現(xiàn)聯(lián)系乏苦。

? 6.生成Java的源代碼

? 如圖8-17所示類圖株扛,生成Java源代碼。

圖8-17


? (1)在類圖中選擇Language-Generate Java Code命令汇荐,打開(kāi)Generation窗口洞就,顯示模型中包含的類。

? (2)在Selection選項(xiàng)卡的Classes選項(xiàng)卡中選擇類掀淘,在Directory欄中輸入Java源代碼的目標(biāo)路徑旬蟋。

? (3)在Options選項(xiàng)卡中定義Java生成選項(xiàng)。

? (4)在Tasks選項(xiàng)卡中定義Java生成任務(wù)選項(xiàng)革娄,如圖8-18所示倾贰。

圖8-18


? (5)單擊“確定”按鈕,開(kāi)始生成Java源文件拦惋,生成完成顯示Generated Files窗口匆浙。

? (6)選擇一個(gè)源文件,單擊Edit按鈕厕妖,將在文本編輯器中顯示該文件的內(nèi)容首尼。如圖8-19所示。

圖8-19


? 7.根據(jù)Java代碼生成類圖

? ?(1)選擇File-Reverse Engineer-Object Language彈出如圖8-20所示。

圖8-20


? ?(2)在Object language欄選擇Java,單擊確定進(jìn)入如下界面软能,如圖8-21所示迎捺。

圖8-21


? ?(3)點(diǎn)擊Add,添加Java文件查排,再單擊確定即可生成相應(yīng)的Java類圖(在Reverse engineer欄中還可以選擇Java字節(jié)碼文件或文件目錄),如圖8-23所示凳枝。

圖8-23
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市雹嗦,隨后出現(xiàn)的幾起案子范舀,更是在濱河造成了極大的恐慌,老刑警劉巖了罪,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锭环,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡泊藕,警方通過(guò)查閱死者的電腦和手機(jī)辅辩,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)娃圆,“玉大人玫锋,你說(shuō)我怎么就攤上這事∷夏兀” “怎么了撩鹿?”我有些...
    開(kāi)封第一講書人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)悦屏。 經(jīng)常有香客問(wèn)我节沦,道長(zhǎng),這世上最難降的妖魔是什么础爬? 我笑而不...
    開(kāi)封第一講書人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任甫贯,我火速辦了婚禮,結(jié)果婚禮上看蚜,老公的妹妹穿的比我還像新娘叫搁。我一直安慰自己,他們只是感情好供炎,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布渴逻。 她就那樣靜靜地躺著,像睡著了一般音诫。 火紅的嫁衣襯著肌膚如雪裸卫。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,198評(píng)論 1 299
  • 那天纽竣,我揣著相機(jī)與錄音,去河邊找鬼。 笑死蜓氨,一個(gè)胖子當(dāng)著我的面吹牛聋袋,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播穴吹,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼幽勒,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了港令?” 一聲冷哼從身側(cè)響起啥容,我...
    開(kāi)封第一講書人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎顷霹,沒(méi)想到半個(gè)月后咪惠,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡淋淀,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年遥昧,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片朵纷。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡炭臭,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出袍辞,到底是詐尸還是另有隱情鞋仍,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布搅吁,位于F島的核電站威创,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏似芝。R本人自食惡果不足惜那婉,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望党瓮。 院中可真熱鬧详炬,春花似錦、人聲如沸寞奸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)枪萄。三九已至隐岛,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間瓷翻,已是汗流浹背聚凹。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工割坠, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人妒牙。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓彼哼,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親湘今。 傳聞我的和親對(duì)象是個(gè)殘疾皇子敢朱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容