第五講 面向?qū)ο蠹夹g_第1頁
第五講 面向?qū)ο蠹夹g_第2頁
第五講 面向?qū)ο蠹夹g_第3頁
第五講 面向?qū)ο蠹夹g_第4頁
第五講 面向?qū)ο蠹夹g_第5頁
已閱讀5頁,還剩128頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、GISGIS中面向?qū)ο蠹夹g中面向?qū)ο蠹夹g 第五講 2 3 4 5 6 7 8 9 10 11 12 13 噴泉模型噴泉模型 分析分析 設計設計 實現(xiàn)實現(xiàn) 測試測試 集成集成 演化演化 14 15 16 17 面向?qū)ο蟮囊c:面向?qū)ο蟮囊c: 1. 認為客觀世界是由各種對象組成的,任何事認為客觀世界是由各種對象組成的,任何事 物都是對象,復雜的對象可以由比較簡單的對物都是對象,復雜的對象可以由比較簡單的對 象以某種方式組合而成。象以某種方式組合而成。 2. 把所有對象都劃分成各種對象類,每個對象把所有對象都劃分成各種對象類,每個對象 類都定義了一組數(shù)據(jù)和一組方法。類都定義了一組數(shù)據(jù)和一組方法。

2、3. 按照子類(或稱為派生類)與父類(或稱為按照子類(或稱為派生類)與父類(或稱為 基類)的關系,把若干個對象類組成一個層次基類)的關系,把若干個對象類組成一個層次 結構的系統(tǒng)(也稱為類等級)。結構的系統(tǒng)(也稱為類等級)。 4. 對象彼此之間僅能通過傳遞消息互相聯(lián)系。對象彼此之間僅能通過傳遞消息互相聯(lián)系。 18 面向?qū)ο蟮闹饕獌?yōu)點:面向?qū)ο蟮闹饕獌?yōu)點: 1. 與人類習慣的思維一致與人類習慣的思維一致 2. 穩(wěn)定性好穩(wěn)定性好 可重用性好可重用性好 較易開發(fā)出大型軟件產(chǎn)品較易開發(fā)出大型軟件產(chǎn)品 可維護性好可維護性好 穩(wěn)定性好、易于修改、容易理解、容易測試和調(diào)試穩(wěn)定性好、易于修改、容易理解、容易測試

3、和調(diào)試 但,面向?qū)ο蠹夹g的優(yōu)點并不是減少了開發(fā)時間,但,面向?qū)ο蠹夹g的優(yōu)點并不是減少了開發(fā)時間, 相反,初次使用這種技術開發(fā)軟件,可能比用傳統(tǒng)的方相反,初次使用這種技術開發(fā)軟件,可能比用傳統(tǒng)的方 法所需要的實踐還稍微長一點。法所需要的實踐還稍微長一點。 19 20 對象技術的優(yōu)勢對象技術的優(yōu)勢 穩(wěn)定: 較小的需求變化不會導致系統(tǒng)結構 大的改變 舉例:某公司的銷售處理系統(tǒng) 定單定單 合同合同 出費出費 21 對象技術的優(yōu)勢對象技術的優(yōu)勢 穩(wěn)定:數(shù)據(jù)和功能都打包在一起,從而改善軟件 的再重用性 軟件重用能提高質(zhì)量,減少由于編制新的系統(tǒng)代 碼而產(chǎn)生的成本 File Mgr Macro Editor

4、Math Utilities Text EditorPrint Utilities Format Editor Menus String Utilities SpreadsheetWord Processor Reusable-Component Repository 22 對象技術的優(yōu)勢對象技術的優(yōu)勢 面向?qū)ο蟮哪P透淤N切地反映了現(xiàn)實世界 更加準確地描述公共數(shù)據(jù)和過程 易于理解,尤其對于使用者 現(xiàn)實世界現(xiàn)實世界 Laser Printer External Drive Computer 對象圖對象圖 23 對象技術的優(yōu)勢對象技術的優(yōu)勢 面向?qū)ο蟮姆椒ㄖС执笠?guī)模開發(fā) 可以嚴格定義各個組件之間

