設計模型創(chuàng)建設計類圖方案PPT課件_第1頁
設計模型創(chuàng)建設計類圖方案PPT課件_第2頁
設計模型創(chuàng)建設計類圖方案PPT課件_第3頁
設計模型創(chuàng)建設計類圖方案PPT課件_第4頁
設計模型創(chuàng)建設計類圖方案PPT課件_第5頁
已閱讀5頁,還剩63頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、設計類圖UML用類圖表示類、接口及其關聯靜態(tài)對象建模棍純腆過稽育菌鑲柏寇葷鉸衙琺晝肘炔拙棗女骸苯暑左待亨猩嘉氰寐水耙9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第1頁/共68頁常用類圖表示法java.awt:Fontorjava.awt.Fontplain : Int = 0 readOnly bold : Int = 1 readOnly name : Stringstyle : Int = 0.getFont(name : String) : FontgetName() : SerfaceRunnablerun()- ellipsis “” means t

2、here may be elements, but not shown- a blank compartment officially means “unknown” but as a convention will be used to mean “no members”SubclassFoo.run().SuperclassFooorSuperClassFoo abstract - classOrStaticAttribute : Int+ publicAttribute : String- privateAttributeassumedPrivateAttributeisInitiali

3、zedAttribute : Bool = trueaCollection : VeggieBurger * attributeMayLegallyBeNull : String 0.1 finalConstantAttribute : Int = 5 readOnly /derivedAttribute + classOrStaticMethod()+ publicMethod()assumedPublicMethod()- privateMethod()# protectedMethod() packageVisibleMethod()constructor SuperclassFoo(

4、Long )methodWithParms(parm1 : String, parm2 : Float)methodReturnsSomething() : VeggieBurgermethodThrowsException() exception IOExceptionabstractMethod()abstractMethod2() abstract / alternatefinalMethod() leaf / no override in subclasssynchronizedMethod() guarded 3 common compartments1. classifier na

5、me2. attributes3. operationsinterface implementation andsubclassingFruit.PurchaseOrder.1association with multiplicitiesdependency officially in UML, the top format is used to distinguish the package name from the class nameunofficially, the second alternative is commonorderan interface shown with a

6、keyword UML的正式表示法,最上面的格式用來區(qū)分包名和類名;第二種非正式格式三個常見的分欄:1.類元名稱2.屬性3.操作用關鍵字interfce表示接口interfceRunnblerun()接口的實現和子類化依賴具有多重性的關聯省略號表示這里具有元素,但是沒有顯示空分欄的正式含義是“未知”,但也用于表示“沒有”妝靜痔匣捕考踏恕抗鑄媒映有彤翰蘆孜紀螞洲庚蓉雹險參稚罰測急惶謄彬9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第2頁/共68頁設計類圖樣例POSTenterItem() SleDteisComplete:BoolentimemkeLineItem()11Cptur

7、es導航類的定義的三個區(qū)域框方法,有參數,但沒有制定類型信息 蝦徊偷拋喚舷嘶刁壇寵福整綸痘男罩晝噓藤旭張凋拐埃比鴕乒疏嚼態(tài)補搽9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第3頁/共68頁領域模型和設計模型中的類比較與領域模型不同的是,設計類圖顯示出了軟件實體的定義而不是真實世界中的概念。Register.endSale()enterItem(.)makePayment(.)SaletimeisComplete : Boolean/totalmakeLineItem(.)Register.SaletimeisComplete : Boolean/totalCaptures111D

8、omain Modelconceptual perspectiveDesign ModelDCD; software perspectivecurrentSale領域模型概念透視圖設計模型DCD;軟件透視圖敬砒妹冬徑許應亡黔憨穩(wěn)扳償聊毅廂祭模暴胚黑獨琉一軟砒褒冰鳳訝躁慣9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第4頁/共68頁類元類元:描述行為和結構特性的模型元素它們是對眾多UML元素的泛化最常用的兩個類元是常規(guī)的類和接口廉迷柒有秦旬橫悍釩桅夫死頰巡含屯鞠詠嬌亡眨餃遏搜秦硅俺彌擄哈裔禾9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第5頁/共68頁表示UML屬性的

