面向對象分析與設計2-分析-2014_第1頁
面向對象分析與設計2-分析-2014_第2頁
面向對象分析與設計2-分析-2014_第3頁
面向對象分析與設計2-分析-2014_第4頁
面向對象分析與設計2-分析-2014_第5頁
已閱讀5頁,還剩179頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、第第5 5章章建立需求模型建立需求模型用況圖用況圖5.1 需求分析和系統分析需求分析和系統分析需求分析需求分析的確切含義是對用戶需求進行分析,旨在產生一份的確切含義是對用戶需求進行分析,旨在產生一份明確、規范的需求定義。明確、規范的需求定義。OOA的主要內容是研究問題域中與需求有關的事物,把它們的主要內容是研究問題域中與需求有關的事物,把它們抽象為系統中的對象,建立類圖。確切地講,這些工作應該抽象為系統中的對象,建立類圖。確切地講,這些工作應該叫做叫做系統分析系統分析,而不是嚴格意義上的需求分析。,而不是嚴格意義上的需求分析。早期的早期的OOA缺乏一個良好的基礎缺乏一個良好的基礎對需求的規范描

2、述。對需求的規范描述。需求說明需求說明需求分析需求分析健壯分析健壯分析需求模型需求模型分析模型分析模型分析過程分析過程Jacobson方法(方法(OOSE)提出用況()提出用況(use case)概念,)概念,解決了對需求的描述問題,其分析過程如下:解決了對需求的描述問題,其分析過程如下:問題域問題域(抽象的來源)(抽象的來源)OOA模型模型(類圖)(類圖)抽象抽象OOA是將問題域中的事物抽象為系統中的對象是將問題域中的事物抽象為系統中的對象系統責任系統責任(抽象的目標)(抽象的目標)抽象的目標是系統責任抽象的目標是系統責任需求需求用況的概念解決了對需求的描述問題用況的概念解決了對需求的描述問

3、題需求模型需求模型(用況圖)(用況圖)5.2 5.2 基本思路基本思路問題的提出:問題的提出:在系統尚未存在時,如何描繪用戶需要一個什么樣的系統?如何規范地定義用戶需求?考慮問題的思路:考慮問題的思路:把系統看作一個黑箱,看它對外部的客觀世界發揮什么作用,描述其外部可見的行為外部可見的行為。系統是由一條系統是由一條邊界包圍起來邊界包圍起來的未知空間的未知空間只通過有限只通過有限的幾個接口的幾個接口與外部交互與外部交互系統邊界以外系統邊界以外是與系統進行是與系統進行交互的參與者交互的參與者把內外交互情況描把內外交互情況描述清楚,就確切地述清楚,就確切地定義了系統的需求定義了系統的需求系統邊界系統

4、邊界系統邊界:系統邊界:一個系統所包含的所有系統成分與系統以外一個系統所包含的所有系統成分與系統以外各種事物的分界線。各種事物的分界線。系統:系統:被開發的計算機軟硬件系統,不是指現實系統。被開發的計算機軟硬件系統,不是指現實系統。系統成分:系統成分:在在OOA和和OOD中定義并且在編程時加以實中定義并且在編程時加以實現的系統元素現的系統元素對象對象對對象象對象對象對象對象對象對象對象對象對象對象參與者參與者( (人員人員) )參與者參與者( (設備設備) )參與者參與者( (外系統外系統) )參與者:參與者:在系在系統邊界以外,統邊界以外,與系統進行交與系統進行交互的事物互的事物人員、設備、

5、人員、設備、外系統外系統5.3 系統邊界與參與者系統邊界與參與者現實世界中的事物與系統之間的關系現實世界中的事物與系統之間的關系分四種情況分四種情況(1)被抽象為系統中的對象)被抽象為系統中的對象汽車飛機獎杯鐘表起重機職員樓房天平(2)只作為系統外部的參與者與系統交互)只作為系統外部的參與者與系統交互(4)與系統無關)與系統無關操作員(3)既是系統中的對象,本身又作為參與者與系統交互)既是系統中的對象,本身又作為參與者與系統交互人員人員系統的直接使用者系統的直接使用者直接為系統服務的人員直接為系統服務的人員設備設備與系統直接相聯的設備與系統直接相聯的設備為系統提供信息為系統提供信息在系統控制下

6、運行在系統控制下運行不與系統相連的設備不與系統相連的設備 計算機設備計算機設備 外系統外系統上級系統上級系統子系統子系統其它系統其它系統如何發現參與者如何發現參與者考慮人員、設備、外系統考慮人員、設備、外系統什么是用況什么是用況I. Jacobson:用況是通過使用系統功能的某些部分而使用系統的一種具體方式。每個用況是通過使用系統功能的某些部分而使用系統的一種具體方式。每個用況包括用況包括一一個個由參與者發動的由參與者發動的完整的事件過程。它詳細說明了參與者和完整的事件過程。它詳細說明了參與者和系統之間發生的交互。因此,一個用況是一個由參與者和系統在一次對系統之間發生的交互。因此,一個用況是一

7、個由參與者和系統在一次對話中執行的特定的相關事務序列。全部用況的集合則說明了所有可能存話中執行的特定的相關事務序列。全部用況的集合則說明了所有可能存在的系統使用方式。在的系統使用方式。對象技術詞典對象技術詞典:1對一個系統或者一個應用的一種單一的使用方式所進行的描述。對一個系統或者一個應用的一種單一的使用方式所進行的描述。2關于關于單個參與者單個參與者在與系統的對話中所執行的處理的行為陳述序列。在與系統的對話中所執行的處理的行為陳述序列。UML:對對系統系統在與它的參與者交互時所能執行的一組動作序列(包括其變體)在與它的參與者交互時所能執行的一組動作序列(包括其變體)的描述。的描述。?本書的定