5、的交互 v 減少內(nèi)部的依賴關系 v 減少集成的問題 v 支持并行開發(fā) 24 對象技術的優(yōu)勢對象技術的優(yōu)勢 幫助開發(fā)多層結構 Equipment and Customer specific Code Processes and other application code Major abstractions, classes, etc. Mechanisms H/W specific code, O/S specific code general-purpose code 1 2 3 4 5 Application Specific Application Independent Less R

6、euse More Reuse 25 對象技術的優(yōu)勢對象技術的優(yōu)勢 幫助開發(fā)嵌入式、實時系統(tǒng) 具有更高的可靠性和靈活性 26 對象技術的優(yōu)勢對象技術的優(yōu)勢 對系統(tǒng)的一部分進行再工程,保護前期軟 件應用的投資 Existing Software Reengineered Software 27 對象技術的優(yōu)勢對象技術的優(yōu)勢(總結總結) 需求改變時系統(tǒng)穩(wěn)定 高水準的軟件重 更準確的模型,更易于理解 嚴格定義大規(guī)模開發(fā)的交互界限 對象的封裝有利于 client-server 應用的 開發(fā) 再工程保護前期投資 OOD 增加細節(jié)和設計決策增加細節(jié)和設計決策 開發(fā)人員的角度開發(fā)人員的角度 OOA 開發(fā)需求

7、模型開發(fā)需求模型 用戶的角度用戶的角度 OOP 實現(xiàn)和測試實現(xiàn)和測試 28 UML: 設立對象建模標準設立對象建模標準 Unified 0.8 OMT-1 Booch 91 OMT-2 Unified Modeling Language 1.0 Booch 93 OOSE Unified Modeling Language 1.1 29 面向?qū)ο蟾拍蠲嫦驅(qū)ο蟾拍?Object 對象 Class 類 State 狀態(tài) Behavior 行為 Attribute 屬性 Operation 操作 (Method方法) Inheritance 繼承 vSubclasses 子類 vSuperclass

8、es 父類 Generalization 普遍化 Polymorphism 多態(tài) 30 面向?qū)ο蟾拍蠲嫦驅(qū)ο蟾拍?Abstraction 抽象 Encapsulation 封裝 Association 關聯(lián) Role 角色 Multiplicity 多重性 Aggregation 聚合 Dependency association 依賴 Package 包 Use Case 使用案例 Scenario 腳本 Actor 作用者 31 32 什么是對象什么是對象 一個對象代表了一個現(xiàn)實的或虛構的實體 v自然實體 v概念實體 v軟件實體 化學過程化學過程 連接顯示連接顯示 33 對象的屬性對象的屬

9、性 對象是應用中具有明顯邊界和含義的概 念、抽象或事物 一個對象有三個重要屬性: v 狀態(tài) v 行為 v 標識 術語“實例”是“對象”的同義詞 34 對象的狀態(tài)對象的狀態(tài) 一個對象的狀態(tài)是它反映于現(xiàn)實世界的 一系列屬性: v 參數(shù)的數(shù)值 (也就是,與對象有關系的數(shù)據(jù)) v 它與其它對象的關系 v 任一時刻的歷史狀態(tài) 可能的狀態(tài):可能的狀態(tài): 停泊停泊 運營運營 著陸著陸 終止終止 班機班機 747 747 35 對象的行為對象的行為 定義當其它對象發(fā)出請求時,該對象如何 反應 由為對象定義的一系列操作決定 班機班機 747 核對出發(fā)時間核對出發(fā)時間 (返回返回 9:27) 機票代理機票代理 3