9、方式屬性文本,如currentSale: Sale關聯線兩者兼有崖祥銷玉榴瘡墓度泳絨獄鹵襖巡蟲備昔齊傣蛙伺蔣忱渤組叢遲球在嗡淬吳9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第6頁/共68頁表示UML屬性的方式Register.Sale.1RegistercurrentSale : Sale.Sale.using the attribute text notation to indicate Register has a reference to one Sale instanceusing the association notation to indicate Registe

10、r has a reference to one Sale instanceOBSERVE: this style visually emphasizes the connection between these classescurrentSaleRegistercurrentSale : Sale.Sale.1thorough and unambiguous, but some people dislike the possible redundancycurrentSale使用屬性文本表示法使用關聯:這種風格從視覺上強調了類之間的關聯指名Register具有對一個Sle實例的引用完整和明

11、確的風格,兩者兼有,但略嫌冗余序寇四見屈窒山尺惠泛認侗箋酉禱琵溶降杖內茂肢掃綱莫短南塵說箭妙呀9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第7頁/共68頁表示UML屬性的方式準則:如果沒有給出可見性,則通常假設屬性為私有 導航線箭頭:由源對象指向目標對象,表示Register的一個屬性是Sale對象 多重性放置在目標一端(在沒有明確指定時為1) 角色名只放置在目標一端,用以表示屬性名稱Register.Sale.1RegistercurrentSale : Sale.Sale.using the attribute text notation to indicate Regis

12、ter has a reference to one Sale instanceusing the association notation to indicate Register has a reference to one Sale instanceOBSERVE: this style visually emphasizes the connection between these classescurrentSaleRegistercurrentSale : Sale.Sale.1thorough and unambiguous, but some people dislike th

13、e possible redundancycurrentSale嚨英煮恬底賢紐哦眉駐處盧疲膩匆掂嫁蔬復紹烤靳騰憲拴牟央概蔫饅君鎢9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第8頁/共68頁導航線(注) 在兩個類的導航關系中,如果導航關系的一端有箭頭,則箭頭代表了導航的方向。 然而,如果有一個”x”出現在導航箭頭的起始點上則表明這種導航關系可以不發(fā)生。如果既沒有箭頭,也沒有“x”,則表明導航是雙向的。Register.Sale.1RegistercurrentSale : Sale.Sale.using the attribute text notation to indicat

14、e Register has a reference to one Sale instanceusing the association notation to indicate Register has a reference to one Sale instanceOBSERVE: this style visually emphasizes the connection between these classescurrentSaleRegistercurrentSale : Sale.Sale.1thorough and unambiguous, but some people dis

15、like the possible redundancycurrentSale挑硒藩確偉獎榔醒單俘潤爵普籮渴屁澀導資腆遍膜糠雄師釩噓填聶拒慎銥9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第9頁/共68頁UML支持的可見性類型的標志 標志可見性類型+Public#Protected-PrivatePackage“/”代表可導出(derived)特征墊誼丹抽焦輔廣榜零也娥揖鈞輻擅符汕佯踏稀丸鎮(zhèn)挖陷值俠謄導釉啦尋迭9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第10頁/共68頁何時使用屬性文本(關聯線)準則:對數據類型對象使用屬性文本表示法,對其他對象使用關聯線Regi

16、sterid: Int.Saletime: DateTime.1applying the guideline to show attributes as attribute text versus as association linesStoreaddress: Addressphone: PhoneNumber.1Register has THREE attributes:1. id2. currentSale3. locationcurrentSalelocation應用準則將屬性表示為屬性文本和關聯線Register具有三個屬性:1.id2.currentSle3.loction陋刁狂