8、義:本書的定義:用況是對參與者使用系統的一項功能時所進行的交互過程用況是對參與者使用系統的一項功能時所進行的交互過程的描述,其中包含由雙方交替執行的一系列動作。的描述,其中包含由雙方交替執行的一系列動作。5.4 用況(用況(use case)術語術語“use case”use case”的準確含義的準確含義使用情況使用情況是對一項系統功能使用情況的一般描述,它對于每一次使是對一項系統功能使用情況的一般描述,它對于每一次使用都普遍適應,既不是應用實例,也不是舉例說明。用都普遍適應,既不是應用實例,也不是舉例說明。因此譯為因此譯為“用況用況”,而不是,而不是“用例用例”。幾點說明:幾點說明:(1

9、1)一個用況只描述參與者對一個用況只描述參與者對單獨一項單獨一項系統功能的使用情況;系統功能的使用情況;(2 2)通常是平鋪直敘的)通常是平鋪直敘的文字文字描述,描述,UMLUML也允許其他描述方式;也允許其他描述方式;(3 3)陳述參與者和系統在交互過程中)陳述參與者和系統在交互過程中雙方雙方所做的事;所做的事;(4 4)所描述的交互既可能由所描述的交互既可能由參與者發起參與者發起也可能由也可能由系統發起系統發起 ;(5 5)描述彼此為對方)描述彼此為對方直接地直接地做什么事,不描述怎么做;做什么事,不描述怎么做;(6 6)描述應力求準確,允許概括,但)描述應力求準確,允許概括,但不要把雙方

10、的行為混在一起不要把雙方的行為混在一起;(7 7)一個用況可以由一個用況可以由多種參與者多種參與者分別參與或共同參與。分別參與或共同參與。 內容與書寫格式內容與書寫格式 :名稱名稱行為陳述(分左右欄)行為陳述(分左右欄)調用語句調用語句控制語句控制語句括號或標號括號或標號收款收款輸入開始本次收款的命令; 作好收款準備,應收款總作好收款準備,應收款總 數置為數置為0,輸出提示信息;,輸出提示信息;for 顧客選購的每種商品 do 輸入商品編號; if 此種商品多于一件 then 輸入商品數量 end if; 檢索商品名稱及單價;檢索商品名稱及單價; 貨架商品數減去售出數;貨架商品數減去售出數;

11、if 貨架商品數低于下限貨架商品數低于下限 then call 通知上貨通知上貨 end if; 計算本種商品總價并打印編號、計算本種商品總價并打印編號、 名稱、數量、單價、總價;名稱、數量、單價、總價; 總價累加到應收款總數;總價累加到應收款總數;end for; 打印應收款總數;打印應收款總數;輸入顧客付款數; 計算應找回款數,計算應找回款數, 打印付款數及找回款,打印付款數及找回款, 應收款數應收款數計入賬冊。計入賬冊。例例如何定義用況如何定義用況針對單個用況的描述策略:針對單個用況的描述策略:把自己當作參與者,與設想中的系統進行交互。考慮:交互的目的是什么?需要向系統輸入什么信息?希望

12、由系統進行什么處理并從它得到何種結果?把上述交互過程描述出來 。定義系統中所有的用況:定義系統中所有的用況:(1)全面地了解和收集用戶所要求的各項系統功能,找出所有的參與者,了解與各項功能相關的業務流程;(2)把用戶提出的功能組織成適當的單位,每一項功能完成一項完整而相對獨立的工作;(3)窮舉每一類參與者所使用的每一項系統功能,定義相應的用況;(4)檢查用戶對系統的各項功能需求是否都通過相應的用況做了描述。12北京大學信息學院研究生課程面向對象分析與設計參與者參與者基用況基用況 includeextendinclude用況用況 基用況基用況 基用況基用況 被包含用況被包含用況 延伸用況延伸用況

13、 用況用況 5.5 5.5 用況圖用況圖參與者參與者參與者參與者模型元素:模型元素:參與者參與者用況用況延伸延伸包含包含泛化泛化5.5 5.5 用況圖用況圖用況之間的關系用況之間的關系包含、延伸、泛化包含、延伸、泛化延伸延伸包含包含問題:問題:延伸與包含的相似性延伸與包含的相似性延伸的方向問題延伸的方向問題“條件條件”和和“延伸點延伸點”問題問題“泛化泛化”問題問題系統邊界問題系統邊界問題Perform ATMPerform ATMTransactionTransactionWithdrawWithdrawDepositDepositFundsFunds泛化泛化TransfeTransfer

14、r FundsFunds 用況的兩種復雜情況用況的兩種復雜情況1 1、兩個(或多個)參與者共享一個用況、兩個(或多個)參與者共享一個用況不同種類的參與者可能都要使用某一項系統功能,因不同種類的參與者可能都要使用某一項系統功能,因此它們可能共享同一個用況此它們可能共享同一個用況例:例:系統維護系統維護登錄登錄系統管理員系統管理員普通用戶普通用戶2、一個用況的執行,可能需要兩個(甚至多個)參與者同時一個用況的執行,可能需要兩個(甚至多個)參與者同時與系統交互。與系統交互。例:網上購物例:網上購物網上購物客戶供貨商用況圖的開發過程用況圖的開發過程確定系統邊界確定系統邊界發現參與者發現參與者 定義用況