10、6 對象的標識對象的標識 每一個對象都有一個唯一的標識, 即使 其狀態(tài)有可能與其它對象一樣 班機班機 747 on 11/10 班機班機 747 on 11/11 班機班機 747 on 11/12 37 面向?qū)ο笾械幕靖拍蠲嫦驅(qū)ο笾械幕靖拍?對象的形象表示對象的形象表示 狀態(tài)狀態(tài) S 操作操作1,2,3的實現(xiàn)的實現(xiàn) 操作操作1 操作操作2 操作操作3 界界 面面 38 面向?qū)ο笾械幕靖拍蠲嫦驅(qū)ο笾械幕靖拍?對象的特點對象的特點 以數(shù)據(jù)為中心以數(shù)據(jù)為中心 對象是主動的對象是主動的 實現(xiàn)了數(shù)據(jù)封裝實現(xiàn)了數(shù)據(jù)封裝 本質(zhì)上具有并行性本質(zhì)上具有并行性 模塊獨立性模塊獨立性 39 40 41 面

11、向?qū)ο竺嫦驅(qū)ο?對象技術圍繞對象的概念來建立 一個對象包含了數(shù)據(jù)和使用這些數(shù)據(jù)的所 有功能 對象之間通過消息通信 v 一個對象通過向另一個對象發(fā)送消息激活某 一 個功能 42 什么是類(什么是類(Class) 類是一組具有相同結構和行為的對象的集 合 v 共同的結構通過屬性表現(xiàn)出來 (i.e. 數(shù)據(jù)) v 共同的行為通過操作表現(xiàn)出來 (i.e. 功能) 班機班機 747 結構結構 班機號班機號 日期日期 分配的班分配的班 機機 起點起點 終點終點 狀態(tài)狀態(tài) 行為行為 裝載設備裝載設備 起飛起飛 延遲延遲 取消取消 終止終止 43 類的示例類的示例 Class Employee Structur

12、e Name Address Position Salary Start Date End Date Behavior Hire Fire Promote Increase Salary Retire 44 類類 具有相同特征和操作的對象可以放到類中。 在下面這副圖中您看到了什么類? 45 類圖:用來表達類類圖:用來表達類 類圖是一種主要的圖形化對象表示法 v 類圖顯示類及類之間的關系 v 一個類通過在類圖標中的類名(唯一的)來 代表 班機班機 46 屬性屬性 屬性是類的特征或特性 屬性的值是某一特定對象的屬性值 在類中屬性名必須是唯一的 每一個類的實例都有為這個類定義的所 有屬性的值 例如:

13、 銀行帳戶類屬性銀行帳戶類屬性 帳號帳號 銀行名稱銀行名稱 擁有者擁有者 金額金額 Mary的銀行帳戶屬性值的銀行帳戶屬性值 12345678 First National Bank Mary Smith $1024.48 47 屬性取決于視點屬性取決于視點 從銷售人員的角度 v 型號 v 價格 v 顏色 v 里程數(shù) 一輛汽車具有的一輛汽車具有的屬性屬性: : 從從維修人員維修人員的角度的角度 v 馬達類型馬達類型 v 傳動類型傳動類型 v 維修記錄維修記錄 48 操作操作 對象的行為是由為此對象定義的一系列操 作決定的 操作訪問或修改對象的屬性值 一個類可能同時存在多個實例,也可能在 某一時

14、刻沒有實例 一個類的所有實例都可以使用在這個類中 定義的操作 49 操作取決于視點操作取決于視點 一輛汽車具有的一輛汽車具有的操作操作: : 從銷售人員的角度 v 處理客戶定單 v 準備銷售合同 v 加入清單 v 從清單中刪除 從維修人員的角度 v 測試剎車 v 修理剎車 v 轉(zhuǎn)動輪胎 v 檢查馬達速度 50 屬性和操作的標記法屬性和操作的標記法 在類的圖標中描述屬性和操作 通常只顯示最重要的屬性和操作,避免 圖形混亂 屬性顯示在操作上方,操作的名字后跟 有() 班機班機 flightNumber date departure time status release( ) takeOff( )

15、 屬性屬性 操作操作 51 類是生成對象的模板類是生成對象的模板 類是生成對象的模板 v類的定義中包含有產(chǎn)生和刪除對象的操作屬 性顯示在操作上方,操作的名字后跟有() 一個類定義了使用哪種數(shù)據(jù)表示法來描述 屬性 v每一個實例都采用有屬性值的數(shù)據(jù)表示法 一個類通過一系列操作來定義行為 v這種操作能在每個實例中激活 班機班機 Flight 187 Flight 121 Flight 747 52 類和對象的關系類和對象的關系 每一個對象都是某一個類的實例 每一個類在某一時刻都有零個或更多的 實例 類是靜態(tài)的; 它們的存在、語義和關系 在程序執(zhí)行前就已經(jīng)定義好了 對象是動態(tài)的; 它們在程序執(zhí)行時可以

16、 被創(chuàng)建和刪除 53 54 55 56 57 58 什么是消息?什么是消息? 消息,就是要求某個對象執(zhí)行在定義它的那個類中消息,就是要求某個對象執(zhí)行在定義它的那個類中 所定義的某個操作的規(guī)格說明。通常,一個消息有下述所定義的某個操作的規(guī)格說明。通常,一個消息有下述 三部分組成:三部分組成: 接受消息的對象接受消息的對象 消息選擇符(也稱為消息名)消息選擇符(也稱為消息名) 零個或多個變元零個或多個變元 不同于結構化設計中的函數(shù)調(diào)用。不同于結構化設計中的函數(shù)調(diào)用。 59 60 61 Polygon TriangleQuadrilateral Rectangle 62 63 Polygon ref

17、erencePoint Vertices Draw( ) move( x, y) contains?(aPoint) Quadrilateral referencePoint Vertices Draw( ) move( x, y) contains?(aPoint) Polygon類類Polygon類的子類類的子類 Quadrilateral 64 多態(tài)性(多態(tài)性(PolymorphismPolymorphism) 在面向?qū)ο蟮能浖夹g中,多態(tài)性是指子在面向?qū)ο蟮能浖夹g中,多態(tài)性是指子 類對象可以向父類對象那樣使用,同樣的消息類對象可以向父類對象那樣使用,同樣的消息 既可以發(fā)送給父類對象也