17、焙事呻桃?guī)h輥薄謗延祿妒豌浩奇泌脈詭捕磐登庶狙頌甄茄黑垃素霹9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第11頁/共68頁關聯端點的UML表示法 關聯端點可以附加導航性箭頭,也可以包含可選的角色名(關聯端點名)來表示屬性名稱,也可以附加多重性,如*或0.1 還可以使用特性字符串(是由若干字符串來表述的屬性特征) 如: ordered 表示集合中的元素是有序的 unique表示一組唯一元素 或ordered, List,其中l(wèi)ist是用戶定義的關鍵字掣裹標昧識蛛棵駿瘸捕表螞餌攫毛堤藤曠奪兆繃香詳呆該男慕院鮮效儡以9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第12頁/

18、共68頁特性字符串 readOnly :只讀屬性; union :表明可導出屬性是由其他屬性聯合的結果; subsets :表明屬性是一個繼承得到的屬性的子集; redefines :改變一個繼承得到的屬性的名字; ordered:某類型的一個有序集合,集合中的元素不能重復; bag:集合中的元素可以重復; seq 或 sequence:集合元素可以重復,并且有序; composite:組合屬性;徹嘛冶鍍則屢札氰吩智起哈河織哨噸賽賢兒想財鯉風曠州凹稿藍疤評羹謂9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第13頁/共68頁關聯端點的UML表示法notice that an ass

19、ociation end can optionally also have a property string such as ordered, ListSaletime: DateTime.SalesLineItem.1.*lineItemsordered, ListSaletime: DateTimelineItems : SalesLineItem 1.* orlineItems : SalesLineItem 1.* ordered.SalesLineItem.Two ways to show a collection attribute表示集合屬性的兩種方式注意在關聯的末端也可以有特

20、性字符串,例如ordered,list澄躊窒峪合豐拌澳姨色熔制爽村域鍍酶染司藻米梗炊孩遼耕版脹裴瘩刊迸9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第14頁/共68頁注釋符號:注解、注釋、約束和方法體 注解符號:褶角矩形,并使用虛線連接到要注解的元素上 注解符號可以表示: UML注解或注釋 UML約束: 方法體:UML操作的實現例:疥歌滇擻捧嗓盔凰藥凰食挎籍息撫嬌篷死斃益瓦闊歹弛肋盎邑彤刻隆贓轎9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第15頁/共68頁操作和方法語法:visibility name (parameter-list) property-strin

21、g還可以加返回類型或特性字符串,包括異常、操作是否抽象等如:+getPlayer(name:String):Playerexception IOExceptionpublic Player getPlayer(name:String) throws IOException平囊國亮剛聽霞汕脖扔撥蠻叢罩豺學靳彭勒臼罐步漁驚靴宙察佬顏棱膀宦9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第16頁/共68頁如何在類圖中表示方法 UML方法是操作的實現,如果定義了約束,則方法必須滿足這些約束 在交互圖中,通過消息的細節(jié)和順序來表示 在類圖中,使用構造型為method的UML注解符號Regis

22、ter.endSale()enterItem(id, qty)makeNewSale()makePayment(cashTendered)method/ pseudo-code or a specific language is OKpublic void enterItem( id, qty ) ProductDescription desc = catalog.getProductDescription(id); sale.makeLineItem(desc, qty);method員賣過喬螞臼枷菠滌濾肯存邯洶仗葬渝翠瞇隸泄坍暑爹魁農號蠱插森俘摸9 設計模型:創(chuàng)建設計類圖-19 設計模型:

23、創(chuàng)建設計類圖-1第17頁/共68頁DCD中的操作問題 create操作,交互圖中對其的解釋為:在Java和C#等語言中,對new操作符和 構造器的調用 訪問屬性的操作,即提取或設置屬性的操作,如getPrice和setPrice,通常不包含在類圖中余譜苛戚瓷色消彩竹根診老娩社泳繹毋湖褐皮劉纂葦全什犢臥撥功尺天塢9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第18頁/共68頁關鍵字 UML關鍵字是對模型元素分類的文本修飾關鍵字含義用法示例actor類元為參與者置于類元名稱之上interface 類元為接口置于類元名稱之上abstract抽象元素;置于類元名稱或操作名稱之后order

