【正文】
課程 ID 課程名 課程 1..* 1 教師 ID 課程 ID 平均分 課程安排 1..* 1 關(guān)聯(lián)類 關(guān)聯(lián)類還可以添加自己的屬性 教師 ID 姓名 教師 課程 ID 課程名 課程 1..* 1..* 講授 79 類之間的關(guān)系(續(xù)) ? 2. 聚合 ? 聚合是一種特殊形式的關(guān)聯(lián),表示類之間 整體與部分的關(guān)系 ? 使用連接線和 空心 菱形表示,菱形一端的類代表整體 Circle radius style Style color isFilled Circle類有顏色、是否填充等屬性,而這些樣式屬性可以用一個(gè)style對(duì)象 來(lái)表示;但 style對(duì)象也可以表示其他類(如 Triangle類)的樣式方面的屬性 Circle類對(duì)象與 Style類對(duì)象的 生存期無(wú)關(guān) 80 類之間的關(guān)系(續(xù)) ? 3. 組合 ? 組合是一種特殊形式的 聚合 ,也表示類之間整體與部分的關(guān)系 ? 使用連接線和 實(shí)心 菱形表示,菱形一端的類代表整體 Circle radius center Center ?圓由半徑和圓心確定,如果圓不存在,圓心也不存在 ?Circle類對(duì)象與 Center類對(duì)象具有 相同的生存期 ?一個(gè)部分對(duì)象 只能屬于一個(gè) 整體對(duì)象且不可改變 ?注意: 確定類之間的聚合或組合關(guān)系是為了使模型更加明確,如果不能確定屬于何種關(guān)系,可直接用普通關(guān)聯(lián)表示 81 類之間的關(guān)系(續(xù)) ? ? 表示類之間一般與特殊的關(guān)系(即繼承關(guān)系) ? 使用連接線和 空心 三角形表示,三角形一端的類代表一般類 Athlete Swimmer Golfer 特殊類中不用再重復(fù)定義一般類中出現(xiàn)的屬性或服務(wù),從而可以簡(jiǎn)化模型描述,有效反映分類層次 82 類的檢查 ? 類是否只有一個(gè)屬性? 例如客戶經(jīng)理類只有“姓名”一個(gè)屬性(不含操作),該屬性僅被客戶類訪問(wèn),則可考慮精簡(jiǎn)客戶經(jīng)理類,將“客戶經(jīng)理姓名”歸并為客戶類的一個(gè)屬性 ? 類是否只有一個(gè)操作? 如果該服務(wù)僅被一個(gè)類使用,則可考慮將該操作歸并到該類中 PostcodeValidator validatePostcode( ) Address validateAddress( ) 若有計(jì)劃擴(kuò)展“ PostcodeValidator類”的操作,如增加電話號(hào)碼有效性檢查、身份證號(hào)有效性檢查等,則可保留該類獨(dú)立存在,并重新命名為“ Validator類” 83 ? 類的檢查(續(xù)): ? 是否存在屬性及操作相同的類?如商品有正價(jià)商品和打折商品之分,其折扣不同,但屬性和操作相同,故可合并為“商品”類 正價(jià)商品 商品編號(hào) 商品名稱 價(jià)格 折扣 打折商品 商品編號(hào) 商品名稱 價(jià)格 折扣 商品 商品編號(hào) 商品名稱 價(jià)格 折扣 客戶 客戶號(hào) 姓名 客戶經(jīng)理 貨到付款() 客戶 客戶號(hào) 姓名 VIP客戶 客戶經(jīng)理 貨到付款() 不適合普通客戶對(duì)象,須重新分類 ?類的屬性或操作不適合該類的全部對(duì)象 84 ? 類的檢查(續(xù)): ? 是否存在屬性和操作相似的類?可考慮抽象出共性并定義一個(gè) 抽象類 ,采用一般-特殊結(jié)構(gòu)表示 例 :電話訂單,網(wǎng)絡(luò)訂單和郵件訂單作為訂單有很多相似的屬性和操作,故可定義一個(gè)一般類“訂單”和三個(gè)特殊類 訂單 訂單號(hào) 訂貨數(shù)量 電話訂單 接聽(tīng)電話時(shí)間 郵件訂單 郵件接收時(shí)間 在特殊類中 不用 再重復(fù)定義一般類中出現(xiàn)的屬性和操作,從而簡(jiǎn)化模型 、有效反映問(wèn)題空間的分類層次 網(wǎng)絡(luò)訂單 聯(lián)絡(luò)方式 85 類圖的抽象層次 在軟件開(kāi)發(fā)的不同階段使用的類圖具有不同的抽象層次 ? 分析階段: 描述應(yīng)用領(lǐng)域的概念,不考慮實(shí)現(xiàn)問(wèn)題, 獨(dú)立 于具體的程序設(shè)計(jì)語(yǔ)言 ? 設(shè)計(jì)階段: 真正考慮類的實(shí)現(xiàn)問(wèn)題,提供類的實(shí)現(xiàn)細(xì)節(jié)(如對(duì)可見(jiàn)性,屬性類型,方法參數(shù)及返回類型的說(shuō)明) Circle Circle radius center getArea( ) Circle radius : float center : Center + getArea(radius: float) : float 分析階段 設(shè)計(jì)階段 注意:分析階段構(gòu)造類圖時(shí)不要陷入實(shí)現(xiàn)細(xì)節(jié) 86 例:圖書管理系統(tǒng)的類圖 圖書品種 書名 國(guó)際書號(hào) 作者+ 出版社+ 出版日期+ 簡(jiǎn)介+ 價(jià)格+ 館藏?cái)?shù)量+ 可借數(shù)量圖書管理員 職工號(hào) 姓名圖書目錄借書記錄+ 借書日期+ 歸還日期讀者+ 姓名+ 身份證號(hào)+ 借書卡號(hào)+ 借書限額+ 可用限額逾期記錄+ 逾期天數(shù)圖書 館藏流水號(hào) 狀態(tài)罰款細(xì)則記載1 1. . *1館藏 *10. . 110. . 1*0. . 11*1*登記 使用87 2)設(shè)計(jì)用例邏輯,建立交互圖等動(dòng)態(tài)視圖 ? 用例圖只標(biāo)識(shí)出系統(tǒng)的功能,但 沒(méi)有 清晰描述系統(tǒng)的信息流 ? 狀態(tài)圖用來(lái)描述 單個(gè) 對(duì)象的生命期行為和狀態(tài)轉(zhuǎn)換 ? 交互圖集中分析 多個(gè) 對(duì)象是如何相互作用、交換信息來(lái)實(shí)現(xiàn)系統(tǒng)功能的: ? 使系統(tǒng)分析員對(duì)照檢查每個(gè)用例的用戶需求是否已落實(shí)到相關(guān)對(duì)象中實(shí)現(xiàn),若沒(méi)有則需要 補(bǔ)充類或服務(wù) ? 為各類人員有效理解系統(tǒng)的行為關(guān)系提供輔助,尤其對(duì)編程人員而言是必備的文檔(指導(dǎo)方法的內(nèi)部實(shí)現(xiàn)) 圖書管理系統(tǒng)的狀態(tài)圖( “圖書”對(duì)象 ) 88 在館內(nèi)購(gòu)買圖書圖書丟失借出正常逾期e n t ry / 通知客戶超過(guò)租期讀者借出讀者歸還89 交互圖--順序圖 ? 用順序圖來(lái)闡明用例實(shí)現(xiàn) :一個(gè)特定的順序圖記錄了一個(gè)用例或一個(gè)用例場(chǎng)景的信息流(含有多個(gè)擴(kuò)展事件流的用例可繪制多個(gè)對(duì)應(yīng)的順序圖) ? 順序圖描述了在參與交互的對(duì)象中所發(fā)生的事件,以及這些對(duì)象如何通過(guò)相互發(fā)送消息進(jìn)行通信 ? 順序圖的基本元素包括: ? 對(duì)象 :表示為稱為“生命線”的垂直虛線,生命線上的矩形表示對(duì)象的生存期 ? 執(zhí)行者實(shí)例 :由順序圖中的最左 /右側(cè)生命線表示 ? 消息和消息路線 :用實(shí)線箭頭表示,箭頭的垂直位置表示 時(shí)序 (自上而下);消息一般對(duì)應(yīng)于接受方對(duì)象響應(yīng)該消息的 服務(wù)(方法) 90 順序圖的繪制步驟 1)識(shí)別參與交互過(guò)程的對(duì)象 2)將參與交互作用的對(duì)象沿著 X軸放在圖的頂端: 將啟動(dòng)交互作用的對(duì)象放在左邊,從屬對(duì)象放在右邊 3)將這些對(duì)象發(fā)送和接收的消息按照時(shí)間先后順序沿著 Y軸由上而下地放置 : Driver : Car Oper() 注:為了圖的簡(jiǎn)潔,與調(diào)用消息配對(duì)的 返回消息 可以不用畫出 91 交互圖--協(xié)作圖 ? 協(xié)作圖的元素和表示方法與順序圖類似,但 不表達(dá)生命線 ? 協(xié)作圖的消息連接上附帶有消息、消息流向和消息的順序號(hào) ? 順序圖和協(xié)作圖表達(dá)的是相似的信息,但表達(dá)方式不同( 二者可相互轉(zhuǎn)換 ): ? 順序圖顯示了消息的明確順序,更適合復(fù)雜的場(chǎng)景 ? 協(xié)作圖顯示對(duì)象之間的 聯(lián)系 ,更適合理解對(duì)給定對(duì)象的所有影響 92 例:圖書管理系統(tǒng)的交互圖( “ 借書用例 ” ) : 圖書管理員 : R e a d e r : R e s ou rc e I t e m : R e s ou rc e T it le : L oa n1 : c h e c k R e a d e r( )2 : g e t B ook L m t ( )3 : g e t I t e m I n f o( )4 : g e t T it le I n f o( )5 : c re a t e ( )6 : le n d I t e m ( )7 : d e c re a s e A v a ila b le ( )8 : d e c re a s e B ook L m t ( )9 : p ri n t L oa n L is t (