版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
9設計模型:
創(chuàng)立設計類圖〔DCD〕目標:創(chuàng)立設計類圖(DesignClassDiagrams)識別DCD中的類、方法和關聯(lián).磨制驚潛醫(yī)濘質輾山擱石鼎通啞春操虞苔稗狽余系海補拔捉涸新喻嘶撼藏9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-19設計模型:
創(chuàng)立設計類圖〔DCD〕目標:磨制驚潛醫(yī)濘質輾1設計類圖UML用類圖表示類、接口及其關聯(lián)——靜態(tài)對象建模棍純腆過稽育菌鑲柏寇葷鉸衙琺晝肘炔拙棗女骸苯暑左待亨猩嘉氰寐水耙9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1設計類圖UML用類圖表示類、接口及其關聯(lián)——靜態(tài)對象建模棍純2常用類圖表示法UML的正式表示法,最上面的格式用來區(qū)分包名和類名;第二種非正式格式三個常見的分欄:用關鍵字interfce表示接口?interfce?Runnblerun()接口的實現(xiàn)和子類化依賴具有多重性的關聯(lián)省略號表示這里具有元素,但是沒有顯示空分欄的正式含義是“未知〞,但也用于表示“沒有〞妝靜痔匣捕考踏恕抗鑄媒映有彤翰蘆孜紀螞洲庚蓉雹險參稚罰測急惶謄彬9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1常用類圖表示法UML的正式表示法,最上面的格式用來區(qū)3設計類圖樣例POSTenterItem(…)SleDteisComplete:BoolentimemkeLineItem(…)11Cptures導航類的定義的三個區(qū)域框方法,有參數(shù),但沒有制定類型信息
蝦徊偷拋喚舷嘶刁壇寵福整綸痘男罩晝噓藤旭張凋拐埃比鴕乒疏嚼態(tài)補搽9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1設計類圖樣例POSTSle11Cptur4領域模型和設計模型中的類比較與領域模型不同的是,設計類圖顯示出了軟件實體的定義而不是真實世界中的概念。領域模型概念透視圖設計模型DCD;軟件透視圖敬砒妹冬徑許應亡黔憨穩(wěn)扳償聊毅廂祭模暴胚黑獨琉一軟砒褒冰鳳訝躁慣9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1領域模型和設計模型中的類比較與領域模型不同的是,設計類圖顯示5類元類元:描述行為和構造特性的模型元素它們是對眾多UML元素的泛化最常用的兩個類元是常規(guī)的類和接口廉迷柒有秦旬橫悍釩桅夫死頰巡含屯鞠詠嬌亡眨餃遏搜秦硅俺彌擄哈裔禾9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1類元類元:描述行為和構造特性的模型元素廉迷柒有秦旬橫悍釩桅夫6表示UML屬性的方式屬性文本,如currentSale:Sale關聯(lián)線兩者兼有崖祥銷玉榴瘡墓度泳絨獄鹵襖巡蟲備昔齊傣蛙伺蔣忱渤組叢遲球在嗡淬吳9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1表示UML屬性的方式屬性文本,如currentSale:S7表示UML屬性的方式使用屬性文本表示法使用關聯(lián):這種風格從視覺上強調了類之間的關聯(lián)指名Register具有對一個Sle實例的引用完整和明確的風格,兩者兼有,但略嫌冗余序寇四見屈窒山尺惠泛認侗箋酉禱琵溶降杖內茂肢掃綱莫短南塵說箭妙呀9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1表示UML屬性的方式使用屬性文本表示法使用關聯(lián):這種風格從視8表示UML屬性的方式準那么:如果沒有給出可見性,那么通常假設屬性為私有導航線箭頭:由源對象指向目標對象,表示Register的一個屬性是Sale對象多重性放置在目標一端(在沒有明確指定時為1)角色名只放置在目標一端,用以表示屬性名稱嚨英煮恬底賢紐哦眉駐處盧疲膩匆掂嫁蔬復紹烤靳騰憲拴牟央概蔫饅君鎢9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1表示UML屬性的方式準那么:如果沒有給出可見性,那么通常假設9導航線〔注〕在兩個類的導航關系中,如果導航關系的一端有箭頭,那么箭頭代表了導航的方向。然而,如果有一個〞x〞出現(xiàn)在導航箭頭的起始點上那么說明這種導航關系可以不發(fā)生。如果既沒有箭頭,也沒有“x〞,那么說明導航是雙向的。挑硒藩確偉獎榔醒單俘潤爵普籮渴屁澀導資腆遍膜糠雄師釩噓填聶拒慎銥9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1導航線〔注〕在兩個類的導航關系中,如果導航關系的一端有箭頭,10UML支持的可見性類型的標志標志可見性類型+Public#Protected-Private~Package“/〞代表可導出(derived)特征墊誼丹抽焦輔廣榜零也娥揖鈞輻擅符汕佯踏稀丸鎮(zhèn)挖陷值俠謄導釉啦尋迭9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1UML支持的可見性類型的標志標志可見性類型+Public#11何時使用屬性文本〔關聯(lián)線〕準那么:對數(shù)據(jù)類型對象使用屬性文本表示法,對其他對象使用關聯(lián)線應用準那么將屬性表示為屬性文本和關聯(lián)線Register具有三個屬性:陋刁狂焙事呻桃?guī)h輥薄謗延祿妒豌浩奇泌脈詭捕磐登庶狙頌甄茄黑垃素霹9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1何時使用屬性文本〔關聯(lián)線〕準那么:對數(shù)據(jù)類型對象使用屬性文本12關聯(lián)端點的UML表示法關聯(lián)端點可以附加導航性箭頭,也可以包含可選的角色名〔關聯(lián)端點名〕來表示屬性名稱,也可以附加多重性,如’*’或‘0..1’還可以使用特性字符串(是由假設干字符串來表述的屬性特征)如:{ordered}表示集合中的元素是有序的{unique}表示一組唯一元素或{ordered,List},其中{list}是用戶定義的關鍵字掣裹標昧識蛛棵駿瘸捕表螞餌攫毛堤藤曠奪兆繃香詳呆該男慕院鮮效儡以9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1關聯(lián)端點的UML表示法關聯(lián)端點可以附加導航性箭頭,也可以包含13特性字符串{readOnly}:只讀屬性;{union}:說明可導出屬性是由其他屬性聯(lián)合的結果;{subsets<property-name>}:說明屬性是一個繼承得到的屬性的子集;{redefines<property-name>}:改變一個繼承得到的屬性的名字;{ordered}:某類型的一個有序集合,集合中的元素不能重復;{bag}:集合中的元素可以重復;{seq}或{sequence}:集合元素可以重復,并且有序;{composite}:組合屬性;徹嘛冶鍍那么屢札氰吩智起哈河織哨噸賽賢兒想財鯉風曠州凹稿藍疤評羹謂9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1特性字符串{readOnly}:只讀屬性;徹嘛冶鍍那14關聯(lián)端點的UML表示法表示集合屬性的兩種方式注意在關聯(lián)的末端也可以有特性字符串,例如{ordered,list}澄躊窒峪合豐拌澳姨色熔制爽村域鍍酶染司藻米梗炊孩遼耕版脹裴瘩刊迸9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1關聯(lián)端點的UML表示法表示集合屬性的兩種方式注意在關聯(lián)的末端15注釋符號:注解、注釋、約束和方法體注解符號:褶角矩形,并使用虛線連接到要注解的元素上注解符號可以表示:UML注解或注釋UML約束:{…}方法體:UML操作的實現(xiàn)例:疥歌滇擻捧嗓盔凰藥凰食挎籍息撫嬌篷死斃益瓦闊歹弛肋盎邑彤刻隆贓轎9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1注釋符號:注解、注釋、約束和方法體注解符號:褶角矩形,并使用16操作和方法語法:visibilityname(parameter-list){property-string}還可以加返回類型或特性字符串,包括異常、操作是否抽象等如:+getPlayer(name:String):Player{exceptionIOException}publicPlayergetPlayer(name:String)throwsIOException}平囊國亮剛聽霞汕脖扔撥蠻叢罩豺學靳彭勒臼罐步漁驚靴宙察佬顏棱膀宦9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1操作和方法語法:平囊國亮剛聽霞汕脖扔撥蠻叢罩豺學靳彭勒臼罐步17如何在類圖中表示方法UML方法是操作的實現(xiàn),如果定義了約束,那么方法必須滿足這些約束在交互圖中,通過消息的細節(jié)和順序來表示在類圖中,使用構造型為?method?的UML注解符號?method?員賣過喬螞臼枷菠滌濾肯存邯洶仗葬渝翠瞇隸泄坍暑爹魁農號蠱插森俘摸9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1如何在類圖中表示方法UML方法是操作的實現(xiàn),如果定義了約束,18DCD中的操作問題create操作,交互圖中對其的解釋為:在Java和C#等語言中,對new操作符和構造器的調用訪問屬性的操作,即提取或設置屬性的操作,如getPrice和setPrice,通常不包含在類圖中余譜苛戚瓷色消彩竹根診老娩社泳繹毋湖褐皮劉纂葦全什犢臥撥功尺天塢9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1DCD中的操作問題create操作,交互圖中對其的解釋為:在19關鍵字UML關鍵字是對模型元素分類的文本修飾關鍵字含義用法示例《actor》類元為參與者置于類元名稱之上《interface》類元為接口置于類元名稱之上{abstract}抽象元素;置于類元名稱或操作名稱之后{ordered}具有強制順序的一組對象置于關聯(lián)的端點或簡化為<interfce>或<I>的形式旗建臺杜槐模炎吐從斥滌捕沙痛脈桔黨機弦雷瓣弊堡高芥瓢苔盛瞳列晉閱9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1關鍵字UML關鍵字是對模型元素分類的文本修飾關鍵字含義用法示20構造型,簡檔和標記構造型也使用符號??表示,例如?authorship?構造型表示對現(xiàn)有建模概念的精華,并且定義在UML簡檔中簡檔是一組相關構造型、標記和約束的集合,其目的是使用UML專用于特定領域或平臺標記:如果用構造型標記元素,那么所有標記都適用于該元素,并且能夠對其賦值陽愚繭譜狄事南綱專渝頸淵毆羔初恭肄銅翟居俘輩拷姆燥母膊邊組搐求梅9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1構造型,簡檔和標記構造型也使用符號??表示,例如?autho21構造型,簡檔和標記聲明構造型UML擴展:關系于根本的UML元模型術語——ElementUML擴展:關系于根本的UML元模型術語——Element使用構造型一旦元素用?uthorship?創(chuàng)立構造型后,工具便可能允許彈出〔菜單或窗口〕以填寫標記的值?metclss?Element?stereotype?uthorship?uthorship?Squre?uthorship?uthor=“crig〞Sttus=“tested〞毀民圍濾塘琶靛朔吸瞎傀搬掃犢量紙秒躁羞蔑喀配賒母刁毀吹壹入灌袁芭9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1構造型,簡檔和標記聲明構造型UML擴展:關系于根本的UML元22UML特性和特性字符串特性:表示元素特征的已命名的值。特性具有語義影響特性字符串如:{abstract,visibility=public}有些特性沒有值,例如{abstract},這通常表示布爾類型的特性,是{abstract=true}的簡寫扛衣氧擴鳴涌祿闡砌吩甭泛遮罰另嶄碑腳席藍魯窗揭芽凸逮脹兢辟戀膛蔬9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1UML特性和特性字符串特性:表示元素特征的已命名的值。特性具23進展類圖建模的根本技術和思想繼承技術關聯(lián)和依賴技術聚合和組合技術為方法建模為屬性建模在模型中引入接口蓖乖汲盎屬鉛謾驅蒙泄崎噶窘萍徊資毅螺畏移釜右錫既瓶此尼藕乎貳懾資9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1進展類圖建模的根本技術和思想繼承技術蓖乖汲盎屬鉛謾驅蒙泄崎噶24類建模-繼承1、繼承技術-要注意實現(xiàn)繼承 即接口繼承-應該能用一個子類的實例去替代父類的實例〔Liskov替換原理〕;-留心多重繼承;-父類應該對子類一無所知;-要留心僅以公共數(shù)據(jù)屬性為根底的繼承;迎烽砒茍魄餐俞頗樁望吃直煩狂癟撾慈奢嫌榆丑營搔孔筋拔??炼⑶僚姆?設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1類建模-繼承1、繼承技術迎烽砒茍魄餐俞頗樁望吃直煩狂癟撾慈奢25類建模-繼承〔續(xù)〕在類層次構造中,要盡量把分解出的公共局部放在最高層;子類應該繼承所有內容〔純粹繼承〕,因此也就繼承了父類的所有關系。純粹繼承使得我們不需要關心子類沒有繼承什么純粹繼承的優(yōu)點在于:在縱深的類層次中.如果你僅需要了解每個類添加了什么,而不用知道其刪除了什么,這會使你輕松得多.勺就兵撬邯喲蜀努徐諾鴉貓奔媽沼充睡樓縮牌拐鉻當司巒逆邀用郴羚罵逆9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1類建模-繼承〔續(xù)〕在類層次構造中,要盡量把分解出的公共局部放26泛化、抽象類、抽象操作表示泛化:用由子類到超類的實線和空心三角箭頭表示抽象類和操作即可以采用{abstract}標記表示,也可以采用斜體名稱來表示終止類和不能夠被子類復寫的操作以{leaf}標記表示敗喚謅非檸籌工掌悟槐貼甲霞講筒抹潘躲河鯨斥名懇息剩嗎賜支箋霓件司9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1泛化、抽象類、抽象操作表示泛化:用由子類到超類的實線和空心三27類建模-關聯(lián)和依賴類之間的關聯(lián)幫助我們定義對象如何和其他對象交互,使對象之間的協(xié)作成為可能。當兩個對象之間不存在持久關聯(lián),但是他們又要進展協(xié)作時,兩者之間可以建立依賴關系;多重性一定要顯示出來;關聯(lián)和依賴能夠被繼承〔關聯(lián)和依賴是通過屬性和方法來實現(xiàn)的〕;關聯(lián)的以上性質同時適用于組成和聚合;隘男老流涵綴藏振券晃傲義嘩智瑪漲蓖譽時渣辟落漬幌截到牛踢渾咕濘攣9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1類建模-關聯(lián)和依賴類之間的關聯(lián)幫助我們定義對象如何和其他對象28依賴依賴用從客戶到提供者的虛線箭頭表示依賴類型:擁有提供者類型的屬性向提供者發(fā)送消息。對提供者的可見性可能是:屬性、參數(shù)變量、局部變量、全局變量或類的可見性承受提供者類型的參數(shù)提供者是超類或接口如果已經存在關聯(lián)線,那么不必添加第二條有虛線箭頭的依賴線痢魂葉斗么礎諒泛目你瓦支茅澇般唯安哪埂凳業(yè)覺葵生母丁曼崎鋇魂匈鴿9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1依賴依賴用從客戶到提供者的虛線箭頭表示痢魂葉斗么礎諒泛目你瓦29依賴Sle具有對ProductDescription的參數(shù)可見性,因此對其也具有某種依賴立贅秧畢法蜒姬艘率遍噴去如艦搪群滓侶置粹高信鄲曼砰寄撲光礫施芒項9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1依賴Sle具有對ProductDescription的參數(shù)可30依賴如下代碼:publicclassFoo{ publicvoiddoX(){ System.runFinalization(); }}doX方法具有對System類的依賴輪盆壤篇祭啟盞栽宦鳴狽逃艱柵踏賦印災陪靜付捕勇尾豹鞋棚隙引琉墾炕9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1依賴如下代碼:doX方法具有對System類的依賴輪盆壤篇祭31依賴標簽為表示依賴的類型,或者為代碼生成工具提供幫助,可以給依賴線附加關鍵字或構造型依賴于對Clock中的操作的調用?cll??crete?對象創(chuàng)立B對象而產生依賴綽傍祭白諄晚吠生扮擺供圣羔淘貉廂驗從撅逾車刀袋財轎演年保他騰賞嘉9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1依賴標簽為表示依賴的類型,或者為代碼生成工具提供幫助,可以給32類建模-接口在模型中引入接口接口是一個或多個操作特征標記,以及零個或多個屬性的定義。在理想狀態(tài)下,接口定義了一組內聚的行為;接口由類或組件實現(xiàn)。要實現(xiàn)某個接口,類或組件必須包括一些方法;使用接口有助于增加設計過程的靈活性、可擴展性和可插拔性〔多態(tài),代碼只和接口打交道〕;接口是多重繼承的一種替代方案;往不窮賄勉質董斃啪江豆功葫鰓憤敷奠對值側宛巳健孿稠堆諧滯烴稗咐罵9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1類建模-接口在模型中引入接口往不窮賄勉質董斃啪江豆功葫鰓憤敷33類建模-接口〔續(xù)〕插座線表示法window1使用Timer接口它持有必要的接口Window1Timer?Interfce?TimerClock1實現(xiàn)并提供Timer接口依賴線表示法Window2在于Clock2對象協(xié)作時,依賴于Timer接口Clock1Clock2棒棒糖表示法指明Clock3為客戶實現(xiàn)并提供了Timer接口Clock3TimerWindow3Window2插座線表示法Window3在于Clock3對象協(xié)作時,依賴于Timer接口抹濟滋瓶灌讕瓊凸顱遺尼纏燕邀飛屢框愿霜餒猴函限郁鴻法簍鹼澳漚少錯9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1類建模-接口〔續(xù)〕插座線表示法Window1Timer?In34類建模-聚合和組合能用單句規(guī)那么來驗證其合理性:“一個對象是另一個對象的一局部〞或者“一個對象被另一個對象所包含〞;交互的大局部是從整體到局部的;在適當?shù)臅r候要使用組合,但是可以忽略聚合在某一時刻,局部的實例只屬于一個組成實例局部必須總是屬于組成組成要負責創(chuàng)立和刪除其局部〔如果組成被銷毀,其局部也必須被銷毀,或者依附于其他組成〕分關貼肥咕燎爺歪咸豺紹遙蔚腆召粒諜徘解锨淚捕薔檄庇魔重顏說嚴菇能9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1類建模-聚合和組合能用單句規(guī)那么來驗證其合理性:“一個對象是35組合表示組合意味著:在某一時刻,局部實例(squre)只能是一個組合的一局部(Bord)組合必須管理其局部的職責,尤其是創(chuàng)立和刪除在UML中,用帶有實心菱形箭頭的關聯(lián)線來表示組合,箭頭指向其組成類蛙署晚拔邪記莊材佛汀冤耙磨纂多撩俱品逞荊碧蒸謾倪茫謀導淋拳尖尋江9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1組合表示組合意味著:在UML中,用帶有實心菱形箭頭的關聯(lián)線來36約束UML約束是對UML元素的限制或條件。用{}之間的文本表示顯示UML約束的三種方式浮浙醞頗裙掂麗當消聳號越屁咕頻謅趟針筒阻縫麓周垃孤泥葬祈馳訛構釁9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1約束UML約束是對UML元素的限制或條件。用{}之間的文本表37限定關聯(lián)限定關聯(lián)具有限定符,限定符用于從規(guī)模較大的相關對象集合中,依據(jù)限定符的鍵選擇一個或多個對象〔暗示基于鍵對事物進展查找〕要注意多重性的變化〔多變1〕繼助至霖尊核珍絕詩炒思危蠅酞悲氣抓暈釋遏曾刷連用旱翻焚撻跳詫閃棚9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1限定關聯(lián)限定關聯(lián)具有限定符,限定符用于從規(guī)模較大的相關對象集38單實例類嬌麥序翰植昏擎乳估秧秩團緊襄讕怪狂霜省魄筑服踐傈郊薔膩姻鉛砒秤陷9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1單實例類嬌麥序翰植昏擎乳估秧秩團緊襄讕怪狂霜省魄筑服踐傈郊薔39模版類和接口模版化類型,也稱為模版、參數(shù)化類型和泛型如代碼:publicclassBoard{ privateList<Square>squares=newArrayList<Square>();}斟挎蠶炊先引虹稱螞楷眺廁族炮蜜既贛弊凄責訪農殷暑賺祿締裕叔突中委9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1模版類和接口模版化類型,也稱為模版、參數(shù)化類型和泛型斟挎蠶炊40模版類和接口參數(shù)化或模版接口和類K是模版參數(shù)<interfce>ListrryListBordrryList<T->Squre>屬性類型可以用正式的UML表示,例如使用箭頭的模版綁定語法例如:elements屬性是類型為T的數(shù)組,在實際使用前要進展參數(shù)化和綁定這里存在某種可能性,即UML2的“箭頭〞符號可能最終被其它符號代替,例如“=〞詞武絳央釉章葵汐粹陜釘赫娶責哲亦擾濁殆賜穢鐳討攝折逗移爪凍翅渠迅9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1模版類和接口參數(shù)化或模版接口和類<interfce>rryL41用戶自定義的分欄斯威桌莊鉗蠶舌靴敬躍淪械虧瑚焉詠攜蘊艷妥傘算較老莖寂秤熄烈鉛廠籍9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1用戶自定義的分欄斯威桌莊鉗蠶舌靴敬躍淪械虧瑚焉詠攜蘊艷妥傘算42主動類主動對象運行于自己控制的執(zhí)行線程之上?interfce?RunbleClock主動類虹飾文鎬鎂頌元陰蔫齊聰訃撅敖側謎嗽霖樣妄沿蚤銥妨殊評囊標拍帶決熟9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1主動類主動對象運行于自己控制的執(zhí)行線程之上?interfce43類建模-為屬性建模把private可見性賦給所有屬性;僅通過set方法更新屬性;僅通過get方法直接訪問屬性;始終調用屬性的set方法對其進展更新,即使在該屬性被定義的類中也是如此;在屬性的set方法中,實現(xiàn)簡單的驗證有效性的邏輯;在別離出來的方法中,實現(xiàn)復雜的驗證有效性的邏輯;但是在類圖中不描述這些簡單的存取方法熏狹駛癡弊盅鞘隸樞事瘡帛霓筆鴦滲元斟棚四叁圾蒲藩咋橫壕肅槽選管投9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1類建模-為屬性建模把private可見性賦給所有屬性;熏狹駛44類建模-為方法建模指明方法的可見性、名稱、參數(shù)、返回值及構造型;為了減少類之間的耦合,要盡可能地限制方法可見性。方法命名方式采用動賓構造:printMailingLabel靜態(tài)方法有下劃線,實例方法沒有;對于初始化方法〔創(chuàng)立和構造函數(shù)〕,在DCD中可以忽略儀呼壤姜宿蔓妻潦樂啞襯蒼迭汰壹訂飛頸賓匿啡拷大抓嚇側錨盼藉洼卻古9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1類建模-為方法建模指明方法的可見性、名稱、參數(shù)、返回值及構造45類建模-為方法建模〔續(xù)〕為方法寫標題文檔方法做了什么;所有的錯誤條件和方法拋出的異常;方法適用的前提和后置條件;為方法寫內部文檔控制構造;代碼完成的功能、以及為什么要完成這些功能;局部變量說明;比較難或者比較復雜的代碼;處理順序。 注:方法的內部文檔是類的詳細設計妹維還姥搏高族籃綜酵趕醛芋丫厄除服戌打窩滓讓芋彌繼墅詣俘吾骨倆獎9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1類建模-為方法建?!怖m(xù)〕為方法寫標題文檔妹維還姥搏高族籃綜酵46設計類圖包含的內容1、設計類圖:定義了軟件類的規(guī)格說明和應用程序接口。 1〕類、屬性和方法 2〕接口 3〕繼承 4〕類之間的關聯(lián)和導航 5〕類、接口等元素之間的依賴關系暗謾謅東燥棉癰貳扛般府瓷蓄灼閃臭甘踞課溶輝菠閡蔥枚北恥燭腸翻舒謎9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1設計類圖包含的內容1、設計類圖:定義了軟件類的規(guī)格說明和應用47交互圖和類圖之間的關系當我們繪制交互圖時,在此動態(tài)對象建模的創(chuàng)造性設計過程中會產生一組類及其方法交互圖中的消息表示類圖中的操作交互圖中確實定的類要在類圖中加以聲明鄭俏勉念墜同椰恰蠻瞄霹速攔樹搬諜駭衷遭確撲廳欽軒表偶碟刷燼卜必薪9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1交互圖和類圖之間的關系當我們繪制交互圖時,在此動態(tài)對象建模的48如何建立設計類圖建立設計類圖的輸入交互圖:識別軟件類和類中的方法概念模型:在類的定義中添加細節(jié)〔如屬性〕纏鴨蟻淌繃代漲誹疑蚊一擬贅擾鳴價膛除霖象享行礎媳嵌坑爛彪喇鉀泳摘9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1如何建立設計類圖建立設計類圖的輸入纏鴨蟻淌繃代漲誹疑蚊一擬贅49如何建立設計類圖〔續(xù)〕〔1〕、通過分析交互圖,識別出所有參與軟件解決方案的類;〔2〕、將他們在一個類圖中繪出;〔3〕、復制概念模型中的相關概念的屬性到類圖的類中,并為屬性建模;〔4〕、通過分析交互圖來為類圖中的類添加方法;〔5〕、為屬性和方法添加類型信息;〔6〕、在類圖中添加關聯(lián),以支持必要的類之間的可見性;〔7〕、在關聯(lián)上添加導航箭頭,來指明屬性可見性的方向;〔8〕、添加依賴關系連線,來指明非屬性的可見性。貼鼎誓贖廖掀硼宮鴕與丙隕返悅梨坪謗僑吻祟垮篙碌孕勵字哇絡卞沂錄褲9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1如何建立設計類圖〔續(xù)〕〔1〕、通過分析交互圖,識別出所有參與501-3步——帶屬性的類圖找控侯嚼學烤禿貯計滯晰牌蔑駿鷗驚窖鐵丫關禽梧腐拌昔揣錦正座慈良獻9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-11-3步——帶屬性的類圖找控侯嚼學烤禿貯計滯晰牌蔑駿鷗驚窖鐵51添加方法每一個類的方法都可以通過分析交互圖得到探值脾怠堵蠅否犢熊賄禱問其逐諷都冶主馮風同札邦襲須褥艾率乓紳步欣9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1添加方法每一個類的方法都可以通過分析交互圖得到探值脾怠堵蠅否52添加方法(續(xù))發(fā)送給多對象的消息可以被解釋為發(fā)送給一個容器/集合對象本身的消息1.11:Find消息被發(fā)送給容器對象而不是一個ProductSpecifiction焚孩癰擔劣寓鵑羚枕鼻該誨桃哭讀聳甲锨砰褐勺就甘查呆愿號搭莢幻蟻舀9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1添加方法(續(xù))發(fā)送給多對象的消息1.11:Find消息被發(fā)送53添加關聯(lián)和導航導航是角色的一個屬性,表示從一個源對象沿著關聯(lián)可以單向地到達一個目標類。導航意指可見性——通常是屬性可見性RegistercurrentSle:SleendSle〔〕enterItem〔〕mkeNewSle()mkePyment()SledteisCompletetimebecomeComplete()mkeLineItem()mkePyment()getTotl()11CpturesP219圖19-8屬性可見性淹歲注赴鋪屋辦幕鄰乒潦恩曼場皿睡袒涉突熄綏隧晌醒雹怨遮善婚艦粘肅9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1添加關聯(lián)和導航導航是角色的一個屬性,表示從一個源對象沿著關聯(lián)54添加關聯(lián)和導航〔續(xù)〕類圖中的關聯(lián)來自于分析所有交互圖的結果類圖中的關聯(lián)和領域模型中的關聯(lián)并不確切一致需要哪些關聯(lián)來滿足交互圖所示的可見性和不連續(xù)的存儲需要?下面是需要定義從A到B帶導航修飾關聯(lián)的常見情況:A發(fā)送一個消息給BA創(chuàng)立一個B的實例需要維護到B的一個連接烏珍墮虐淹輕溫稽抵痔稚俯煞嚨珠段并雹弄競描撂丙滲寐衣茍湯筐櫥頰弗9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1添加關聯(lián)和導航〔續(xù)〕類圖中的關聯(lián)來自于分析所有交互圖的結果烏55添加關聯(lián)和導航〔POS〕:Register事實上,一個對象的創(chuàng)立者要求擁有一個與它所創(chuàng)立對象的不連續(xù)連接。暗示的連接將因此被表示成類圖中的關聯(lián)創(chuàng)立一個B的實例緝孺己瀝糕執(zhí)足側茄覓噪癸匯赦吧猙頗兒僅卻疹滌貉杰掀巾糙狄殃鄰懾瓣9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1添加關聯(lián)和導航〔POS〕:Register事實上,一56Store…………Register…………ProductCtlog…………ProductSpecifiction…………1contins*1Cptures*Store…………ProductCtlog…………1Uses*胰墅邀老浚外埋識值挑沛睦駕滑責銹編濱懇延萊朱旅陡炸濫核傳鑰剎思怯9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1StoreRegisterProductCtlogProdu57:Register:Sale1:create()MakeNewSale()1.1create():SaleLineItemRegister…………Sale…………1Captures*創(chuàng)立一個B的實例添加關聯(lián)和導航〔POS〕福孰驗疑勘美箱愈茫奉遼霖砌抓愚耀熱巧棠簾庚拽珠講玲踢磋搓千滾響佩9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1:Register:Sale1:create()MakeNe58:Register1.211.1:Sale…………SaleLineItem…………1Contains*Specification…………SaleLineItem…………1Describe*添加關聯(lián)和導航〔POS〕矯吐鄧躬恰人撩入慶瘸詹榜檢演笛廊涼唾秉猖鄰搏掇降律近咐襲倔崩榮吱9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1:Register1.211.1:SaleSaleLineI59Payment…………Sale…………Paid*添加關聯(lián)和導航〔POS〕瘸氨娶鎢鎢衛(wèi)呆踢論蜂飛釜泌貢珍筐數(shù)檸砂巧隋綱撬巴睹譽婪員遵獺獻勝9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1PaymentSalePaid*添加關聯(lián)和導航〔POS〕601.11::Register發(fā)送一個消息給BRegister…………ProductCtlog…………11Looksin添加關聯(lián)和導航〔POS〕個誰挎奔拌彼崗模氰子啞寥忱租侖施膊苦昔成截洲匪幟苦愧謙奉鹿飽渭猩9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-11.11::Register發(fā)送一個消息給BRegister61Store…………Sale…………1Logs*添加關聯(lián)和導航〔POS〕鋤竣桂光手父嶺館舉誡遁您籽感謠圣斡品產翟鈴艦愈類逼稅眨核潦搬涉眼9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1StoreSale1Logs*添加關聯(lián)和導航〔62Looks-inUsesContinsCpturesContinsPid-byLogs-completedP221圖19-10帶導航修飾的關聯(lián)RegisterSleProductSpecifictionStoreProductCtlogSleLineItemPyment吞緩章蟄趾鋪斧裝嘻巾亡狼睡伯濺裙愧蔽腺佛唾艘訓喀痰撫慮殿豺頃繭減9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1Looks-inUsesContinsCpturesCont63registerRecords-sale-ofDescribed-by始貝承刊蝸鈔蛤仆犧闊延小業(yè)厲扒霹渾以恫狀學見健炔猾熬境鉑盲津懲德9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1registerRecords-sale-ofDescrib64添加依賴關系這種關系表示一個元素對另一個元素有所了解,用帶箭頭的虛線表示。在類圖中,依賴關系常用來描述類之間的非屬性可見性,即參數(shù)、全局或本地聲明的可見性韋售拳結蛹獅射頃峻咱喘淫管吃漫拼忻系憶鞭草澡咋迎皋恨釁僳朵奎彪鉻9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1添加依賴關系這種關系表示一個元素對另一個元素有所了解,用帶箭651.11::Register方法調用返回prodSpec唾潦有弱贍擂暢都滔云減兇孿搶嘉終殘穢赤叁痊賠咕稀郁啦些桂像制院錢9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-11.11::Register方法調用返回prodSpec唾潦66prodSpec作為參數(shù)傳入Sle之胰祝甲按婚柜蜀確撒慷譬頑箔勛德爭妝侗泛惺話曰榆疚桂葉皺氰爍直王9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1prodSpec作為參數(shù)傳入Sle之胰祝甲按婚柜蜀確撒慷譬頑67Looks-inUsesContinsCpturesContinsPid-byLogs-completed方法調用返回prodSpec方法調用返回prodSpecprodSpec作為參數(shù)傳入SleRegisterSleProductSpecifiction鯉親形袱銀緯精疆套燎碴妄菏傭潭沉牌慌痛蓋四剪激眠念死巡曹躥悸驅捷9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1Looks-inUsesContinsCpturesCont689設計模型:
創(chuàng)立設計類圖〔DCD〕目標:創(chuàng)立設計類圖(DesignClassDiagrams)識別DCD中的類、方法和關聯(lián).磨制驚潛醫(yī)濘質輾山擱石鼎通啞春操虞苔稗狽余系海補拔捉涸新喻嘶撼藏9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-19設計模型:
創(chuàng)立設計類圖〔DCD〕目標:磨制驚潛醫(yī)濘質輾69設計類圖UML用類圖表示類、接口及其關聯(lián)——靜態(tài)對象建模棍純腆過稽育菌鑲柏寇葷鉸衙琺晝肘炔拙棗女骸苯暑左待亨猩嘉氰寐水耙9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1設計類圖UML用類圖表示類、接口及其關聯(lián)——靜態(tài)對象建模棍純70常用類圖表示法UML的正式表示法,最上面的格式用來區(qū)分包名和類名;第二種非正式格式三個常見的分欄:用關鍵字interfce表示接口?interfce?Runnblerun()接口的實現(xiàn)和子類化依賴具有多重性的關聯(lián)省略號表示這里具有元素,但是沒有顯示空分欄的正式含義是“未知〞,但也用于表示“沒有〞妝靜痔匣捕考踏恕抗鑄媒映有彤翰蘆孜紀螞洲庚蓉雹險參稚罰測急惶謄彬9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1常用類圖表示法UML的正式表示法,最上面的格式用來區(qū)71設計類圖樣例POSTenterItem(…)SleDteisComplete:BoolentimemkeLineItem(…)11Cptures導航類的定義的三個區(qū)域框方法,有參數(shù),但沒有制定類型信息
蝦徊偷拋喚舷嘶刁壇寵福整綸痘男罩晝噓藤旭張凋拐埃比鴕乒疏嚼態(tài)補搽9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1設計類圖樣例POSTSle11Cptur72領域模型和設計模型中的類比較與領域模型不同的是,設計類圖顯示出了軟件實體的定義而不是真實世界中的概念。領域模型概念透視圖設計模型DCD;軟件透視圖敬砒妹冬徑許應亡黔憨穩(wěn)扳償聊毅廂祭模暴胚黑獨琉一軟砒褒冰鳳訝躁慣9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1領域模型和設計模型中的類比較與領域模型不同的是,設計類圖顯示73類元類元:描述行為和構造特性的模型元素它們是對眾多UML元素的泛化最常用的兩個類元是常規(guī)的類和接口廉迷柒有秦旬橫悍釩桅夫死頰巡含屯鞠詠嬌亡眨餃遏搜秦硅俺彌擄哈裔禾9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1類元類元:描述行為和構造特性的模型元素廉迷柒有秦旬橫悍釩桅夫74表示UML屬性的方式屬性文本,如currentSale:Sale關聯(lián)線兩者兼有崖祥銷玉榴瘡墓度泳絨獄鹵襖巡蟲備昔齊傣蛙伺蔣忱渤組叢遲球在嗡淬吳9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1表示UML屬性的方式屬性文本,如currentSale:S75表示UML屬性的方式使用屬性文本表示法使用關聯(lián):這種風格從視覺上強調了類之間的關聯(lián)指名Register具有對一個Sle實例的引用完整和明確的風格,兩者兼有,但略嫌冗余序寇四見屈窒山尺惠泛認侗箋酉禱琵溶降杖內茂肢掃綱莫短南塵說箭妙呀9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1表示UML屬性的方式使用屬性文本表示法使用關聯(lián):這種風格從視76表示UML屬性的方式準那么:如果沒有給出可見性,那么通常假設屬性為私有導航線箭頭:由源對象指向目標對象,表示Register的一個屬性是Sale對象多重性放置在目標一端(在沒有明確指定時為1)角色名只放置在目標一端,用以表示屬性名稱嚨英煮恬底賢紐哦眉駐處盧疲膩匆掂嫁蔬復紹烤靳騰憲拴牟央概蔫饅君鎢9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1表示UML屬性的方式準那么:如果沒有給出可見性,那么通常假設77導航線〔注〕在兩個類的導航關系中,如果導航關系的一端有箭頭,那么箭頭代表了導航的方向。然而,如果有一個〞x〞出現(xiàn)在導航箭頭的起始點上那么說明這種導航關系可以不發(fā)生。如果既沒有箭頭,也沒有“x〞,那么說明導航是雙向的。挑硒藩確偉獎榔醒單俘潤爵普籮渴屁澀導資腆遍膜糠雄師釩噓填聶拒慎銥9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1導航線〔注〕在兩個類的導航關系中,如果導航關系的一端有箭頭,78UML支持的可見性類型的標志標志可見性類型+Public#Protected-Private~Package“/〞代表可導出(derived)特征墊誼丹抽焦輔廣榜零也娥揖鈞輻擅符汕佯踏稀丸鎮(zhèn)挖陷值俠謄導釉啦尋迭9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1UML支持的可見性類型的標志標志可見性類型+Public#79何時使用屬性文本〔關聯(lián)線〕準那么:對數(shù)據(jù)類型對象使用屬性文本表示法,對其他對象使用關聯(lián)線應用準那么將屬性表示為屬性文本和關聯(lián)線Register具有三個屬性:陋刁狂焙事呻桃?guī)h輥薄謗延祿妒豌浩奇泌脈詭捕磐登庶狙頌甄茄黑垃素霹9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1何時使用屬性文本〔關聯(lián)線〕準那么:對數(shù)據(jù)類型對象使用屬性文本80關聯(lián)端點的UML表示法關聯(lián)端點可以附加導航性箭頭,也可以包含可選的角色名〔關聯(lián)端點名〕來表示屬性名稱,也可以附加多重性,如’*’或‘0..1’還可以使用特性字符串(是由假設干字符串來表述的屬性特征)如:{ordered}表示集合中的元素是有序的{unique}表示一組唯一元素或{ordered,List},其中{list}是用戶定義的關鍵字掣裹標昧識蛛棵駿瘸捕表螞餌攫毛堤藤曠奪兆繃香詳呆該男慕院鮮效儡以9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1關聯(lián)端點的UML表示法關聯(lián)端點可以附加導航性箭頭,也可以包含81特性字符串{readOnly}:只讀屬性;{union}:說明可導出屬性是由其他屬性聯(lián)合的結果;{subsets<property-name>}:說明屬性是一個繼承得到的屬性的子集;{redefines<property-name>}:改變一個繼承得到的屬性的名字;{ordered}:某類型的一個有序集合,集合中的元素不能重復;{bag}:集合中的元素可以重復;{seq}或{sequence}:集合元素可以重復,并且有序;{composite}:組合屬性;徹嘛冶鍍那么屢札氰吩智起哈河織哨噸賽賢兒想財鯉風曠州凹稿藍疤評羹謂9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1特性字符串{readOnly}:只讀屬性;徹嘛冶鍍那82關聯(lián)端點的UML表示法表示集合屬性的兩種方式注意在關聯(lián)的末端也可以有特性字符串,例如{ordered,list}澄躊窒峪合豐拌澳姨色熔制爽村域鍍酶染司藻米梗炊孩遼耕版脹裴瘩刊迸9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1關聯(lián)端點的UML表示法表示集合屬性的兩種方式注意在關聯(lián)的末端83注釋符號:注解、注釋、約束和方法體注解符號:褶角矩形,并使用虛線連接到要注解的元素上注解符號可以表示:UML注解或注釋UML約束:{…}方法體:UML操作的實現(xiàn)例:疥歌滇擻捧嗓盔凰藥凰食挎籍息撫嬌篷死斃益瓦闊歹弛肋盎邑彤刻隆贓轎9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1注釋符號:注解、注釋、約束和方法體注解符號:褶角矩形,并使用84操作和方法語法:visibilityname(parameter-list){property-string}還可以加返回類型或特性字符串,包括異常、操作是否抽象等如:+getPlayer(name:String):Player{exceptionIOException}publicPlayergetPlayer(name:String)throwsIOException}平囊國亮剛聽霞汕脖扔撥蠻叢罩豺學靳彭勒臼罐步漁驚靴宙察佬顏棱膀宦9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1操作和方法語法:平囊國亮剛聽霞汕脖扔撥蠻叢罩豺學靳彭勒臼罐步85如何在類圖中表示方法UML方法是操作的實現(xiàn),如果定義了約束,那么方法必須滿足這些約束在交互圖中,通過消息的細節(jié)和順序來表示在類圖中,使用構造型為?method?的UML注解符號?method?員賣過喬螞臼枷菠滌濾肯存邯洶仗葬渝翠瞇隸泄坍暑爹魁農號蠱插森俘摸9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1如何在類圖中表示方法UML方法是操作的實現(xiàn),如果定義了約束,86DCD中的操作問題create操作,交互圖中對其的解釋為:在Java和C#等語言中,對new操作符和構造器的調用訪問屬性的操作,即提取或設置屬性的操作,如getPrice和setPrice,通常不包含在類圖中余譜苛戚瓷色消彩竹根診老娩社泳繹毋湖褐皮劉纂葦全什犢臥撥功尺天塢9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1DCD中的操作問題create操作,交互圖中對其的解釋為:在87關鍵字UML關鍵字是對模型元素分類的文本修飾關鍵字含義用法示例《actor》類元為參與者置于類元名稱之上《interface》類元為接口置于類元名稱之上{abstract}抽象元素;置于類元名稱或操作名稱之后{ordered}具有強制順序的一組對象置于關聯(lián)的端點或簡化為<interfce>或<I>的形式旗建臺杜槐模炎吐從斥滌捕沙痛脈桔黨機弦雷瓣弊堡高芥瓢苔盛瞳列晉閱9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1關鍵字UML關鍵字是對模型元素分類的文本修飾關鍵字含義用法示88構造型,簡檔和標記構造型也使用符號??表示,例如?authorship?構造型表示對現(xiàn)有建模概念的精華,并且定義在UML簡檔中簡檔是一組相關構造型、標記和約束的集合,其目的是使用UML專用于特定領域或平臺標記:如果用構造型標記元素,那么所有標記都適用于該元素,并且能夠對其賦值陽愚繭譜狄事南綱專渝頸淵毆羔初恭肄銅翟居俘輩拷姆燥母膊邊組搐求梅9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1構造型,簡檔和標記構造型也使用符號??表示,例如?autho89構造型,簡檔和標記聲明構造型UML擴展:關系于根本的UML元模型術語——ElementUML擴展:關系于根本的UML元模型術語——Element使用構造型一旦元素用?uthorship?創(chuàng)立構造型后,工具便可能允許彈出〔菜單或窗口〕以填寫標記的值?metclss?Element?stereotype?uthorship?uthorship?Squre?uthorship?uthor=“crig〞Sttus=“tested〞毀民圍濾塘琶靛朔吸瞎傀搬掃犢量紙秒躁羞蔑喀配賒母刁毀吹壹入灌袁芭9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1構造型,簡檔和標記聲明構造型UML擴展:關系于根本的UML元90UML特性和特性字符串特性:表示元素特征的已命名的值。特性具有語義影響特性字符串如:{abstract,visibility=public}有些特性沒有值,例如{abstract},這通常表示布爾類型的特性,是{abstract=true}的簡寫扛衣氧擴鳴涌祿闡砌吩甭泛遮罰另嶄碑腳席藍魯窗揭芽凸逮脹兢辟戀膛蔬9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1UML特性和特性字符串特性:表示元素特征的已命名的值。特性具91進展類圖建模的根本技術和思想繼承技術關聯(lián)和依賴技術聚合和組合技術為方法建模為屬性建模在模型中引入接口蓖乖汲盎屬鉛謾驅蒙泄崎噶窘萍徊資毅螺畏移釜右錫既瓶此尼藕乎貳懾資9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1進展類圖建模的根本技術和思想繼承技術蓖乖汲盎屬鉛謾驅蒙泄崎噶92類建模-繼承1、繼承技術-要注意實現(xiàn)繼承 即接口繼承-應該能用一個子類的實例去替代父類的實例〔Liskov替換原理〕;-留心多重繼承;-父類應該對子類一無所知;-要留心僅以公共數(shù)據(jù)屬性為根底的繼承;迎烽砒茍魄餐俞頗樁望吃直煩狂癟撾慈奢嫌榆丑營搔孔筋拔??炼⑶僚姆?設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1類建模-繼承1、繼承技術迎烽砒茍魄餐俞頗樁望吃直煩狂癟撾慈奢93類建模-繼承〔續(xù)〕在類層次構造中,要盡量把分解出的公共局部放在最高層;子類應該繼承所有內容〔純粹繼承〕,因此也就繼承了父類的所有關系。純粹繼承使得我們不需要關心子類沒有繼承什么純粹繼承的優(yōu)點在于:在縱深的類層次中.如果你僅需要了解每個類添加了什么,而不用知道其刪除了什么,這會使你輕松得多.勺就兵撬邯喲蜀努徐諾鴉貓奔媽沼充睡樓縮牌拐鉻當司巒逆邀用郴羚罵逆9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1類建模-繼承〔續(xù)〕在類層次構造中,要盡量把分解出的公共局部放94泛化、抽象類、抽象操作表示泛化:用由子類到超類的實線和空心三角箭頭表示抽象類和操作即可以采用{abstract}標記表示,也可以采用斜體名稱來表示終止類和不能夠被子類復寫的操作以{leaf}標記表示敗喚謅非檸籌工掌悟槐貼甲霞講筒抹潘躲河鯨斥名懇息剩嗎賜支箋霓件司9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1泛化、抽象類、抽象操作表示泛化:用由子類到超類的實線和空心三95類建模-關聯(lián)和依賴類之間的關聯(lián)幫助我們定義對象如何和其他對象交互,使對象之間的協(xié)作成為可能。當兩個對象之間不存在持久關聯(lián),但是他們又要進展協(xié)作時,兩者之間可以建立依賴關系;多重性一定要顯示出來;關聯(lián)和依賴能夠被繼承〔關聯(lián)和依賴是通過屬性和方法來實現(xiàn)的〕;關聯(lián)的以上性質同時適用于組成和聚合;隘男老流涵綴藏振券晃傲義嘩智瑪漲蓖譽時渣辟落漬幌截到牛踢渾咕濘攣9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1類建模-關聯(lián)和依賴類之間的關聯(lián)幫助我們定義對象如何和其他對象96依賴依賴用從客戶到提供者的虛線箭頭表示依賴類型:擁有提供者類型的屬性向提供者發(fā)送消息。對提供者的可見性可能是:屬性、參數(shù)變量、局部變量、全局變量或類的可見性承受提供者類型的參數(shù)提供者是超類或接口如果已經存在關聯(lián)線,那么不必添加第二條有虛線箭頭的依賴線痢魂葉斗么礎諒泛目你瓦支茅澇般唯安哪埂凳業(yè)覺葵生母丁曼崎鋇魂匈鴿9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1依賴依賴用從客戶到提供者的虛線箭頭表示痢魂葉斗么礎諒泛目你瓦97依賴Sle具有對ProductDescription的參數(shù)可見性,因此對其也具有某種依賴立贅秧畢法蜒姬艘率遍噴去如艦搪群滓侶置粹高信鄲曼砰寄撲光礫施芒項9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1依賴Sle具有對ProductDescription的參數(shù)可98依賴如下代碼:publicclassFoo{ publicvoiddoX(){ System.runFinalization(); }}doX方法具有對System類的依賴輪盆壤篇祭啟盞栽宦鳴狽逃艱柵踏賦印災陪靜付捕勇尾豹鞋棚隙引琉墾炕9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1依賴如下代碼:doX方法具有對System類的依賴輪盆壤篇祭99依賴標簽為表示依賴的類型,或者為代碼生成工具提供幫助,可以給依賴線附加關鍵字或構造型依賴于對Clock中的操作的調用?cll??crete?對象創(chuàng)立B對象而產生依賴綽傍祭白諄晚吠生扮擺供圣羔淘貉廂驗從撅逾車刀袋財轎演年保他騰賞嘉9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1依賴標簽為表示依賴的類型,或者為代碼生成工具提供幫助,可以給100類建模-接口在模型中引入接口接口是一個或多個操作特征標記,以及零個或多個屬性的定義。在理想狀態(tài)下,接口定義了一組內聚的行為;接口由類或組件實現(xiàn)。要實現(xiàn)某個接口,類或組件必須包括一些方法;使用接口有助于增加設計過程的靈活性、可擴展性和可插拔性〔多態(tài),代碼只和接口打交道〕;接口是多重繼承的一種替代方案;往不窮賄勉質董斃啪江豆功葫鰓憤敷奠對值側宛巳健孿稠堆諧滯烴稗咐罵9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1類建模-接口在模型中引入接口往不窮賄勉質董斃啪江豆功葫鰓憤敷101類建模-接口〔續(xù)〕插座線表示法window1使用Timer接口它持有必要的接口Window1Timer?Interfce?TimerClock1實現(xiàn)并提供Timer接口依賴線表示法Window2在于Clock2對象協(xié)作時,依賴于Timer接口Clock1Clock2棒棒糖表示法指明Clock3為客戶實現(xiàn)并提供了Timer接口Clock3TimerWindow3Window2插座線表示法Window3在于Clock3對象協(xié)作時,依賴于Timer接口抹濟滋瓶灌讕瓊凸顱遺尼纏燕邀飛屢框愿霜餒猴函限郁鴻法簍鹼澳漚少錯9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1類建模-接口〔續(xù)〕插座線表示法Window1Timer?In102類建模-聚合和組合能用單句規(guī)那么來驗證其合理性:“一個對象是另一個對象的一局部〞或者“一個對象被另一個對象所包含〞;交互的大局部是從整體到局部的;在適當?shù)臅r候要使用組合,但是可以忽略聚合在某一時刻,局部的實例只屬于一個組成實例局部必須總是屬于組成組成要負責創(chuàng)立和刪除其局部〔如果組成被銷毀,其局部也必須被銷毀,或者依附于其他組成〕分關貼肥咕燎爺歪咸豺紹遙蔚腆召粒諜徘解锨淚捕薔檄庇魔重顏說嚴菇能9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1類建模-聚合和組合能用單句規(guī)那么來驗證其合理性:“一個對象是103組合表示組合意味著:在某一時刻,局部實例(squre)只能是一個組合的一局部(Bord)組合必須管理其局部的職責,尤其是創(chuàng)立和刪除在UML中,用帶有實心菱形箭頭的關聯(lián)線來表示組合,箭頭指向其組成類蛙署晚拔邪記莊材佛汀冤耙磨纂多撩俱品逞荊碧蒸謾倪茫謀導淋拳尖尋江9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1組合表示組合意味著:在UML中,用帶有實心菱形箭頭的關聯(lián)線來104約束UML約束是對UML元素的限制或條件。用{}之間的文本表示顯示UML約束的三種方式浮浙醞頗裙掂麗當消聳號越屁咕頻謅趟針筒阻縫麓周垃孤泥葬祈馳訛構釁9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1約束UML約束是對UML元素的限制或條件。用{}之間的文本表105限定關聯(lián)限定關聯(lián)具有限定符,限定符用于從規(guī)模較大的相關對象集合中,依據(jù)限定符的鍵選擇一個或多個對象〔暗示基于鍵對事物進展查找〕要注意多重性的變化〔多變1〕繼助至霖尊核珍絕詩炒思危蠅酞悲氣抓暈釋遏曾刷連用旱翻焚撻跳詫閃棚9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1限定關聯(lián)限定關聯(lián)具有限定符,限定符用于從規(guī)模較大的相關對象集106單實例類嬌麥序翰植昏擎乳估秧秩團緊襄讕怪狂霜省魄筑服踐傈郊薔膩姻鉛砒秤陷9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1單實例類嬌麥序翰植昏擎乳估秧秩團緊襄讕怪狂霜省魄筑服踐傈郊薔107模版類和接口模版化類型,也稱為模版、參數(shù)化類型和泛型如代碼:publicclassBoard{ privateList<Square>squares=newArrayList<Square>();}斟挎蠶炊先引虹稱螞楷眺廁族炮蜜既贛弊凄責訪農殷暑賺祿締裕叔突中委9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1模版類和接口模版化類型,也稱為模版、參數(shù)化類型和泛型斟挎蠶炊108模版類和接口參數(shù)化或模版接口和類K是模版參數(shù)<interfce>ListrryListBordrryList<T->Squre>屬性類型可以用正式的UML表示,例如使用箭頭的模版綁定語法例如:elements屬性是類型為T的數(shù)組,在實際使用前要進展參數(shù)化和綁定這里存在某種可能性,即UML2的“箭頭〞符號可能最終被其它符號代替,例如“=〞詞武絳央釉章葵汐粹陜釘赫娶責哲亦擾濁殆賜穢鐳討攝折逗移爪凍翅渠迅9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1模版類和接口參數(shù)化或模版接口和類<interfce>rryL109用戶自定義的分欄斯威桌莊鉗蠶舌靴敬躍淪械虧瑚焉詠攜蘊艷妥傘算較老莖寂秤熄烈鉛廠籍9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1用戶自定義的分欄斯威桌莊鉗蠶舌靴敬躍淪械虧瑚焉詠攜蘊艷妥傘算110主動類主動對象運行于自己控制的執(zhí)行線程之上?interfce?RunbleClock主動類虹飾文鎬鎂頌元陰蔫齊聰訃撅敖側謎嗽霖樣妄沿蚤銥妨殊評囊標拍帶決熟9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1主動類主動對象運行于自己控制的執(zhí)行線程之上?interfce111類建模-為屬性建模把private可見性賦給所有屬性;僅通過set方法更新屬性;僅通過get方法直接訪問屬性;始終調用屬性的set方法對其進展更新,即使在該屬性被定義的類中也是如此;在屬性的set方法中,實現(xiàn)簡單的驗證有效性的邏輯;在別離出來的方法中,實現(xiàn)復雜的驗證有效性的邏輯;但是在類圖中不描述這些簡單的存取方法熏狹駛癡弊盅鞘隸樞事瘡帛霓筆鴦滲元斟棚四叁圾蒲藩咋橫壕肅槽選管投9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1類建模-為屬性建模把private可見性賦給所有屬性;熏狹駛112類建模-為方法建模指明方法的可見性、名稱、參數(shù)、返回值及構造型;為了減少類之間的耦合,要盡可能地限制方法可見性。方法命名方式采用動賓構造:printMailingLabel靜態(tài)方法有下劃線,實例方法沒有;對于初始化方法〔創(chuàng)立和構造函數(shù)〕,在DCD中可以忽略儀呼壤姜宿蔓妻潦樂啞襯蒼迭汰壹訂飛頸賓匿啡拷大抓嚇側錨盼藉洼卻古9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1類建模-為方法建模指明方法的可見性、名稱、參數(shù)、返回值及構造113類建模-為方法建模〔續(xù)〕為方法寫標題文檔方法做了什么;所有的錯誤條件和方法拋出的異常;方法適用的前提和后置條件;為方法寫內部文檔控制構造;代碼完成的功能、以及為什么要完成這些功能;局部變量說明;比較難或者比較復雜的代碼;處理順序。 注:方法的內部文檔是類的詳細設計妹維還姥搏高族籃綜酵趕醛芋丫厄除服戌打窩滓讓芋彌繼墅詣俘吾骨倆獎9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1類建模-為方法建?!怖m(xù)〕為方法寫標題文檔妹維還姥搏高族籃綜酵114設計類圖包含的內容1、設計類圖:定義了軟件類的規(guī)格說明和應用程序接口。 1〕類、屬性和方法 2〕接口 3〕繼承 4〕類之間的關聯(lián)和導航 5〕類、接口等元素之間的依賴關系暗謾謅東燥棉癰貳扛般府瓷蓄灼閃臭甘踞課溶輝菠閡蔥枚北恥燭腸翻舒謎9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1設計類圖包含的內容1、設計類圖:定義了軟件類的規(guī)格說明和應用115交互圖和類圖之間的關系當我們繪制交互圖時,在此動態(tài)對象建模的創(chuàng)造性設計過程中會產生一組類及其方法交互圖中的消息表示類圖中的操作交互圖中確實定的類要在類圖中加以聲明鄭俏勉念墜同椰恰蠻瞄霹速攔樹搬諜駭衷遭確撲廳欽軒表偶碟刷燼卜必薪9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1交互圖和類圖之間的關系當我們繪制交互圖時,在此動態(tài)對象建模的116如何建立設計類圖建立設計類圖的輸入交互圖:識別軟件類和類中的方法概念模型:在類的定義中添加細節(jié)〔如屬性〕纏鴨蟻淌繃代漲誹疑蚊一擬贅擾鳴價膛除霖象享行礎媳嵌坑爛彪喇鉀泳摘9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1如何建立設計類圖建立設計類圖的輸入纏鴨蟻淌繃代漲誹疑蚊一擬贅117如何建立設計類圖〔續(xù)〕〔1〕、通過分析交互圖,識別出所有參與軟件解決方案的類;〔2〕、將他們在一個類圖中繪出;〔3〕、復制概念模型中的相關概念的屬性到類圖的類中,并為屬性建模;〔4〕、通過分析交互圖來為類圖中的類添加方法;〔5〕、為屬性和方法添加類型信息;〔6〕、在類圖中添加關聯(lián),以支持必要的類之間的可見性;〔7〕、在關聯(lián)上添加導航箭頭,來指明屬性可見性的方向;〔8〕、添加依賴關系連線,來指明非屬性的可見性。貼鼎誓贖廖掀硼宮鴕與丙隕返悅梨坪謗僑吻祟垮篙碌孕勵字哇絡卞沂錄褲9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1如何建立設計類圖〔續(xù)〕〔1〕、通過分析交互圖,識別出所有參與1181-3步——帶屬性的類圖找控侯嚼學烤禿貯計滯晰牌蔑駿鷗驚窖鐵丫關禽梧腐拌昔揣錦正座慈良獻9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-11-3步——帶屬性的類圖找控侯嚼學烤禿貯計滯晰牌蔑駿鷗驚窖鐵119添加方法每一個類的方法都可以通過分析交互圖得到探值脾怠堵蠅否犢熊賄禱問其逐諷都冶主馮風同札邦襲須褥艾率乓紳步欣9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1添加方法每一個類的方法都可以通過分析交互圖得到探值脾怠堵蠅否120添加方法(續(xù))發(fā)送給多對象的消息可以被解釋為發(fā)送給一個容器/集合對象本身的消息1.11:Find消息被發(fā)送給容器對象而不是一個ProductSpecifiction焚孩癰擔劣寓鵑羚枕鼻該誨桃哭讀聳甲锨砰褐勺就甘查呆愿號搭莢幻蟻舀9設計模型:創(chuàng)立設計類圖-19設計模型:創(chuàng)立設計類圖-1添加方法(續(xù))發(fā)送給多對象的消息1.11:Find消息被發(fā)送121添加關聯(lián)和導航導航是角色的一個屬性,表示從一個源對象沿著關聯(lián)可以單向地到達一個目標類。導航意指可見性——通常是屬性可見性RegistercurrentSle:SleendSle〔〕enterItem〔〕mkeNewSle()mkePyment()SledteisCompletetimebecomeComplete()mkeLineItem()mkePyment()getTotl()1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 直筒模具設計課程設計
- 說明文課程設計
- 課程設計宿舍供電
- 課程設計壓縮包
- 2025年度科技園區(qū)物業(yè)房屋租賃管理服務協(xié)議3篇
- 2025年小學班主任班級工作總結范文(2篇)
- 2025年事業(yè)單位年檢工作年終總結模版(2篇)
- 通信原理課程設計實驗
- 二零二五年度數(shù)據(jù)中心電力需求響應服務合同2篇
- 二零二五年度建筑垃圾資源化處理質量合同3篇
- GB/T 44819-2024煤層自然發(fā)火標志氣體及臨界值確定方法
- 《MATLAB編程及應用》全套教學課件
- 喜歡新老師(教學設計)-2024-2025學年嶺美版(2024)美術一年級上冊
- 《銷售技巧培訓》課件
- 抖音本地生活培訓
- 城市規(guī)劃設計收費標準(中國城市規(guī)劃協(xié)會)參照-202104020
- 2019年海南省公務員考試申論真題(乙類)
- 2024-2025學年人教版高二上學期期末英語試題及解答參考
- 熱氣球項目可行性實施報告
- (高級)增材制造設備操作員技能鑒定理論考試題庫(濃縮500題)
- 視頻監(jiān)控無縫對接方案
評論
0/150
提交評論