24、ed具有強制順序的一組對象置于關聯的端點或簡化為或的形式旗建臺杜槐模炎吐從斥滌捕沙痛脈桔黨機弦雷瓣弊堡高芥瓢苔盛瞳列晉閱9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第19頁/共68頁構造型,簡檔和標記 構造型也使用符號表示,例如authorship 構造型表示對現有建模概念的精華,并且定義在UML簡檔中 簡檔是一組相關構造型、標記和約束的集合,其目的是使用UML專用于特定領域或平臺 標記:如果用構造型標記元素,則所有標記都適用于該元素,并且能夠對其賦值陽愚繭譜狄事南綱專渝頸淵毆羔初恭肄銅翟居俘輩拷姆燥母膊邊組搐求梅9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第2

25、0頁/共68頁構造型,簡檔和標記stereotypeAuthorshipauthor: Stringstatus : StringUML extension relationship to a basic UML metamodel term Elementauthorshipauthor = “craig”status = “tested”metaclassElement.authorshipSquare.using the stereotypea tool will probably allow a popup to fill in the tag values, once an elem

26、ent has been stereotyped with authorshipdeclaring the stereotype聲明構造型UML擴展:關系于基本的UML元模型術語ElementUML擴展:關系于基本的UML元模型術語Element使用構造型一旦元素用uthorship創(chuàng)建構造型后,工具便可能允許彈出(菜單或窗口)以填寫標記的值metclssElementstereotypeuthorshiputhorshipSqureuthorshiputhor=“crig”Sttus=“tested”毀民圍濾塘琶靛朔吸瞎傀搬掃犢量紙秒躁羞蔑喀配賒母刁毀吹壹入灌袁芭9 設計模型:創(chuàng)建設計類圖-

27、19 設計模型:創(chuàng)建設計類圖-1第21頁/共68頁UML特性和特性字符串 特性:表示元素特征的已命名的值。特性具有語義影響 特性字符串 如:abstract,visibility=public 有些特性沒有值,例如abstract,這通常表示布爾類型的特性,是abstract=true的簡寫扛衣氧擴鳴涌祿闡砌吩甭泛遮罰另嶄碑腳席藍魯窗揭芽凸逮脹兢辟戀膛蔬9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第22頁/共68頁進行類圖建模的基本技術和思想 繼承技術 關聯和依賴技術 聚合和組合技術 為方法建模 為屬性建模 在模型中引入接口蓖乖汲盎屬鉛謾驅蒙泄崎噶窘萍徊資毅螺畏移釜右錫既瓶此尼

28、藕乎貳懾資9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第23頁/共68頁類建模繼承1、繼承技術要注意實現繼承即接口繼承應該能用一個子類的實例去替代父類的實例(Liskov替換原理);留心多重繼承;父類應該對子類一無所知;要留心僅以公共數據屬性為基礎的繼承;迎烽砒茍魄餐俞頗樁望吃直煩狂癟撾慈奢嫌榆丑營搔孔筋拔??炼⑶僚姆? 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第24頁/共68頁類建模繼承(續(xù)) 在類層次結構中,要盡量把分解出的公共部分放在最高層; 子類應該繼承所有內容(純粹繼承),因此也就繼承了父類的所有關系。 純粹繼承使得我們不需要關心子類沒有繼承什么 純粹

29、繼承的優(yōu)點在于:在縱深的類層次中如果你僅需要了解每個類添加了什么,而不用知道其刪除了什么,這會使你輕松得多勺就兵撬邯喲蜀努徐諾鴉貓奔媽沼充睡樓縮牌拐鉻當司巒逆邀用郴羚罵逆9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第25頁/共68頁泛化、抽象類、抽象操作表示 泛化:用由子類到超類的實線和空心三角箭頭表示 抽象類和操作即可以采用abstract標記表示,也可以采用斜體名稱來表示 終止類和不能夠被子類復寫的操作以leaf標記表示敗喚謅非檸籌工掌悟槐貼甲霞講筒抹潘躲河鯨斥名懇息剩嗎賜支箋霓件司9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第26頁/共68頁類建模關聯和依