15、定義用況 建立用況之間的關系建立用況之間的關系 確定參與者和用況之間的關系確定參與者和用況之間的關系 繪制用況圖繪制用況圖 使用用況圖的幾條建議使用用況圖的幾條建議最重要的工作是對用況的描述最重要的工作是對用況的描述不要過分深入地描述系統內部的行為細節不要過分深入地描述系統內部的行為細節 運用最主要概念,加強用況內容的描述運用最主要概念,加強用況內容的描述不要陷入延伸與包含、延伸點、泛化等問題的爭論和辨別不要陷入延伸與包含、延伸點、泛化等問題的爭論和辨別了解用況的局限性了解用況的局限性主要作用是描述功能需求主要作用是描述功能需求5.6 開發過程與建議開發過程與建議概念:概念:對象(對象(obj

16、ect)是系統中用來描述客觀事物的一個實體,是系統中用來描述客觀事物的一個實體,它是構成系統的一個基本單位,由一組屬性和施加于這組它是構成系統的一個基本單位,由一組屬性和施加于這組屬性的一組操作構成。屬性的一組操作構成。類(類(class)是具有相同屬性和操作的一組對象的集合,是具有相同屬性和操作的一組對象的集合,它為屬于該類的全部對象提供了統一的抽象描述,它由一它為屬于該類的全部對象提供了統一的抽象描述,它由一個類名、一組屬性和一組操作構成。個類名、一組屬性和一組操作構成。 類和對象的關系類和對象的關系集合與成員,對象是類的實例集合與成員,對象是類的實例在一般在一般-特殊結構中,特殊類特殊結

17、構中,特殊類的對象實例在邏輯上也都是其的對象實例在邏輯上也都是其一般類的對象實例。一般類的對象實例。不直接創建對象實例的類稱為不直接創建對象實例的類稱為抽象類(抽象類(abstract class) 學生學生本科生本科生研究生研究生例:例:第第6 6章章 發現對象,定義對象類發現對象,定義對象類6.1 對象和類的概念及其運用對象和類的概念及其運用主動對象(主動對象(active object)至少有一個操作不需至少有一個操作不需要接收消息就能主動執行的對象要接收消息就能主動執行的對象用于描述具有主動行為的事物用于描述具有主動行為的事物主動對象的類叫做主動對象的類叫做主動類(主動類(active

18、 class)被動對象(被動對象(passive object) 每個操作都必須在每個操作都必須在消息的驅動下才能執行的對象消息的驅動下才能執行的對象類的語義類的語義OO方法中的類在不同的語境下有兩種不同的語義:方法中的類在不同的語境下有兩種不同的語義:1. 一個類代表由它的全部對象實例所構成的群體一個類代表由它的全部對象實例所構成的群體日常語言表達中的例子:日常語言表達中的例子:“公司里有管理人員、技術人員和市場人員公司里有管理人員、技術人員和市場人員”“馬路上汽車很多馬路上汽車很多” 在在OO模型中:模型中:每個類都是由它的全部對象實例所構成的集合每個類都是由它的全部對象實例所構成的集合類

19、代表了它的全部對象實例。類代表了它的全部對象實例。2. 一個類代表屬于該類的任意一個對象實例一個類代表屬于該類的任意一個對象實例從大量的個體中抽象出一個概念,再運用這個概念時就從大量的個體中抽象出一個概念,再運用這個概念時就可以代表其中的任何一個個體,例如:可以代表其中的任何一個個體,例如: “學生有一個學號,屬于一個班級,要上課學生有一個學號,屬于一個班級,要上課” 在在OO系統模型中定義了一個類,它就可以代表它的任系統模型中定義了一個類,它就可以代表它的任何一個對象實例,例如:何一個對象實例,例如:汽車與發動機之間的聚合關系,表示任何一輛汽車都有一臺發汽車與發動機之間的聚合關系,表示任何一

20、輛汽車都有一臺發動機,任何一臺發動機都可以裝在動機,任何一臺發動機都可以裝在01輛汽車上輛汽車上在類的抽象層次建模在類的抽象層次建模理由:理由:(1)充分性:模型中一個類描述了它的全部對象實例)充分性:模型中一個類描述了它的全部對象實例(2)必要性:個別對象實例不能代表其他對象實例)必要性:個別對象實例不能代表其他對象實例(3)符合人類的思維方式:在概念層次上表達描述事物規律)符合人類的思維方式:在概念層次上表達描述事物規律(4)與)與OOPL保持良好的對應保持良好的對應(5)避免建模概念復雜化)避免建模概念復雜化 (6)消除抽象層次的混亂)消除抽象層次的混亂如何運用類和對象的概念如何運用類和

21、對象的概念從對象出發認識問題域從對象出發認識問題域將問題域中的事物抽象為對象;將問題域中的事物抽象為對象;將具有共同特征的對象抽象為類將具有共同特征的對象抽象為類用類以及它們之間的關系構成整個系統模型;用類以及它們之間的關系構成整個系統模型;歸納歸納演繹演繹在模型中用類表示屬于該類的任何對象在模型中用類表示屬于該類的任何對象在類的規約中說明這個類將創建那些對象實例在類的規約中說明這個類將創建那些對象實例在程序中用類定義它的全部對象在程序中用類定義它的全部對象編程時靜態聲明類的對象編程時靜態聲明類的對象運行時動態創建類的對象運行時動態創建類的對象類類 名名壓縮方式壓縮方式類類 名名屬性名屬性名:

22、類型名類型名操作名操作名()展開方式展開方式主動類主動類active類類 名名衍型(衍型(stereotype)用關鍵字或者用關鍵字或者用圖標表示用圖標表示類名類名UML2 主動類表示法主動類表示法主動主動類類 名名6.2 表示法表示法在在模型模型中用類符號來表示一個類中用類符號來表示一個類它代表了屬于該類的全部對象實例它代表了屬于該類的全部對象實例對象名對象名: :類名類名壓縮方式壓縮方式屬性名屬性名=值值UML的對象表示法:的對象表示法:細節方式細節方式對象名對象名: :類名類名匿名對象匿名對象: :類名類名壓縮方式壓縮方式屬性名屬性名=值值細節方式細節方式: :類名類名用所謂“匿名對象”

23、代表類的任何一個對象實例,然而這恰恰是類的作用。6.3 發現對象發現對象研究問題域研究問題域親臨現場深入調查研究親臨現場深入調查研究直接觀察并向用戶及相關的業務人員進行調查和直接觀察并向用戶及相關的業務人員進行調查和交流交流,考察問題域中各種各樣的事物、它們的特征及相互關系 聽取問題域專家的見解聽取問題域專家的見解領域專家領域專家包括技術人員、管理者、老職員和包括技術人員、管理者、老職員和富有經驗的工人等富有經驗的工人等閱讀相關材料閱讀相關材料閱讀各種與問題域有關的材料,學習相關行業和閱讀各種與問題域有關的材料,學習相關行業和領域的基本知識領域的基本知識借鑒以往的系統借鑒以往的系統查閱以往在該

24、問題域中開發過的同類系統的分析查閱以往在該問題域中開發過的同類系統的分析文檔文檔 ,吸取經驗,發現可以復用的類,吸取經驗,發現可以復用的類 正確地運用抽象原則正確地運用抽象原則對什么進行抽象對什么進行抽象問題域問題域當前目標當前目標系統責任系統責任忽略與系統責任無關的事物忽略與系統責任無關的事物只注意與之有關的事物只注意與之有關的事物 ,抽象為系統中的對象,抽象為系統中的對象 例如:學校的教師、學生、教務員例如:學校的教師、學生、教務員 和和 警衛警衛忽略與系統責任無關的事物特征忽略與系統責任無關的事物特征只注意與之有關的特征,抽象為對象的屬性或操作只注意與之有關的特征,抽象為對象的屬性或操作

25、 例如:教師的專業、職稱例如:教師的專業、職稱 和和 身高、體重身高、體重正確地提煉對象正確地提煉對象 例如:對書的不同抽象例如:對書的不同抽象在圖書館管理系統中以在圖書館管理系統中以一本書一本書作為一個對象實例作為一個對象實例在書店管理系統中以在書店管理系統中以一種書一種書作為一個對象實例作為一個對象實例由系統管理或使用由系統管理或使用其信息,或者在系其信息,或者在系統中呈現某些行為統中呈現某些行為的各類人員的各類人員由系統管理或使用由系統管理或使用其信息,或者在系其信息,或者在系統中呈現某些行為統中呈現某些行為的各類組織的各類組織由系統進行管由系統進行管理的各種物品理的各種物品其他其他策略

26、與啟發策略與啟發(1 1)考慮問題域:)考慮問題域:抽象事物抽象事物事件事件文件文件結構結構人員人員組織組織物品物品設備設備由系統進行管理或由系統進行管理或控制,或者在系統控制,或者在系統中呈現某些行為的中呈現某些行為的各種設備各種設備例如:課程、計例如:課程、計劃、交易、賬戶劃、交易、賬戶需要長期記憶的事件需要長期記憶的事件例如:銀行的取款、例如:銀行的取款、存款,保險公司的索存款,保險公司的索賠,車輛管理中的駕賠,車輛管理中的駕駛違章駛違章泛指各種表格、檔案、證件、票據等文件泛指各種表格、檔案、證件、票據等文件例如:業務報表,人事檔案,身份證,合例如:業務報表,人事檔案,身份證,合同,商品

27、訂單等同,商品訂單等 注意三個問題:非基礎數據,同一事物的注意三個問題:非基礎數據,同一事物的重復描述,多種事物信息組合重復描述,多種事物信息組合從結構得到啟發,從結構得到啟發,聯想到新的對象聯想到新的對象其他一切有助于發其他一切有助于發現對象的事物現對象的事物(2 2)考慮系統邊界:)考慮系統邊界:考察在系統邊界以外與系統交互的各類參與者考察在系統邊界以外與系統交互的各類參與者考慮通過那些對象處理這些參與者的交互考慮通過那些對象處理這些參與者的交互人員人員設備設備外系統外系統(3 3)考慮系統責任:)考慮系統責任:檢查每一項功能需求是否已有相應的對象提供,檢查每一項功能需求是否已有相應的對象

28、提供,發現遺漏的對象發現遺漏的對象審查與篩選審查與篩選(1)舍棄無用的對象)舍棄無用的對象通過屬性判斷:通過屬性判斷:是否通過屬性記錄了某些有用的信息?是否通過屬性記錄了某些有用的信息?通過操作判斷:通過操作判斷:是否通過操作提供了某些有用的功能?是否通過操作提供了某些有用的功能?二者都不是二者都不是無用無用(2)對象的精簡)對象的精簡只有一個屬性的對象只有一個屬性的對象班級班級班主任班主任姓名姓名11班級班級班主任姓名班主任姓名只有一個操作的對象只有一個操作的對象輸出設備輸出設備格式轉換器格式轉換器文件格式轉換文件格式轉換輸出設備輸出設備文件格式轉換文件格式轉換call(3)與實現條件有關的

29、對象)與實現條件有關的對象例如:與例如:與圖形用戶界面(圖形用戶界面(GUI)數據管理系統數據管理系統硬件硬件 及及操作系統操作系統 有關的對象有關的對象推遲到推遲到OOD考慮考慮6.4 對象分類對象分類(1 1)將對象抽象為類,用類表示它的全部對象)將對象抽象為類,用類表示它的全部對象(2 2)審查和調整)審查和調整類的屬性或操作不適合該類的全部對象實例類的屬性或操作不適合該類的全部對象實例例:例:“汽車汽車”類的類的“乘客限量乘客限量”屬性屬性進一步劃分特殊類進一步劃分特殊類屬性及操作相同的類屬性及操作相同的類經過抽象,差別很大的事物可能只保留相同的特征經過抽象,差別很大的事物可能只保留相

30、同的特征考慮能否合并為一個類考慮能否合并為一個類屬性及操作相似的類屬性及操作相似的類考慮能否提升出一個一般類考慮能否提升出一個一般類同一事物的重復描述同一事物的重復描述例:例:“職員職員”和和“工作證工作證”取消其中一個取消其中一個(3 3)類的命名)類的命名類的名字應適合該類(及其特殊類)的全部對象實例類的名字應適合該類(及其特殊類)的全部對象實例反映個體而不是群體反映個體而不是群體使用名詞使用名詞 或或 帶定語的名詞帶定語的名詞避免避免市井俚語和市井俚語和無意義的符號無意義的符號使用問題域通用的詞匯使用問題域通用的詞匯使用便于交流的語言文字使用便于交流的語言文字可以用本地文字和英文雙重命名