18、可以發(fā)送給子類對象。既可以發(fā)送給父類對象也可以發(fā)送給子類對象。 多態(tài)性機制不僅增加了面向?qū)ο筌浖刀鄳B(tài)性機制不僅增加了面向?qū)ο筌浖?統(tǒng)的靈活性,進一步減少了信息冗余,而且統(tǒng)的靈活性,進一步減少了信息冗余,而且 顯著提高了軟件的可重用性和可擴充性。顯著提高了軟件的可重用性和可擴充性。 65 重載(重載(Overloading) 有兩種重載:有兩種重載: 函數(shù)重載是指在用以作用域內(nèi)的若干個參數(shù)函數(shù)重載是指在用以作用域內(nèi)的若干個參數(shù) 特征不特征不 同的函數(shù)可以使用相同函數(shù)名字同的函數(shù)可以使用相同函數(shù)名字 運算符重載是指同一個運算符可以施加于不運算符重載是指同一個運算符可以施加于不 同類型的操作數(shù)上

19、面。當然,當參數(shù)特征不同同類型的操作數(shù)上面。當然,當參數(shù)特征不同 或被操作數(shù)的類或被操作數(shù)的類 型不同時,實現(xiàn)函數(shù)的算法或型不同時,實現(xiàn)函數(shù)的算法或 運算符的語義是不相同的。運算符的語義是不相同的。 66 抽象抽象 一個對象是現(xiàn)實世界中一個實體的抽象 抽象是一種單一化的描述: v 強調(diào)與給出應用有關的特性 v 抑制不相關的特性 一個類是一組對象的抽象 抽象通過注重主要的、與問題有關的特性, 幫助 我們處理復雜系統(tǒng) 關鍵在于找出重要的、有關的類,以及每 個類中重要、有關的操作和屬性 67 利用封裝隱藏信息利用封裝隱藏信息 一個類分為兩個部分: 界面和實現(xiàn) 對于用戶來說,界面是可見的,實現(xiàn)是不可見

20、的 只有類提供的操作才能修改屬性值 將一個類實現(xiàn)的細節(jié)隱藏起來叫做封裝 accountNumber nameOfBank nameOfOwner balance withdraw deposit generateStatement getBalance changeOwnerNameAttribute values can be changed only by the operations provided by the object Operations are provided to display attribute values needed by clients The state

21、of the object cannot be modified by clients directly 68 封裝的益處封裝的益處 封裝提供兩種保護: v保護對象,防止被用戶誤用 用戶無權訪問實現(xiàn)的細節(jié), 例如屬性值和操作過 程 v當對象實現(xiàn)過程改變時,保護用戶端代碼 對象的實現(xiàn)過程改變不影響用戶端代碼 69 封裝的益處封裝的益處 實現(xiàn)過程可能改變, 例如: v 修正缺陷 v 增進性能 v 改變方法 封裝能減小“波紋效應”,也就是一個 操作的修 正會影響到相應客戶端的操作,從而導致 此客戶端的客戶端的改變. 70 關系的重要性關系的重要性 所有的系統(tǒng)都包含了大量的類和對象 對象通過與其它對象

22、的協(xié)作完成系統(tǒng)的 功能行為 協(xié)作通過關系來實現(xiàn) 幾種重要的關系類型: v 關聯(lián) v 聚合 v 依賴 71 關聯(lián)關聯(lián) 關聯(lián)是類之間的連接 在類圖中關聯(lián)通過連接類之間的線段來表示 數(shù)據(jù)可以單向,也可以雙向傳遞 每一個關聯(lián)關系在初始時都認為是雙向的 v可能僅僅是單向 (依設計決定) 兩個類之間可以存在多個關聯(lián)關系 Mainframe Workstation Employer Employee 72 示例示例: : 關聯(lián)關聯(lián) 在一個工資系統(tǒng)中有下面兩個類: 關聯(lián)表示了雙向的關系,例如: v給出一個Person的實例, 我們能夠知道他屬 于哪家公司 v給出一個 Company的實例, 我們能夠知道在 其

23、中工作的所有人 Person Company 73 給關聯(lián)命名給關聯(lián)命名 目的:闡明關聯(lián)的意義 名字像一個標簽, 位于兩個類圖的中間 通常采用動詞或動詞短語 PersonCompany employs 74 定義角色定義角色 除給關聯(lián)命名外, 還能指定角色的名字 角色名位于關聯(lián)線上,靠近所修飾的類 關聯(lián)的單方或雙方都可指定角色名 使用名詞或名詞短語 避免同時使用角色名和關聯(lián)名,選一個 最能說明問題的 employee Person employer Company 75 角色的含義角色的含義 關聯(lián)中類的角色代表類和關聯(lián)的關系 在職員系統(tǒng)中,一個Person對象可能有以 下角色: v Emplo

24、yee v Manager 每個角色有不同的行為: v Employee 使用考勤卡,獲得工資 v Manager 分配工作,評價職員 76 關聯(lián)的多重性關聯(lián)的多重性 多重性是指多個實例參與一個關聯(lián) 多重性通過位于關聯(lián)線某一端的一個表達 式或符號來表示 對于每個關聯(lián)關系, 需要做出兩個多重性 的決定 例如, 在公司和職員的關聯(lián)中 v 每個公司可以雇用多個職員 v 每個職員只有一個從屬公司 77 示例:關聯(lián)的多重性示例:關聯(lián)的多重性 多重性決定可以揭示建模過程中隱藏的問 題 v 職員會不會失業(yè)? v 公司能不能沒有職員? v 一個職員能不能有兩份工作? 職員職員 職員職員 雇主雇主 公司公司 1

25、.1.* *1 1 78 關聯(lián)的多重性關聯(lián)的多重性 多重性的三個常用尺度: v One-to-one v One-to-many v Many-to-many 可以用符號、數(shù)字、字母、公式或任何預 先設置的方式來表示多重性 79 常用的多重性表示法常用的多重性表示法 多重性能解決兩個問題 v 關聯(lián)是強制的 (不包含零個) 或隨意的 (包含 零個)? v 一個實例可以連接的其它實例的最大數(shù)目? v 常用的多重性表示法: 1只有一個 0.* 零或更多 1.* 一個或更多 0.1 零或一個 *零或更多 3.7 指定的范圍 (3 or 4 or 5 or 6 or 7) 1.3,7結合使用 (1 or

26、 2 or 3 or 7) 80 自反關聯(lián)自反關聯(lián) 自反關聯(lián)指同一個類中的對象的關系 v表示同一個類中多個對象的協(xié)作 A course may have many pre-requisites A course may be a pre-requisite for many other courses Pre-requisite Course 0.* 0.* 81 聚合(包含)聚合(包含) 聚合是一種特殊的關聯(lián),體現(xiàn)整體和部分 的關系 聚合是一種 “has-a” 或包含的關系 同樣可以使用多重性 Company Department 1.* 1 82 依依 賴賴 依賴表示一個對象需要其它對象為

27、其提供 服務 又可稱為client-supplier 關系 v client 使用supplier提供的服務 v supplier 不需要了解 client(s) v 單向關系 Controller Display Itemcontrol s 83 分析和設計中的關系分析和設計中的關系 分析時, 建立類之間的關聯(lián) v 由于類的自然屬性使得這種關系存在, 而不是 由于特殊的實現(xiàn)過程 如果可能, 將關系定義為聚合 建立一個初始的多重性,揭示隱藏的問題 設計時: v 修正多重性設置 v 進一步修正關聯(lián)關系 v 加入更多的細節(jié) 84 繼承繼承 繼承表示一個類從其它類中獲得結構和行 為(子類/父類) 又

28、名普遍化 交通工具是一個父類 地面交通工具和空中交通工具是子類 Vehicle GroundVehicle AirVehicle The arrow points toward the superclass 85 繼承繼承 繼承表示子類從父類繼承時抽象的層次 v 單繼承:子類只從一個父類繼承 v 多繼承:子類從多于一個的父類繼承 繼承通常被稱為 “is-a” 或“kind-of” v 一個子類的實例也 “is a” 父類的實例 v 一個子類的實例是 “kind-of” 父類 86 多層次多層次 A Car is a kind of GroundVehicle which is a kind o

29、f Vehicle Vehicle and AirVehicle are ancestors of Airplane AirVehicle and Airplane are descendants of Vehicle Vehicle GroundVehicleAirVehicle Car TruckAirplane Helicopter 87 繼承的內(nèi)容繼承的內(nèi)容 屬性 操作 關系 約束 繼承平衡類之間的共同之處 88 繼承屬性繼承屬性 屬性在繼承結構的最高一層定義 所有子類的實例能夠繼承這些屬性 每個子類可以增加或重新定義繼承的屬性; 但在修改是要加倍注意 GroundVehicle li

30、censeNumber weight Car Truck tonnage A truck has three attributes: licenseNumber weight tonnage 89 繼承操作繼承操作 屬性在繼承結構的最高一層定義 所有子類的實例能夠繼承這些操作 每個子類可以增加或重新定義繼承的屬性 GroundVehicle licenseNumber weight register( ) Car Truck tonnage calculateTax( ) A truck has three attributes: licenseNumber weight tonnage an

31、d two operations: register calculateTax 90 繼承關系繼承關系 關系也可以繼承 每個子類都可以分享繼承的關系 GroundVehicle licenseNumber weight register( ) A truck has an owner Car Truck tonnage calculateTax( ) Owner Person 1.* and a car has an owner 1 91 抽象的層次抽象的層次 定義類的層次時, 需要根據(jù)每個類和其它 類的關系來決定抽象的層次 Vehicle GroundVehicleAirVehicle Tr

32、uckAirplane Helicopter Ford class Ford is incorrectly placed at the same level as class Truck 92 普遍性的基準普遍性的基準 開發(fā)一個普遍性結構有不同的基準 地面交通工具的基準可能是: v 功能 (e.g., car, truck, . . .) v 顏色 (e.g., blue, white, red, . . .) v 制造商 (e.g., Chrysler, Fiat, Ford, . . .) v 國家 (e.g., U.S., Japan, Germany, . . .) 對于開發(fā)來說,最重

33、要的是選擇一個具有 代表性的基準, 在定義子類時能保持一致 93 普遍性的基準普遍性的基準 利用名字檢驗一致性利用名字檢驗一致性 GroundVehicle Truck FordHondaFiat class Truck is not defined on the same basis as the remaining subclasses 94 示例:多重繼承示例:多重繼承 一個兩棲交通工具同時繼承地面交通工具 和水上交通工具 Vehicle GroundVehicleAirVehicle Car Truck AmphibiousVehicle Sailboat 95 多重繼承多重繼承 在建

34、模中直觀、準確地反映現(xiàn)實世界 在實現(xiàn)中有可能帶來困難 v 名字沖突: 兩個或更多的子類定義了同樣的屬 性 和操作 v 重復繼承: 兩個或更多的同級父類有同一個子 類 每一個編程語言/環(huán)境都有解決的方法 并不是所有面向?qū)ο缶幊陶Z言都直接支持 多重繼承 僅僅當必需時使用多重繼承僅僅當必需時使用多重繼承 96 繼承的益處繼承的益處 增加軟件重用的機會 v 降低開發(fā)和維護費用 開發(fā)一個更貼近現(xiàn)實的模型 系統(tǒng)更加靈活 v 所有的子類自動繼承父類的改變 v 可以通過增加一個子類來處理需求的改變 保證類之間的一致性 v 父類可以為所有子類定制規(guī)則; (許多OOP 語言必須指定這類規(guī)則) v 繼承界面和實現(xiàn)過