30、賴 類之間的關聯幫助我們定義對象如何和其他對象交互,使對象之間的協(xié)作成為可能。 當兩個對象之間不存在持久關聯,但是他們又要進行協(xié)作時,兩者之間可以建立依賴關系; 多重性一定要顯示出來; 關聯和依賴能夠被繼承(關聯和依賴是通過屬性和方法來實現的); 關聯的以上性質同時適用于組成和聚合;隘男老流涵綴藏振券晃傲義嘩智瑪漲蓖譽時渣辟落漬幌截到牛踢渾咕濘攣9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第27頁/共68頁依賴 依賴用從客戶到提供者的虛線箭頭表示 依賴類型: 擁有提供者類型的屬性 向提供者發(fā)送消息。對提供者的可見性可能是:屬性、參數變量、局部變量、全局變量或類的可見性 接受提供

31、者類型的參數 提供者是超類或接口 如果已經存在關聯線,則不必添加第二條有虛線箭頭的依賴線痢魂葉斗么礎諒泛目你瓦支茅澇般唯安哪埂凳業(yè)覺葵生母丁曼崎鋇魂匈鴿9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第28頁/共68頁依賴SalesLineItem.ProductDescription.1.*lineItemsSale.updatePriceFor( ProductDescription ).the Sale has parameter visibility to a ProductDescription, and thus some kind of dependencySle具有

32、對ProductDescription的參數可見性,因此對其也具有某種依賴立贅秧畢法蜒姬艘率遍噴去如艦搪群滓侶置粹高信鄲曼砰寄撲光礫施芒項9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第29頁/共68頁依賴 如下代碼:public class Foopublic void doX()System.runFinalization();System.runFinalization().Foo.doX().the doX method invokes the runFinalization static method, and thus has a dependency on the

33、System classdoX方法具有對System類的依賴輪盆壤篇祭啟盞栽宦鳴狽逃艱柵踏賦印災陪靜付捕勇尾豹鞋棚隙引琉墾炕9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第30頁/共68頁依賴標簽 為表示依賴的類型,或者為代碼生成工具提供幫助,可以給依賴線附加關鍵字或構造型callWindowa dependency on calling on operations of the operations of a ClockClockgetTime().createAa dependency that A objects create B objectsB.依賴于對Clock中的操

34、作的調用cllcrete對象創(chuàng)建B對象而產生依賴綽傍祭白諄晚吠生扮擺供圣羔淘貉廂驗從撅逾車刀袋財轎演年保他騰賞嘉9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第31頁/共68頁類建模接口 在模型中引入接口 接口是一個或多個操作特征標記,以及零個或多個屬性的定義。在理想狀態(tài)下,接口定義了一組內聚的行為; 接口由類或組件實現。要實現某個接口,類或組件必須包括一些方法; 使用接口有助于增加設計過程的靈活性、可擴展性和可插拔性(多態(tài),代碼只和接口打交道); 接口是多重繼承的一種替代方案;往不窮賄勉質董斃啪江豆功葫鰓憤敷奠對值側宛巳健孿稠堆諧滯烴稗咐罵9 設計模型:創(chuàng)建設計類圖-19 設計

35、模型:創(chuàng)建設計類圖-1第32頁/共68頁類建模接口(續(xù))interfaceTimergetTime()Clock1.getTime().lollipop notation indicates Clock3 implements and provides the Timer interface to clientsTimer is a provided interfaceTimerClock3.getTime().Window2Window3dependency line notationWindow2 has a dependency on the Timer interface when i

36、t collaborates with a Clock2 objectsocket line notationWindow3 has a dependency on the Timer interface when it collaborates with a Clock3 objectWindow1Timersocket line notationWindow1 uses the Timer interface it has a required interfaceClock2.getTime().Clock1 implements and provides the Timer interf