31、可以用本地文字和英文雙重命名屬性屬性(attributeattribute)是用來描述對象靜態特征的一個數據項。)是用來描述對象靜態特征的一個數據項。實例屬性實例屬性(instance attribute)和和類屬性類屬性(class attribute)的區別的區別例如:儀表類例如:儀表類輸入電壓、功率及各種規定的質量指標輸入電壓、功率及各種規定的質量指標類屬性類屬性編號、出廠日期、精度等實際性能參數編號、出廠日期、精度等實際性能參數實例屬性實例屬性第第7 7章章 定義對象的屬性和操作定義對象的屬性和操作7.1 屬性和操作屬性和操作 操作操作(operationoperation)是用來描述

32、對象動態特征(行為)的)是用來描述對象動態特征(行為)的一個動作序列一個動作序列 。近義詞:方法(近義詞:方法(methodmethod),服務(),服務(serviceservice) 被動操作被動操作(passive operation):):只有接收到消息才能執行的操作只有接收到消息才能執行的操作 編程語言中的函數、過程等被動成分編程語言中的函數、過程等被動成分主動操作主動操作(active operation):):不需要接收消息就能主動執行的操作不需要接收消息就能主動執行的操作編程語言中的進程、線程等主動成分編程語言中的進程、線程等主動成分 實現級細節方式實現級細節方式分析級細節方式

33、分析級細節方式7.2 屬性和操作的表示法屬性和操作的表示法類類 名名屬性名屬性名:類型名類型名=值值操作名操作名(參數表參數表):返回類型:返回類型類類 名名屬性名屬性名:類型名類型名操作名操作名()用衍型表示用衍型表示主動操作主動操作主動主動 類名類名操作名操作名()主動主動操作名操作名()類名類名操作名操作名()主動主動操作名操作名()操作名操作名()主動主動操作名操作名()7.3 7.3 定義屬性定義屬性(1 1)策略與啟發)策略與啟發按常識這個對象應該有哪些屬性?按常識這個對象應該有哪些屬性?人人姓名、地址、出生年月姓名、地址、出生年月在當前的問題域中,對象應該有哪些屬性?在當前的問題

34、域中,對象應該有哪些屬性?商品商品條形碼條形碼根據系統責任,這個對象應具有哪些屬性?根據系統責任,這個對象應具有哪些屬性?乘客乘客手機號碼手機號碼建立這個對象是為了保存和管理哪些信息?建立這個對象是為了保存和管理哪些信息?物資物資型號、規格、庫存量型號、規格、庫存量為實現操作的功能,需要增設哪些屬性?為實現操作的功能,需要增設哪些屬性?傳感器(信號采集功能)傳感器(信號采集功能)時間間隔時間間隔是否需要增加描述對象狀態的屬性?是否需要增加描述對象狀態的屬性?設備設備狀態狀態 用什么屬性表示關聯和聚合?用什么屬性表示關聯和聚合?課程課程任課教師,汽車任課教師,汽車發動機發動機(2)審查與篩選)審

35、查與篩選是否體現了以系統責任為目標的抽象是否體現了以系統責任為目標的抽象例:書例:書重量?重量?是否描述對象本身的特征是否描述對象本身的特征例:課程例:課程電話號碼?電話號碼?是否可通過繼承得到?是否可通過繼承得到?是否可從其他屬性直接導出?是否可從其他屬性直接導出?(3)推遲到)推遲到OOD考慮的問題考慮的問題規范化問題規范化問題對象標識對象標識性能問題性能問題(4)屬性的命名與定位)屬性的命名與定位命名:原則與類的命名相同命名:原則與類的命名相同定位:針對所描述的對象定位:針對所描述的對象適合類(及其子類)的全部對象實例適合類(及其子類)的全部對象實例(1 1)對象行為分類)對象行為分類系

36、統行為系統行為例:創建、刪除、復制、轉存例:創建、刪除、復制、轉存對象自身的行為對象自身的行為算法簡單的操作算法簡單的操作例:讀、寫屬性值例:讀、寫屬性值對象自身的行為對象自身的行為算法復雜的操作算法復雜的操作計算或監控計算或監控7.4 7.4 定義操作定義操作考慮系統責任考慮系統責任有哪些功能要求在本對象提供?有哪些功能要求在本對象提供?考慮問題域考慮問題域對象在問題域對應的事物有哪些行為?對象在問題域對應的事物有哪些行為?分析對象狀態分析對象狀態對象狀態的轉換是由哪些操作引起的對象狀態的轉換是由哪些操作引起的?追蹤操作的執行路線追蹤操作的執行路線模擬操作的執行,并在整個系統中跟蹤模擬操作的

37、執行,并在整個系統中跟蹤(2)策略與啟發)策略與啟發審查對象的每個操作是否審查對象的每個操作是否真正有用真正有用是否直接提供系統責任所要求的某項功能?是否直接提供系統責任所要求的某項功能?或者或者 響應其它操作的請求間接地完成這種功能響應其它操作的請求間接地完成這種功能的某些局部操作?的某些局部操作?調整調整取消無用的操作取消無用的操作審查操作是不是審查操作是不是高內聚高內聚的的一個操作應該只完成一項單一的、完整的功能一個操作應該只完成一項單一的、完整的功能調整調整拆分拆分 或或 合并合并(3 3)審查與調整)審查與調整考慮問題域考慮問題域對象行為是被引發的,對象行為是被引發的,還是主動呈現的