35、程 v 支持多態(tài) 97 多態(tài)多態(tài) 多態(tài):利用一個單一的界面隱藏大量不同 的實現(xiàn)過程 客戶端可以調(diào)用一個對象的操作,不必了 解其類型 v 如果增加了支持相同操作的對象, 不需要重新 修改客戶端 允許客戶端操作其共有的父類的對象 98 繼承和多態(tài)繼承和多態(tài) 多態(tài)是一種更高級別的繼承 分析時,盡可能多地使用繼承,發(fā)揮重用 和多態(tài)的優(yōu)勢 在設計時需要修正分析時定義的繼承結構, 以便更好地運用多態(tài) 分析時, 應針對問題的本質(zhì)定義繼承 99 繼承繼承 vs. 聚合聚合 容易混淆 v 繼承是 “is-a” 或 “kind-of” 的關系 v 聚合是 “has-a” 的關系 替代法則:測試繼承關系 替代法則替

36、代法則 如果子類如果子類 D 的一個對象被替換為父類的一個對象被替換為父類 B 的一個的一個 對象對象, 在類在類 B 中定義的所有程序的行為應保持不中定義的所有程序的行為應保持不 變。變。 100 大型系統(tǒng),包大型系統(tǒng),包 大的系統(tǒng)模型需要定義很多類 包:類圖中緊密關聯(lián)的部分的組合, 有助 于更好地理解系統(tǒng) 包是系統(tǒng)中的邏輯“功能塊” 包的名字在整個系統(tǒng)中必須是唯一的 每個包完成系統(tǒng)的一個主要功能 PackageName 101 模型的組織模型的組織 一個類圖, 可以只包含包,稱作頂層類圖 頂層類圖揭示系統(tǒng)的邏輯結構, 也就是系統(tǒng)的層 次和部分 每個包都可由其它的包、類和關系組成 GUIWi