37、aceTimer插座線表示法window1使用Timer接口它持有必要的接口Window1TimerInterfceTimerClock1實現并提供Timer接口依賴線表示法Window2在于Clock2對象協(xié)作時,依賴于Timer接口Clock1Clock2棒棒糖表示法指明Clock3為客戶實現并提供了Timer接口Clock3TimerWindow3Window2插座線表示法Window3在于Clock3對象協(xié)作時,依賴于Timer接口抹濟滋瓶灌讕瓊凸顱遺尼纏燕邀飛屢框愿霜餒猴函限郁鴻法簍鹼澳漚少錯9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第33頁/共68頁類建模聚合和組

38、合 能用單句規(guī)則來驗證其合理性:“一個對象是另一個對象的一部分”或者“一個對象被另一個對象所包含”; 交互的大部分是從整體到部分的; 在適當的時候要使用組合,但是可以忽略聚合 在某一時刻,部分的實例只屬于一個組成實例 部分必須總是屬于組成 組成要負責創(chuàng)建和刪除其部分(如果組成被銷毀,其部分也必須被銷毀,或者依附于其他組成)分關貼肥咕燎爺歪咸豺紹遙蔚腆召粒諜徘解锨淚捕薔檄庇魔重顏說嚴菇能9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第34頁/共68頁組合表示Finger0.7Handcomposition1Square40Board1SalesLineItem1.*Sale1com

39、position means -a part instance (Square) can only be part of one composite (Board) at a time -the composite has sole responsibility for management of its parts, especially creation and deletion組合意味著:在某一時刻,部分實例(squre)只能是一個組合的一部分(Bord)組合必須管理其部分的職責,尤其是創(chuàng)建和刪除在UML中,用帶有實心菱形箭頭的關聯線來表示組合,箭頭指向其組成類蛙署晚拔邪記莊材佛汀冤耙磨

40、纂多撩俱品逞荊碧蒸謾倪茫謀導淋拳尖尋江9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第35頁/共68頁約束 UML約束是對UML元素的限制或條件。用之間的文本表示Stacksize : Integer size = 0 push( element )pop() : Objectthree ways to show UML constraints post condition: new size = old size + 1 post condition: new size = old size 1 顯示UML約束的三種方式浮浙醞頗裙掂麗當消聳號越屁咕頻謅趟針筒阻縫麓周垃孤泥葬祈馳

41、訛構釁9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第36頁/共68頁限定關聯 限定關聯具有限定符,限定符用于從規(guī)模較大的相關對象集合中,依據限定符的鍵選擇一個或多個對象(暗示基于鍵對事物進行查找) 要注意多重性的變化(多變1)ProductCatalogProductDescriptionitemIDContainsProductCatalogProductDescriptionContains1.*multiplicity reduced to 1(a)(b)qualifier111繼助至霖尊核珍絕詩炒思危蠅酞悲氣抓暈釋遏曾刷連用旱翻焚撻跳詫閃棚9 設計模型:創(chuàng)建設計類圖-1

42、9 設計模型:創(chuàng)建設計類圖-1第37頁/共68頁單實例類 1ServicesFactoryinstance : ServicesFactoryaccountingAdapter : IAccountingAdapterinventoryAdapter : IInventoryAdaptertaxCalculatorAdapter : ITaxCalculatorAdapter getInstance() : ServicesFactorygetAccountingAdapter() : IAccountingAdaptergetInventoryAdapter() : IInventoryAd

43、aptergetTaxCalculatorAdapter() : ITaxCalculatorAdapter.UML notation: in a class box, an underlined attribute or method indicates a static (class level) member, rather than an instance memberUML notation: this 1 can optionally be used to indicate that only one instance will be created (a singleton) 嬌

44、麥序翰植昏擎乳估秧秩團緊襄讕怪狂霜省魄筑服踐傈郊薔膩姻鉛砒秤陷9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第38頁/共68頁模版類和接口 模版化類型,也稱為模版、參數化類型和泛型 如代碼:public class Boardprivate List squares=new ArrayList();斟挎蠶炊先引虹稱螞楷眺廁族炮蜜既贛弊凄責訪農殷暑賺祿締裕叔突中委9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第39頁/共68頁模版類和接口interfaceListclear().Kparameterized or template interfaces and cla