38、?還是主動呈現的?(4 4)認識對象的主動行為)認識對象的主動行為操作執行路線逆向追蹤操作執行路線逆向追蹤與參與者直接交互的對象操作與參與者直接交互的對象操作問題:分析階段為什么要給出操作流程?問題:分析階段為什么要給出操作流程?關于關于OOA/OOD分工的兩種不同觀點分工的兩種不同觀點(5)操作過程描述)操作過程描述可采用流程圖或活動圖可采用流程圖或活動圖yesno動作陳述框,在框內動作陳述框,在框內填寫要執行的動作。填寫要執行的動作。條件判斷框,給出一條件判斷框,給出一個判斷條件。個判斷條件。轉接,用于連接各個框,轉接,用于連接各個框,表示它們之間的轉接關系。表示它們之間的轉接關系。入口入

39、口/出口標記,指出出口標記,指出操作的開始或結束。操作的開始或結束。流程圖:流程圖:活動圖:活動圖:在流程圖基礎上進行了一些擴展,在流程圖基礎上進行了一些擴展,有更強的描述能力(第有更強的描述能力(第9章介紹)章介紹)命名:動詞或動賓結構命名:動詞或動賓結構定位:定位:與實際事物一致與實際事物一致例:售貨員例:售貨員售貨,商品售貨,商品售出售出在一般在一般-特殊結構中的位置特殊結構中的位置適合類的全部對象實例適合類的全部對象實例(6)操作的命名和定位)操作的命名和定位商品商品售出售出從主語從主語-謂語謂語-賓語結構看對象操作的設置賓語結構看對象操作的設置“售貨員銷售商品售貨員銷售商品”操作應該