37、dgetsRegistration UserInterface Foundation Components global Registration System 102 103 104 類類類的實例類的實例類定義示例類定義示例 正方形正方形 邊長邊長 位置位置 邊界顏色邊界顏色 內(nèi)部顏色內(nèi)部顏色 畫圖畫圖 擦圖擦圖 移動移動 105 (0個或個或1個)個) (0個或多個)個或多個) 1+( (1個或多個)個或多個) 1 2,4( (12個或個或4個)個) 106 107 108 109 110 111 112 113 114 115 打打電電話話者者拿拿起起電電話話受受話話器器 電電話話忙忙音

38、音開開始始 打打電電話話者者撥撥數(shù)數(shù)字字( (8 8) ) 電電話話忙忙音音結結束束 打打電電話話者者撥撥數(shù)數(shù)字字( (2 2) ) . . . . . . . . 打打電電話話者者撥撥數(shù)數(shù)字字( (3 3) ) 接接電電話話者者的的電電話話開開始始振振鈴鈴 鈴鈴聲聲在在打打電電話話者者的的電電話話上上傳傳出出 接接電電話話者者回回答答 接接電電話話者者的的電電話話停停止止振振鈴鈴 鈴鈴聲聲在在打打電電話話者者的的電電話話中中消消失失 通通電電話話 . . . . . . . . . . 116 117 118 119 120 121 什么是用例(什么是用例(use case) 用例是幫助分析

39、員和用戶確定系統(tǒng)使用用例是幫助分析員和用戶確定系統(tǒng)使用 情況的情況的UML組件;組件; 一組用例就是從用戶的角度出發(fā)如何使一組用例就是從用戶的角度出發(fā)如何使 用系統(tǒng)的描述;用系統(tǒng)的描述; 可認為用例是系統(tǒng)的一組使用場景;可認為用例是系統(tǒng)的一組使用場景; 每個場景描述了一個事件的序列;每個場景描述了一個事件的序列; 每個序列是由一個人、另一個系統(tǒng)、一每個序列是由一個人、另一個系統(tǒng)、一 個硬件設備或某段時間的流逝所發(fā)起;個硬件設備或某段時間的流逝所發(fā)起; 每個發(fā)起事件序列的實體叫做每個發(fā)起事件序列的實體叫做參與者參與者 (actor)或或行動者行動者 122 用例建模 q用例建模是用于描述一個系統(tǒng)

40、應用例建模是用于描述一個系統(tǒng)應 該做什么的建模技術該做什么的建模技術 q用例建??捎糜谛孪到y(tǒng)的需求獲用例建??捎糜谛孪到y(tǒng)的需求獲 取,也可用于已有系統(tǒng)的升級取,也可用于已有系統(tǒng)的升級 123 用例模型(use case model) q一個用例模型可由若干幅用例圖組成一個用例模型可由若干幅用例圖組成 q用例描述了用戶和系統(tǒng)之間的交互,其重點是系統(tǒng)為用用例描述了用戶和系統(tǒng)之間的交互,其重點是系統(tǒng)為用 戶做什么戶做什么 q用例模型描述全部的用例模型描述全部的系統(tǒng)功能行為系統(tǒng)功能行為 q一幅用例圖包含的模型元素有:一幅用例圖包含的模型元素有: 用例用例 參與者(行為者、執(zhí)行者)參與者(行為者、執(zhí)行者) 系統(tǒng)系統(tǒng) 124 系統(tǒng)系統(tǒng)被看作提供用例的黑盒子被看作提供用例的黑盒子 一個一個用例用例是可以被行為者感受到的一個是可以被行為者感受到的一個 完整的功能完整的功能 行為者行為者是和用戶交互

溫馨提示

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

評論

0/150

提交評論