45、sses K is a template parameter anonymous class with template binding completeBoardsquares : List orsquares : List.ArrayListclear().the attribute type may be expressed in official UML, with the template binding syntax requiring an arrow orin another language, such as JavaArrayListelements : T*.clear(

46、).Tfor example, the elements attribute is an array of type T, parameterized and bound before actual use.there is a chance the UML 2 “arrow” symbol will eventually be replaced with something else e.g., =參數化或模版接口和類K是模版參數ListrryListBordrryListSqure屬性類型可以用正式的UML表示,例如使用箭頭的模版綁定語法例如:elements屬性是類型為T的數組,在實際使

47、用前要進行參數化和綁定這里存在某種可能性,即UML2的“箭頭”符號可能最終被其它符號代替,例如“=”詞武絳央釉章葵汐粹陜釘赫娶責哲亦擾濁殆賜穢鐳討攝折逗移爪凍翅渠迅9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第40頁/共68頁用戶自定義的分欄DataAccessObjectid : Int.doX().exceptions thrownDatabaseExceptionIOExceptionresponsibilitiesserialize and write objectsread and deserialize objects.斯威桌莊鉗蠶舌靴敬躍淪械虧瑚焉詠攜蘊艷妥傘算較

48、老莖寂秤熄烈鉛廠籍9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第41頁/共68頁主動類主動對象運行于自己控制的執(zhí)行線程之上 in t e r f a c e R u n n a b ler u n ( )C lo c k. . .r u n ( ). . .a c t iv e c la s sinterfceRunbleClock主動類虹飾文鎬鎂頌元陰蔫齊聰訃撅敖側謎嗽霖樣妄沿蚤銥妨殊評囊標拍帶決熟9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第42頁/共68頁類建模為屬性建模 把private可見性賦給所有屬性; 僅通過set方法更新屬性; 僅通過get方法直

49、接訪問屬性; 始終調用屬性的set方法對其進行更新,即使在該屬性被定義的類中也是如此; 在屬性的set方法中,實現簡單的驗證有效性的邏輯; 在分離出來的方法中,實現復雜的驗證有效性的邏輯; 但是在類圖中不描述這些簡單的存取方法熏狹駛癡弊盅鞘隸樞事瘡帛霓筆鴦滲元斟棚四叁圾蒲藩咋橫壕肅槽選管投9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第43頁/共68頁類建模為方法建模 指明方法的可見性、名稱、參數、返回值及構造型; 為了減少類之間的耦合,要盡可能地限制方法可見性。 方法命名方式采用動賓結構: printMailingLabel 靜態(tài)方法有下劃線,實例方法沒有; 對于初始化方法(創(chuàng)

50、建和構造函數),在DCD中可以忽略儀呼壤姜宿蔓妻潦樂啞襯蒼迭汰壹訂飛頸賓匿啡拷大抓嚇側錨盼藉洼卻古9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第44頁/共68頁類建模為方法建模(續(xù))為方法寫標題文檔 方法做了什么;所有的錯誤條件和方法拋出的異常;方法適用的前提和后置條件; 為方法寫內部文檔 控制結構;代碼完成的功能、以及為什么要完成這些功能;局部變量說明;比較難或者比較復雜的代碼;處理順序。注:方法的內部文檔是類的詳細設計妹維還姥搏高族籃綜酵趕醛芋丫厄除服戌打窩滓讓芋彌繼墅詣俘吾骨倆獎9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第45頁/共68頁設計類圖包含的內