40、放在哪里?操作應該放在哪里?售貨員售貨員售貨售貨call7.5 接口的概念及用途接口的概念及用途早期的面向對象方法并沒有把接口作為正式的早期的面向對象方法并沒有把接口作為正式的OO概念概念 和系統成分,只是用來解釋和系統成分,只是用來解釋OO概念概念“操作是對象(類)對外提供的訪問接口操作是對象(類)對外提供的訪問接口”20世紀世紀90年代中后期,接口才作為一種系統成分出現年代中后期,接口才作為一種系統成分出現在在OOPL中,并且被中,并且被UML作為一種模型元素作為一種模型元素UML對接口的定義及解釋:對接口的定義及解釋:“接口(接口(interface)是一種類目()是一種類目(class

41、ifier) ,它,它表示對一組緊湊的公共特征和職責的聲明。一個接表示對一組緊湊的公共特征和職責的聲明。一個接口說明了一個合約;實現接口的任何類目的實例必口說明了一個合約;實現接口的任何類目的實例必須履行這個合約。須履行這個合約。”“一個給定的類目可以實現多個接口,而一個接口一個給定的類目可以實現多個接口,而一個接口可以由多個不同的類目來實現。可以由多個不同的類目來實現。” 為什么引入接口的概念為什么引入接口的概念售貨員售貨員商品商品采購員采購員callcall針對不同的應用場合組織對象的操作針對不同的應用場合組織對象的操作售貨員售貨員商品商品銷售銷售采購員采購員采購采購把與銷售有關把與銷售有

42、關的操作組織成的操作組織成銷售接口銷售接口把與采購有關把與采購有關的操作組織成的操作組織成采購接口采購接口可替換(例如根據銷可替換(例如根據銷售策略的變化開發一售策略的變化開發一個新的商品類)個新的商品類)接口提供了更靈活的銜接機制接口提供了更靈活的銜接機制接口(接口(interface)是由一組操作所形成的一個集合,它由一個名字和代表其是由一組操作所形成的一個集合,它由一個名字和代表其中每個操作的特征標記構成。中每個操作的特征標記構成。特征標記(特征標記(signature)代表了一個操作,但并不具體地定義操作的實現代表了一個操作,但并不具體地定義操作的實現特征標記特征標記 := (:,:)

43、: interface接口名稱接口名稱操作操作1()()操作操作n()()表示法表示法(詳細方式):(詳細方式):接口與類的關系接口與類的關系接口由某些類實現(提供),被另外某些類使用(需要)接口由某些類實現(提供),被另外某些類使用(需要)前者與接口的關系稱為前者與接口的關系稱為實現實現(realization)后者與接口的關系稱為后者與接口的關系稱為使用使用(use)interface銷售銷售查詢()查詢()售出()售出()售貨員售貨員商品商品使用使用實現實現同一個接口同一個接口 對實現者而言是對實現者而言是供接口供接口(provided interface) 對使用者而言是對使用者而言是

44、需接口需接口(required interface)表示法表示法(簡略方式):(簡略方式):托球托球-托座托座使用者使用者提供者提供者提供者的供接口(托球)提供者的供接口(托球)使用者的需接口(托座)使用者的需接口(托座)售貨員售貨員商品商品銷售銷售例:例:interface銷售銷售查詢()查詢()售出()售出()售貨員售貨員商品商品在一個類上可以畫出它所有的供接口和需接口在一個類上可以畫出它所有的供接口和需接口類類供接口供接口需接口需接口一個接口可以由多個類使用,它也可以由多個類實現一個接口可以由多個類使用,它也可以由多個類實現類類B類類D類類A類類E類類C多個類可以共同使用多個類可以共同使

45、用同一個接口同一個接口正如對象的一個操作正如對象的一個操作可以被多個對象調用可以被多個對象調用多個類都可以分別實多個類都可以分別實現同一個接口現同一個接口這里表示它們可以這里表示它們可以相互替換相互替換接口與類的區別接口與類的區別類既有屬性又有操作;類既有屬性又有操作;接口只是聲明了一組操作,沒有屬性。接口只是聲明了一組操作,沒有屬性。在一個類中定義了一個操作,就要在這個類中真正地實現它;在一個類中定義了一個操作,就要在這個類中真正地實現它;接口中的操作只是一個聲明,不需要在接口中加以實現。接口中的操作只是一個聲明,不需要在接口中加以實現。類可以創建對象實例;類可以創建對象實例;接口則沒有任何

46、實例。接口則沒有任何實例。引入接口概念的好處引入接口概念的好處在接口的使用者和提供者之間建立了一種靈活的銜接機制,有在接口的使用者和提供者之間建立了一種靈活的銜接機制,有利于對類、構件等軟件成分進行靈活的組裝和復用。利于對類、構件等軟件成分進行靈活的組裝和復用。將操作的聲明與實現相分離,隔離了接口的使用者和提供者的將操作的聲明與實現相分離,隔離了接口的使用者和提供者的相互影響。使用者只需關注接口的聲明,不必關心它的實現;相互影響。使用者只需關注接口的聲明,不必關心它的實現;提供者不必關心哪些類將使用這個接口,只是根據接口的聲明提供者不必關心哪些類將使用這個接口,只是根據接口的聲明中所承諾的功能

47、來實現它,并且可以有多種不同的實現。中所承諾的功能來實現它,并且可以有多種不同的實現。 接口既可用于類圖,也可用于構件圖,對后者更為重要接口既可用于類圖,也可用于構件圖,對后者更為重要教材第教材第9章將做進一步介紹章將做進一步介紹接口與多繼承的比較接口與多繼承的比較接口果真能部分地解決多繼承問題嗎?接口果真能部分地解決多繼承問題嗎?interfaceinterface接口接口 A A操作操作A-1A-1()()操作操作A-nA-n()()interfaceinterface接口接口 B B操作操作B-1B-1()()操作操作B-mB-m()()類類 C C類類 E操作操作A-1()()操作操作

48、A-n()()操作操作B-1()()操作操作B-m()()類類 D D操作操作A-1()()操作操作A-n()()操作操作B-1()()操作操作B-m()()類類 A A操作操作A-1A-1()()操作操作A-nA-n()()類類 B B操作操作B-1B-1()()操作操作B-mB-m()()類類 C C操作操作A-1A-1()()操作操作A-nA-n()()操作操作B-1()()操作操作B-m()()類類 E E類類 D D對象之間的四種關系對象之間的四種關系1 1一般一般- -特殊關系特殊關系 又稱又稱繼承繼承關系,反映事物關系,反映事物的分類。由這種關系可以形成的分類。由這種關系可以形成

49、一般一般- -特殊結構特殊結構。2 2整體整體- -部分關系部分關系即即聚合聚合關系。反映事物的構關系。反映事物的構成。由這種關系可以形成成。由這種關系可以形成整體整體- -部分結構部分結構。3 3關聯關系關聯關系對象實例集合(類)上的一個關對象實例集合(類)上的一個關系,其中的元素提供了被開發系統的應用領域中一系,其中的元素提供了被開發系統的應用領域中一組有意義的信息。組有意義的信息。4 4消息關系消息關系 對象之間的動態聯系,即一個對對象之間的動態聯系,即一個對象在執行其操作時,請求其他對象為它執行某個操象在執行其操作時,請求其他對象為它執行某個操作,或者向其他對象傳送某些信息。反映了事物

50、之作,或者向其他對象傳送某些信息。反映了事物之間的行為依賴關系。間的行為依賴關系。這些關系形成了類圖的關系層這些關系形成了類圖的關系層第第8 8章章定義對象間的關系定義對象間的關系概念及術語概念及術語同義詞同義詞 和和 近義詞近義詞繼承(繼承(inheritance)是描述一般類和特殊類之間關系的最傳統、是描述一般類和特殊類之間關系的最傳統、最經典的術語。有時作為動詞或形容詞出現。最經典的術語。有時作為動詞或形容詞出現。一般一般-特殊(特殊(generalization-specialization)含義最準確,而且不含義最準確,而且不容易產生誤解,恰切地反映了一般類(概念)和特殊類(概念)之

51、容易產生誤解,恰切地反映了一般類(概念)和特殊類(概念)之間的相對關系;也用于描述結構,即一般間的相對關系;也用于描述結構,即一般-特殊結構。缺點是書寫特殊結構。缺點是書寫和閱讀比較累贅。和閱讀比較累贅。泛化(泛化(generalization)取取“一般一般-特殊特殊” 的一半,是的一半,是UML的做法的做法。比較簡練,但是只反映了問題的一方面。作為關系的名稱尚可,。比較簡練,但是只反映了問題的一方面。作為關系的名稱尚可,說結構是一個說結構是一個“泛化泛化”則很勉強。則很勉強。分類(分類(classification)接近人類日常的語言習慣,接近人類日常的語言習慣, 體現了類的層體現了類的層

52、次劃分,也作為結構的名稱。在許多的場合被作為一種原則。次劃分,也作為結構的名稱。在許多的場合被作為一種原則。本書主要采用本書主要采用“一般一般-特殊特殊”這個術語這個術語8.1一般一般-特殊結構特殊結構相關概念:一般類、特殊類、繼承、多繼承、多態相關概念:一般類、特殊類、繼承、多繼承、多態語義:語義:“is a kind of ”一般一般-特殊關系(繼承關系)是類之間的一種二元關系特殊關系(繼承關系)是類之間的一種二元關系是一種是一種基本的模型元素基本的模型元素;由這種關系所形成的結構是一般由這種關系所形成的結構是一般-特殊結構特殊結構是一種是一種復合的模型成分復合的模型成分。人員人員股東股東

53、職員職員顧客顧客股東職員股東職員例:例:這是這是1個一般個一般-特殊結構特殊結構 包含包含5個一般個一般-特殊關系特殊關系特殊類一般類的特征一般類特殊類的特征只要有這些特征必須有這些特征對象實例集合對象實例集合特征集合特征集合理解一般類與特殊類之間的關系定義定義1:如果類如果類A A具有類具有類B B的全部屬性和全部操作,而且具的全部屬性和全部操作,而且具有自己特有的某些屬性或操作,則有自己特有的某些屬性或操作,則A A叫做叫做B B的特殊類,的特殊類,B B叫叫做做A A的一般類。一般類與特殊類又稱父類與子類。的一般類。一般類與特殊類又稱父類與子類。定義定義2 2:如果類如果類A A的全部對

54、象都是類的全部對象都是類B B的對象,而且類的對象,而且類B B中存中存在不屬于類在不屬于類A A的對象,則的對象,則A A是是B B的特殊類,的特殊類,B B是是A A的一般類。的一般類。書中證明,以上兩種定義是等價的書中證明,以上兩種定義是等價的一般類和特殊類的兩個定義一般類和特殊類的兩個定義表示法表示法一般類一般類特殊類特殊類特殊類特殊類集中式集中式一般類一般類特殊類特殊類特殊類特殊類分散式分散式如何發現一般如何發現一般-特殊結構特殊結構(1)學習當前領域的分類學知識)學習當前領域的分類學知識(2)按常識考慮事物的分類)按常識考慮事物的分類(3)根據一般類和特殊類的兩種定義)根據一般類和

55、特殊類的兩種定義(4)考察屬性與操作的適應范圍)考察屬性與操作的適應范圍?公司人員公司人員姓名姓名身份證號身份證號股份股份工資工資 ?公司人員公司人員姓名姓名身份證號身份證號 股東股東股份股份 職員職員工資工資 股東股東姓名姓名身份證號身份證號股份股份 職員職員姓名姓名身份證號身份證號工資工資 股東股東股份股份職員職員工資工資 ?公司人員公司人員姓名姓名身份證號身份證號 (5 5)考慮領域范圍內的復用)考慮領域范圍內的復用現鈔收款機現鈔收款機 A A B B C C D D E E F F X X Y Y Z Z收款機收款機A AB BC CX XY Y現鈔收款機現鈔收款機 D D E E F

56、 F Z Z領域構件(1 1)問題域是否需要這樣的分類?(例:書)問題域是否需要這樣的分類?(例:書線裝書)線裝書)(2 2)系統責任是否需要這樣的分類?(例:職員)系統責任是否需要這樣的分類?(例:職員本市職員)本市職員)(3 3)是否符合分類學的常識?(用)是否符合分類學的常識?(用“is a kind of ”is a kind of ”來衡量)來衡量)審查與調整審查與調整(4 4)是否真正的繼承了一些屬性或操作?)是否真正的繼承了一些屬性或操作? 飛機飛行高度 自動導航 ? 汽車發動機載重量速度運輸運輸工具發動機載重量速度 飛機飛行高度 自動導航 汽車運輸一般一般- -特殊結構的簡化特

