【文章內(nèi)容簡(jiǎn)介】
30 3. 類圖 演出售票系統(tǒng) 在用例驅(qū)動(dòng)的開發(fā)過(guò)程中,通過(guò)分析各個(gè)用例及參與者得到類圖。分析用例圖的過(guò)程中需要根據(jù)面向?qū)ο蟮脑瓌t設(shè)計(jì)類和關(guān)系,根據(jù)用例的細(xì)節(jié)設(shè)計(jì)類的屬性和操作 在這里只考慮以下三個(gè)用例: Buy tickets: 買個(gè)人票 Buy Subscription: 買套票 Make charges: 信用卡付款 信息亭 Clerk Buy tickets Buy Subscription 信用卡服務(wù)商 Make charges 監(jiān)督員 Survey sales 參與者 include include 用例 Box Office 關(guān)系 SubscriptionSeries series : int IndividualReservation Ticket no : int 3..6 0..1 1 0..1 Reservation date : Date Customer name : string phone : string 1..* 1 Seat no : int colomn : int row : int available : bool 1 1 Performance no : int date : Date time : Time 0..* 1 CreditCardService Charge(cardnumber, cost) kjosk ShowAvailability(seatlist) DemandPayment(cost) PrintTickets(performance, seats) EjectCard() BoxOffice Request(count, performance) Select(seats) InsertCard(cardnumber, password) Authorized() 用例圖 類圖 使用泛化關(guān)系處理客戶購(gòu)買個(gè)人票和套票兩種不同情況 設(shè)計(jì)類的屬性和操作 UML 31 3. 類圖 (1)哪兩個(gè)類之間存在組合關(guān)系 ① Menu、 MenuItem ② MenuItem、 Command ③ Command、 OpenCommand ④ Command、 PasteCommand (2)OpenCommand和 PasteCommand是什么關(guān)系 ① 組合 ② 泛化 ③ 聚合 ④ 沒關(guān)系 C o m m a n d+ E x e c u t e ( )O p e n C o m m a n d+ E x e c u t e ( )P a st e C o m m a n d+ E x e c u t e ( )M e n u I t e m c o m m a n d : C o m m a n d *+ C l i c k ( )1 . . *0 . . *+ e x e cu t i v eM e n u+ A d d ( i t e m : M e n u I t e m )(3)編輯菜單 (EditMenu)是一種菜單,下面哪個(gè)圖較好的描述了二者之間的關(guān)系 (4)下面哪份代碼 (C++)最接近于圖中對(duì) MenuItem的描述 ② E d itM en uM en u+ A d d (ite m : M e n u I te m )③ M en u+ A d d (ite m : M e n u I te m )E d itM en u④ E d itM en uM en u+ A d d (ite m : M e n u I te m )① Menu + Add(item : MenuItem) EditMenu class MenuItem { private: virtual void Click() =0。 public: Command* mand。 }。 ① class MenuItem { public: virtual void Click() = 0。 private: Command* mand。 }。 ② class MenuItem { private: virtual void Click() = 0。 void undo()。 public: Command* mand。 }。 ③ class menuitem { public: virtual void Click() = 0。 private: Command* mand。 }。 ④ 習(xí)題 ※ 右圖描述了菜單 (Menu)、菜單項(xiàng) (MenuItem)、抽象命令類 (Command)和具體命令類 (OpenCommand, PasteCommand)之間的關(guān)系,完成 14題 UML 32 3. 類圖 ※ 右圖描述了圖形接口 (Graphics)、線段 (Segment)、矩形 (Rectangle)、點(diǎn)(Point)和三維點(diǎn) (Point3D)之間的關(guān)系, 完成 57題 (5)下面哪個(gè)關(guān)系沒有在圖中出現(xiàn) ① 關(guān)聯(lián) ② 泛化 ③ 實(shí)現(xiàn) ④ 依賴 (6)下面對(duì)圖中 ①②③④ 四處的多重性的描述哪個(gè)不正確 ① 0...* ② 1 ③ 0...* ④ 1 (7)下面哪份代碼 (Java)最接近于圖中對(duì) Segment的描述 public class Segment implements Graphics { privatc void Draw()。 public Point ptStart。 public Point ptEnd。 } ① public class Segment extends Graphics { public void Draw()。 private Point ptStart。 private Point ptEnd。 } ② public class Segment implements Graphics { private Point ptStart。 private Point ptEnd。 public void Draw()。 } ③ public class segment implements graphics { public void Draw()。 private Point ptStart。 private Point ptEnd。 } ④ G r a p h i cs+ D r a w ( )S e g m e n tp t S t ar tp t E n d: P o i n t: P o i n t+ D r aw ( )R e c t an g l ep t U p p e r L e f tn Wi d t hn H e i g h t: P o i n t: i n t: i n t+ D r ar w ( )P o i n txy: i n t: i n t+ D r aw ( )P o i n t 3Dxyz: i n t: i n t: i n t+ D r aw ( )① ② ③ ④ UML 33 4. 順序圖 概要 ? 順序圖用來(lái)表示 用例 中的行為順序。當(dāng)執(zhí)行一個(gè)用例行為時(shí),順序圖中的每條消息對(duì)應(yīng)了一個(gè)類操作或狀態(tài)機(jī)中引起轉(zhuǎn)換的事件。 ? 順序圖展示對(duì)象之間的交互,這些交互是指在場(chǎng)景或用例的事件流中發(fā)生的。 順序圖屬于動(dòng)態(tài)建模 。 ? 順序圖的重點(diǎn)在消息序列上,也就是說(shuō),描述消息是如何在對(duì)象間發(fā)送和接收的。表示了對(duì)象之間傳送消息的時(shí)間順序。 ? 瀏覽順序圖的方法是:從上到下查看對(duì)象間交換的消息。 順序圖中的事物及解釋 事物名稱 解釋 圖 參與者 與系統(tǒng)、子系統(tǒng)或類發(fā)生交互作用的外部用戶 (參見用例圖定義 )。 對(duì)象 順序圖的橫軸上是與序列有關(guān)的對(duì)象。對(duì)象的表示方法是:矩形框中寫有對(duì)象或類名,且名字下面有下劃線。 生命線 坐標(biāo)軸縱向的虛線表示對(duì)象在序列中的執(zhí)行情況 (即發(fā)送和接收的消息,對(duì)象的活動(dòng) )這條虛線稱為對(duì)象的“生命線”。 消息符號(hào) 消息用從一個(gè)對(duì)象的生命線到另一個(gè)對(duì)象生命線的箭頭表示。箭頭以時(shí)間順序在圖中從上到下排列。 UML 34 4. 順序圖 順序圖與用例圖和類圖的關(guān)系 UML 35 4. 順序圖 順序圖例子 簡(jiǎn)單的例子 從參與者到對(duì)象和從對(duì)象到參與者之間發(fā)送的消息 從對(duì)象傳遞給另一個(gè)對(duì)象的消息 在類圖中的類的對(duì)象 使用系統(tǒng)的參與者,這個(gè)系統(tǒng)是為某個(gè)用例的某個(gè)場(chǎng)景設(shè)計(jì)的 對(duì)象生命線表示從上到下的時(shí)間順序,消息 1在消息2之前發(fā)生,消息 2在消息 3之前發(fā)生 窄長(zhǎng)方框用以強(qiáng)調(diào)這個(gè)部分處于活動(dòng)狀態(tài) 消息格式 : operation (parameter list) 向哪個(gè)對(duì)象發(fā)消息實(shí)際上就是調(diào)用它的類中的操作,就是調(diào)用箭頭指向的對(duì)象所在類的 一個(gè) operation。 例: 訂單類發(fā)消息給客戶類調(diào)用客戶類中的“驗(yàn)證客戶”操作 UML 36 4. 順序圖 復(fù)雜的例子 信息亭 售票中心 信用卡服務(wù) 從這個(gè)例子中可以看出: Kjosk類中的操作有 Show Available (seatlist) Demand Payment (cost) printtickets (performance, seats) eject card Box Office中的操作有 Request (count, performance) Select Seats Insert Card (Card Number) authorized Credit Card Service類中的操作有 charge(card number, cost) 此圖是描述購(gòu)票這個(gè)用例的順序圖。顧客在信息亭與售票中心通話觸發(fā)了這個(gè)用例的執(zhí)行。順序圖中付款這個(gè)用例包括售票中心與信息亭和信用卡服務(wù)處使用消息進(jìn)行通信過(guò)程。 此圖中存在的事物有: 對(duì)象 (信息亭 Kjosk ,售票中心 Box Office, 信用卡服務(wù) Credit Card Service ),生命線,消息符號(hào)。 信息亭發(fā) Request (count, performance)消息給售票中心,表示調(diào)用售票中心類的 Request (count, performance)操作,來(lái)查詢演出的信息。 售票中心發(fā) Show Available(seatlist)消息給信息亭,表示調(diào)用信息亭類中的 Show Available(seatlist)操作,給出可用的座位表。 UML 37 4. 順序圖 ① ② ③ ④ ⑤ ⑦ ⑥ ⑨ ⑧ ⑩ 1 指出左圖中的參與者? 1 A① B② C③ D④ 2 哪些是對(duì)象? 234 A① B②③④ C ④ D⑤⑥⑦⑧⑨⑩ 3 Server類調(diào)用了 CreditService類中的什么操作? 8 A⑦ B⑧ C ⑦⑧ D⑧⑨ 練習(xí)題 1. A 2. B 3. B UML 38 概要 5. 協(xié)作圖 協(xié)作圖是一種交互圖,強(qiáng)調(diào)的是發(fā)送和接收消息的對(duì)象之間 的組織結(jié)構(gòu),使用協(xié)作圖來(lái)說(shuō)明系統(tǒng) 的動(dòng)態(tài) 情況。 協(xié)作圖主要描述協(xié)作對(duì)象間的交互和鏈接, 顯示對(duì)象、對(duì)象間的鏈接以及對(duì)象間如何發(fā)送消息。 協(xié)作圖可以表示 類 操作 的實(shí)現(xiàn)。 協(xié)作圖中的事物及解釋 事物名稱 解釋 圖 參與者 發(fā)出主動(dòng)操作的對(duì)象,負(fù)責(zé)發(fā)送初始消息,啟動(dòng)一個(gè)操作。 對(duì)象 對(duì)象是類的實(shí)例,負(fù)責(zé)發(fā)送和接收消息,與順序圖中的符號(hào)相同,冒號(hào)前為對(duì)象名,冒號(hào)后為類名。 消息流 (由箭頭和標(biāo)簽組成 ) 箭頭指示消息的流向,從消息的發(fā)出者指向接收者。標(biāo)簽對(duì)消息作說(shuō)明,其中,順序號(hào)指出消息的發(fā)生順序,并且指明了消息的嵌套關(guān)系;冒號(hào)后面是消息的名字。 Actorfirs t b u t o n :b u t to n標(biāo)簽 協(xié)作圖中的關(guān)系及解釋 關(guān)系名稱 解釋 關(guān)系實(shí)例 鏈接 用線條來(lái)表示鏈接,鏈接表示兩個(gè)對(duì)象共享一