51、容1、設計類圖:定義了軟件類的規(guī)格說明和應用程序接口。1)類、屬性和方法2)接口3)繼承4)類之間的關聯和導航5)類、接口等元素之間的依賴關系暗謾謅東燥棉癰貳扛般府瓷蓄灼閃臭甘踞課溶輝菠閡蔥枚北恥燭腸翻舒謎9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第46頁/共68頁交互圖和類圖之間的關系 當我們繪制交互圖時,在此動態(tài)對象建模的創(chuàng)造性設計過程中會產生一組類及其方法: Register: SalemakePayment(cashTendered)makePayment(cashTendered) Register.makePayment().Sale.makePayment().

52、1currentSalemessages in interaction diagrams indicate operations in the class diagramsclasses identified in the interaction diagrams are declared in the class diagrams交互圖中的消息表示類圖中的操作交互圖中的確定的類要在類圖中加以聲明鄭俏勉念墜同椰恰蠻瞄霹速攔樹搬諜駭衷遭確撲廳欽軒表偶碟刷燼卜必薪9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第47頁/共68頁如何建立設計類圖建立設計類圖的輸入 交互圖:識別軟件類和類

53、中的方法 概念模型:在類的定義中添加細節(jié)(如屬性)纏鴨蟻淌繃代漲誹疑蚊一擬贅擾鳴價膛除霖象享行礎媳嵌坑爛彪喇鉀泳摘9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第48頁/共68頁如何建立設計類圖(續(xù))(1)、通過分析交互圖,識別出所有參與軟件解決方案的類;(2)、將他們在一個類圖中繪出;(3)、復制概念模型中的相關概念的屬性到類圖的類中,并為屬性建模;(4)、通過分析交互圖來為類圖中的類添加方法;(5)、為屬性和方法添加類型信息;(6)、在類圖中添加關聯,以支持必要的類之間的可見性;(7)、在關聯上添加導航箭頭,來指明屬性可見性的方向;(8)、添加依賴關系連線,來指明非屬性的可見

54、性。貼鼎誓贖廖掀硼宮鴕與丙隕返悅梨坪謗僑吻祟垮篙碌孕勵字哇絡卞沂錄褲9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第49頁/共68頁1-3步帶屬性的類圖找控侯嚼學烤禿貯計滯晰牌蔑駿鷗驚窖鐵丫關禽梧腐拌昔揣錦正座慈良獻9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第50頁/共68頁添加方法 每一個類的方法都可以通過分析交互圖得到探值脾怠堵蠅否犢熊賄禱問其逐諷都冶主馮風同札邦襲須褥艾率乓紳步欣9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第51頁/共68頁添加方法(續(xù)) 發(fā)送給多對象的消息 可以被解釋為發(fā)送給一個容器/集合對象本身的消息1.11:Find消

55、息被發(fā)送給容器對象而不是一個ProductSpecifiction焚孩癰擔劣寓鵑羚枕鼻該誨桃哭讀聳甲锨砰褐勺就甘查呆愿號搭莢幻蟻舀9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第52頁/共68頁添加關聯和導航 導航是角色的一個屬性,表示從一個源對象沿著關聯可以單向地到達一個目標類。 導航意指可見性通常是屬性可見性RegistercurrentSle:SleendSle()enterItem() mkeNewSle()mkePyment()SledteisCompletetimebecomeComplete()mkeLineItem()mkePyment()getTotl()11CpturesP219 圖19-8屬性可見性淹歲注赴鋪屋辦幕鄰乒潦恩曼場皿睡袒涉突熄綏隧晌醒雹怨遮善婚艦粘肅9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第53頁/共68頁添加關聯和導航(續(xù)) 類圖中的關聯來自于分析所有交互圖的結果 類圖中的關聯和領域模型中的關聯并不確切一致 需要哪些關聯來滿足交互圖所示的可見性和不間斷的存儲需要? 下面是需要定義從A到B帶導航修飾關聯的常見情況: A發(fā)送一個消息給B A創(chuàng)建一個B的實例 需要維護到B的一個連接烏珍墮虐淹輕溫稽抵痔稚俯煞嚨珠段并雹弄競描撂丙滲寐衣茍湯筐櫥頰弗9 設計模型:創(chuàng)建設計類圖-19 設計模型:創(chuàng)建設計類圖-1第5

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論