57、殊結構的簡化(1 1)取消沒有特殊性的特殊類)取消沒有特殊性的特殊類運輸工具發動機載重量速度 飛機飛行高度 自動導航 汽車運輸運輸工具發動機載重量速度 飛機飛行高度 自動導航 運輸(2 2)增加屬性簡化一般特殊結構)增加屬性簡化一般特殊結構 人員人員男男 人人女女 人人中國人中國人美國人美國人日本人日本人人員人員性別性別國籍國籍(3 3)取消用途單一的一般類,減少繼承層次)取消用途單一的一般類,減少繼承層次一般類存在的理由:一般類存在的理由:* * 有兩個或兩個上以上的特殊類有兩個或兩個上以上的特殊類* * 需要用它創建對象實例需要用它創建對象實例* * 有助于軟件復用有助于軟件復用設設 備備

58、型號型號生產廠生產廠開啟開啟關閉關閉 雷雷 達達安裝地點安裝地點 監控監控 雷達雷達型號型號生產廠生產廠安裝地點安裝地點 開啟開啟關閉關閉監控監控電子設備電子設備激光打印機激光打印機傳真機傳真機通訊設備設備電子設備計算機設備打印機民用通訊設備激光打印機傳真機多繼承:多繼承:允許一個允許一個特殊類具有一個以上一般類的繼承模式特殊類具有一個以上一般類的繼承模式多繼承特殊類的內部情況在職研究生在職研究生姓名姓名學號學號班級班級專業專業職稱職稱專業專業在職單位在職單位來自來自“人員人員”類類來自來自“研究生研究生”類類來自來自“教職工教職工”類類本類中顯式定義本類中顯式定義人員人員姓名姓名教職工教職工

59、職稱職稱專業專業研究生研究生學號學號班級班級專業專業在職研究生在職研究生在職單位在職單位 例例:命名命名沖突沖突多態多態:多態是指同一個命名可具有不同的語義。多態是指同一個命名可具有不同的語義。OO方法中,方法中,常指在一般類中定義的屬性或操作被特殊類繼承之后,常指在一般類中定義的屬性或操作被特殊類繼承之后,可以具有不同的數據類型或表現出不同的行為。可以具有不同的數據類型或表現出不同的行為。多邊形邊數頂點數據繪圖XY矩形邊數*頂點數據*繪圖正多邊形*頂點數據*繪圖例:例:概念:概念:聚合(聚合(aggregation),組合(),組合(composition)整體整體-部分(部分(whole-

60、part )整體對象,部分對象整體對象,部分對象語義:語義:“a part of”或或“has a”聚合關系描述了對象實例之間的構成情況,然而它的聚合關系描述了對象實例之間的構成情況,然而它的定義卻是在類的抽象層次給出的。定義卻是在類的抽象層次給出的。從集合論的觀點看聚合關系從集合論的觀點看聚合關系整體整體-部分關系(聚合關系)部分關系(聚合關系)是兩個類之間的二元關系是兩個類之間的二元關系,其中一個類的某些對象是另一個類的某些對象的組,其中一個類的某些對象是另一個類的某些對象的組成部分。成部分。整體整體-部分結構部分結構是把若干具有聚合關系的類組織在一起是把若干具有聚合關系的類組織在一起所形

溫馨提示

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

評論

0/150

提交評論