




已閱讀5頁,還剩86頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第一部分 基礎篇 面向對象的分析與設計 2 從程序設計方法的角度看 面向對象是一種新的程序設計范型 paradigm 其基本思想是使用對象 類 繼承 封裝 聚合 關聯(lián) 消息 多態(tài)性等基本概念來進行程序設計 自20世紀80年代以來 面向對象方法已深入到計算機軟件領域的幾乎所有分支 它不僅是一些具體的軟件開發(fā)技術與策略 而且是一整套關于如何看待軟件系統(tǒng)與現實世界的關系 用什么觀點來研究問題并進行問題求解 以及如何進行系統(tǒng)構造的軟件方法學 從這個意義上講 面向對象方法是一種運用對象 類 繼承 封裝 聚合 關聯(lián) 消息 多態(tài)性等概念來構造系統(tǒng)的軟件開發(fā)方法 1 1什么是面向對象 第1章面向對象方法概論 3 面向對象方法的基本思想 一 從現實世界中客觀存在的事物出發(fā)來構造系統(tǒng)強調直接以問題域 現實世界 中的事物為中心來思考問題 認識問題 并根據這些事物的本質特征 把它們抽象為系統(tǒng)中的對象 作為系統(tǒng)的基本構成單位 這可以使系統(tǒng)直接映射問題域 保持問題域中事物及其相互關系的本來面貌 二 充分運用人類日常的思維方法強調運用人類在日常的邏輯思維中經常采用的思想方法與原則 例如抽象 分類 繼承 聚合 封裝 關聯(lián)等等 這使得軟件開發(fā)者能更有效地思考問題 并以其他人也能看得懂的方式把自己的認識表達出來 4 主要特點 用類和對象作為系統(tǒng)的基本構成單位 對象對應問題域中的事物 其屬性和操作刻畫了事物的靜態(tài)特征和動態(tài)特征 它們之間的繼承關系 聚合關系 關聯(lián)和消息如實地表達了問題域中事物之間實際存在的各種關系 因此 無論系統(tǒng)的構成成分 還是通過這些成分之間的關系而體現的系統(tǒng)結構 都可直接地映射問題域 5 對問題域的認識 人 客觀世界 問題域 計算機 自然語言 語言的鴻溝 編程語言 語言的過渡 人 編程 人 程序的理解和執(zhí)行 機器 軟件開發(fā) 對事物的認識和描述問題 語言的鴻溝 1 2從認識論看面向對象方法的形成 6 計算機 自然語言 客觀世界 問題域 語言的鴻溝 語言的發(fā)展 鴻溝變窄 程序的指令 數據 地址 都是由二進制的 0 和 1 構成的 離機器最近 能夠直接地執(zhí)行 然而沒有絲毫形象的意義 離人類的思維最遠 7 問題域 測試 編程 計算機 編程語言 自然語言 需求分析 總體設計 詳細設計 軟件工程學的作用 傳統(tǒng)的軟件工程方法 8 問題域 OOA 計算機 自然語言 面向對象編程語言 OOD OOP OOT 軟件工程學的作用 面向對象的軟件工程方法 9 1 3面向對象方法的基本概念與原則 對象 類屬性 操作封裝繼承 一般 特殊結構聚合 整體 部分結構關聯(lián)消息多態(tài)持久對象 主動對象 10 對象是現實世界中某個實際存在的事物 它可以是有形的 比如一輛汽車 也可以是無形的 比如一項計劃 對象是構成世界的一個獨立單位 它具有自己的靜態(tài)特征和動態(tài)特征 屬性是用來描述對象靜態(tài)特征的一個數據項 操作是用來描述對象動態(tài)特征的一個動作序列 對象標識就是對象的名字 有 外部標識 和 內部標識 之分 對象 屬性 操作 11 抽象 類 一般類 特殊類 抽象與分類 忽略事物的非本質特征 只注意那些與當前目標有關的本質特征 從而找出事物的共性 叫做抽象 抽象是形成概念的基本手段 把具有共同性質的事物劃分為一類 叫做分類 類是具有相同屬性和操作的一組對象的集合 它為屬于該類的全部對象提供了統(tǒng)一的抽象描述 其內部包括屬性和操作兩個主要部分 類的作用是用來創(chuàng)建對象 對象是類的一個實例 12 不同程度的抽象可得到不同層次的分類 較多地忽略事物之間的差別可得到較一般的類 較多地注意事物之間的差別可得到較特殊的類 運輸工具 火車 汽車 飛機 卡車 轎車 輪船 車輛 13 定義1 如果類A具有類B的全部屬性和全部操作 而且具有自己特有的某些屬性或操作 則A叫做B的特殊類 B叫做A的一般類 一般類與特殊類又稱父類與子類 定義2 如果類A的全部對象都是類B的對象 而且類B中存在不屬于類A的對象 則A是B的特殊類 B是A的一般類 可以證明 以上兩種定義是等價的 一般類和特殊類的定義 14 封裝 把對象的屬性和操作結合成一個獨立的系統(tǒng)單位 并盡可能隱蔽對象的內部細節(jié) 封裝的重要意義 使對象能夠集中而完整地描述并對應一個具體的事物 體現了事物的相對獨立性 使對象外部不能隨意存取對象的內部數據 避免了外部錯誤對它的 交叉感染 對象的內部的修改對外部的影響很小 減少了修改引起的 波動效應 封裝帶來的問題 編程的麻煩執(zhí)行效率的損失解決辦法 不強調嚴格封裝 實行可見性控制 混合型OOPL 例如 C 15 繼承 特殊類擁有其一般類的全部屬性與操作 稱作特殊類對一般類的繼承 繼承意味著自動地擁有 或曰隱含地復制 繼承簡化了人們對事物的認識和描述 非常有益于軟件復用 是OO技術提高軟件開發(fā)效率的重要原因之一 由繼承機制保證 由一組具有繼承關系的類所組成的結構稱作一般 特殊結構 它是一個以類為結點 以繼承關系為邊的連通的有向圖 繼承關系的語義 isakindof 16 多繼承 允許一個特殊類具有一個以上一般類的繼承方式稱作多繼承 17 聚合 是兩個類之間的一個二元關系 它表示一個類的對象實例以另一個類的對象實例作為其組成部分 聚合刻畫了現實事物之間的構成關系或者擁有關系 聚合關系的語義 hasa 或 isapartof 緊密 固定的聚合方式又稱為組合 18 整體 部分結構 聚合關系又稱整體 部分關系 由一組具有聚合關系的類所形成的結構稱為整體 部分結構 它是一個以類為結點 以聚合關系為邊的連通有向圖 19 關聯(lián) 兩個或者多個類上的一個關系 即這些類的對象實例集合的笛卡兒積的一個子集合 其中的元素提供了被開發(fā)系統(tǒng)的應用領域中一組有意義的信息 20 用集合論的觀點和系統(tǒng)需求討論關聯(lián)概念 關聯(lián)是兩個或者多個類上的一個關系 其中的元素提供了被開發(fā)系統(tǒng)的應用領域中一組有意義的信息 例 設A和B是兩個類 它們的對象實例集合是A a1 a2 an B b1 b2 bm A和B的笛卡兒積A B 這個笛卡兒積集合中有n m個元素 它們可以組合成2 n m 個子集合 但是只有某個子集合中的元素提供了被開發(fā)系統(tǒng)的應用領域中一組有意義的信息時 才有必要把它定義為系統(tǒng)中的一個關聯(lián) 21 例如 在一個教學管理系統(tǒng)中有教師 學生 教務員課程等類 系統(tǒng)中需要表明每一門課程由哪位教師承擔 有哪些學生選修 因此需要在教師和課程之間定義一個關聯(lián) 在學生和課程之間也定義一個關聯(lián) 該系統(tǒng)的教務員要為學生做注冊 登記成績等工作 但是不需要區(qū)別是哪個教務員為哪個學生做的 因此就不需要在教務員和學生這兩個類之間定義關聯(lián) 教師 課程 學生 1 教務員 22 消息 消息是向對象發(fā)出的服務請求 目前在大部分面向對象的編程語言中 消息其實就是函數 或過程 調用 但是 函數調用只是實現消息的方式之一 上述理解只適合于順序系統(tǒng) 更一般的定義 消息是對象之間在一次交互中所傳送的信息 23 教師 課程 學生 1 糾正一種誤解 認為在任何兩個類之間只有存在關聯(lián)才可能存在消息 實際上 關聯(lián)和消息是兩個截然不同的概念 二者是相互獨立的 教務員 call 24 多態(tài) 多態(tài)是指同一個命名可具有不同的語義 OO方法中 常指在一般類中定義的屬性或操作被特殊類繼承之后 可以具有不同的數據類型或表現出不同的行為 實現機制 重寫 override 在特殊類中對繼承來的屬性或操作重新定義其實現 動態(tài)綁定 dynamicbinding 在運行時根據對象接收的消息動態(tài)地確定要連接哪一段操作代碼 類屬 generic 操作參量的類型可以是參數化的 百度討論 25 其他 持久對象 在程序運行結束后仍能繼續(xù)保存的對象超出了程序運行時間 跨越了內外存空間實現途徑 支持持久對象的OOPL OO DBMS 主動對象 至少有一個操作不需要接收消息就能主動執(zhí)行的對象 描述具有主動行為的事物描述并發(fā)執(zhí)行的多個控制流 26 面向機器面向代數面向過程面向數據面向人面向文件面向信息面向應用面向功能面向數據流 面向對象是軟件方法學的返樸歸真 軟件科學的發(fā)展歷程中出現過許多 面向 軟件開發(fā)從過分專業(yè)化的方法 規(guī)則和技巧中回到了客觀世界 回到了人們的日常思維 是軟件理論的返樸歸真 面向對象 27 1 雛形階段60年代挪威計算中心開發(fā)的Simula67 面向對象語言的先驅和第一個里程碑 首先引入了類的概念和繼承機制 70年代CLU 并發(fā)Pascal Ada和Modula 2等語言對抽象數據類型理論的發(fā)展起到重要作用 支持數據與操作的封裝 猶他大學的博士生AlanKay設計了一個實驗性的語言Flex 從Simula67中借鑒了許多概念 如類 對象 繼承等 1972年PaloAlno研究中心 PARC 發(fā)布了Smalltalk 72 其中正式使用了 面向對象 這個術語 Smalltalk的問世標志著面向對象程序設計方法的正式形成 但是這個時期的Smalltalk語言還不夠完善 1 4OO 面向對象 方法的發(fā)展歷史與現狀 28 PARC先后發(fā)布了Smalltalk 72 76 78等版本 直至1981年推出該語言最完善的版本Smalltalk 80 Smalltalk 80的問世被今認為是面向對象語言發(fā)展史上最重要的里程碑 迄今絕大部分面向對象的基本概念及其支持機制在Smalltalk 80中都已具備 它是第一個完善的 能夠實際應用的面向對象語言 但是 Smalltalk開始幾年的應用不夠廣泛 原因是 一種新的軟件方法學被廣泛接受需要一定的時間 商品化軟件開發(fā)工作到87年才開始進行 追求純OO的宗旨使許多軟件開發(fā)人員感到不便 2 完善階段 29 3 繁榮階段自80年代中期到90年代 是面向對象語言走向繁榮的階段 其主要表現是大批比較實用的OOPL的涌現 例如C Objective C ObjectPascal CLOS CommonLispObjectSystem Eiffel Actor等 OO編程語言分為純OO語言和混合型OO語言混合型語言是在傳統(tǒng)的過程式語言基礎上增加OO語言成分 在實用性方面具有更大的優(yōu)勢 此時的純OO語言也比較重視實用性 30 4 發(fā)展到軟件生存周期前期階段 計算機軟件領域的很多新的方法與技術都有這樣的發(fā)展經歷 例如 結構化方法 形式化方法 軟件復用 與其他方法相比 面向對象的方法與技術發(fā)展到軟件生命期的前期階段有著更為深刻的意義 面向對象方法從編程發(fā)展到設計 分析 進而發(fā)展到整個軟件生存周期 31 5 最新發(fā)展編程語言 語言 類庫 可視化編程環(huán)境例如 VisualC VisualBasic Delhpi分析與設計方法走向統(tǒng)一 形成統(tǒng)一建模語言UML結束各種方法的概念及表示法不一致的局面 32 在軟件生存周期全過程運用面向對象方法 L M Northrop 盡管面向對象語言正取得令人振奮的發(fā)展 但編程并不是軟件開發(fā)問題的主要根源 需求分析與設計問題更為普遍并且更值得解決 因此面向對象開發(fā)技術的焦點不應該只對準編程階段 而應更全面地對準軟件工程的其他階段 面向對象方法真正意義深遠的目標是它適合于解決分析與設計期間的復雜性并實現分析與設計的復用 面向對象的開發(fā)不僅僅是編程 必須在整個軟件生存周期采用一種全新的方法 這一觀點已被人們所接受 軟件工程百科全書 紐約 1994 33 第2章不同的分析與設計方法 幾種典型的建模方法功能分解法結構化方法信息建模法面向對象方法 本章內容結構 34 歷史上幾種典型的建模方法 2 1功能分解法 functiondecomposition 以系統(tǒng)需要提供的功能為中心來組織系統(tǒng) 首先定義各種功能 然后把功能分解為子功能對較大的子功能進一步分解 直到可給出明確的定義 根據功能 子功能的需要設計數據結構 定義功能 子功能之間的接口 沒有明確地區(qū)分分析與設計 建模過程 層層進行功能分解 35 功能模塊 功能模塊 功能模塊 功能模塊 功能模塊 功能模塊 功能模塊 功能模塊 功能模塊 功能模塊 得到的系統(tǒng)模型 由模塊及其接口構成 優(yōu)點與缺點 直接地反映用戶的需求 所以工作很容易開始 不能直接地映射問題域 很難檢驗結果的正確性 對需求變化的適應能力很差 局部的錯誤和修改很容易產生全局性的影響 36 2 2結構化方法結構化分析 structuredanalysis SA 結構化設計 structureddesign SD 結構化分析又稱數據流法 其基本策略是跟蹤數據流 即研究問題域中數據如何流動 以及在各個環(huán)節(jié)上進行何種處理 從而發(fā)現數據流和加工 得到的分析模型是數據流圖 DFD 主要模型元素是數據流 加工 文件及端點 外加處理說明和數據字典 結構化設計與功能分解法基本相同 基于模塊的概念建立設計模型 分為概要設計和詳細設計 概要設計 確定系統(tǒng)中包含哪些模塊以及模塊之間的調用關系 得到模塊結構圖 MSD 詳細設計 描述每個模塊內部的數據結構和操作流程 37 數據流 加工 文件 起點 處理說明 數據詞典 優(yōu)點 有嚴格的法則 強調研究問題域 缺點 仍然是間接映射問題域 與結構化設計的概念不一致 從分析到設計的過渡比較困難 數據流和加工的數量太多 引起分析文檔的膨脹 終點 38 2 3信息建模法 informationmodeling 由實體 關系法 E R方法 發(fā)展而來 核心概念是實體和關系 實體描述問題域中的事物 關系描述事物之間在數據方面的聯(lián)系 都可以帶有屬性 發(fā)展之后的方法也把實體稱作對象 并使用了類型和子類型的概念 作為實體 對象 的抽象描述 有人也稱之為面向對象方法 但有以下差別 1 強調的重點是信息建模和狀態(tài)建模 而不是對象建模 2 沒有把對實體屬性所進行的操作封裝到實體對象中 3 只有屬性的繼承 不支持操作的繼承 4 沒有采用消息通訊 實體 屬性 屬性 屬性 屬性 關系 實體 m n E R圖 信息模型 m n 對象屬性 關系屬性 對象屬性 39 2 4面向對象方法面向對象的分析 OOA 面向對象的設計 OOD 運用對象 類 繼承 封裝 聚合 關聯(lián) 消息 多態(tài)性等概念來構造系統(tǒng) 把問題域中的事物抽象為對象 作為系統(tǒng)的基本構成單位其屬性和操作刻畫了事物的靜態(tài)特征和動態(tài)特征 完整地刻畫了問題域中事物 用類作為對象的抽象描述 建立它們之間的繼承 聚合 關聯(lián) 消息等關系 如實地表達了問題域中事物之間的各種關系 封裝 繼承 聚合 關聯(lián) 消息通訊等原則符合人類的日常思維 使系統(tǒng)的復雜性得到控制 因此 得到的系統(tǒng)模型可以直接映射問題域 40 不同的建模方法體現于從不同的概念出發(fā)來認識問題域用不同的概念進行系統(tǒng)構造系統(tǒng)對現實世界的不同映射 41 審批 不同的方法對同一應用實例 電話安裝業(yè)務系統(tǒng) 的不同效果結構化分析 數據流和加工 登記 安裝 開通 問題 不是直接映射問題域 與問題域事物相關的數據和操作不是圍繞這些事物來組織的 而是分散在數據流和加工中 經常發(fā)生信息膨脹 模型中的多個數據流 實現中其實只是一項數據 分析模型難以與設計模型及源程序對應 用戶登記表 用戶登記表 用戶登記表 用戶登記表 文件 用戶信息 42 面向對象方法 對象及其關系 用戶登記表用戶名登記人審批人施工隊號碼登記審批安裝開通 用戶 營業(yè)員 主管人 施工隊 機房 1 1 1 call call call call 直接映射了問題域中的實際事物 能夠與程序形成良好的對應 43 顧名思義 面向對象的分析 OOA 就是運用面向對象方法進行系統(tǒng)分析 首先 OOA是分析 是軟件生存周期的一個階段 具有一般分析方法共同具有的內容 目標及策略 但是 它強調運用面向對象方法進行分析 用面向對象的概念和表示法表達分析結果 基本任務 運用面向對象的概念對問題域進行分析和理解 將問題域中與系統(tǒng)責任有關的事物抽象為系統(tǒng)中的類和對象 定義這些類和對象的屬性與操作 以及它們之間所形成的各種關系 最終目標 建立一個滿足用戶需求 直接映射問題域的OOA模型及其規(guī)約 2 4 1什么是OOA 問題 OOA是需求分析還是系統(tǒng)分析 44 2 4 2什么是OOD不同時期有不同內容及特點 早期 80年代末期之前 OOD的特點 1 不是基于OOA的大多基于結構化分析結果 數據流圖 2 是OO編程方法的延伸多數方法與編程語言有關 特別受Ada影響很大3 不是純OO的對某些OO概念 如繼承 缺少支持 攙雜一些非OO概念 如數據流 包 模塊等 4 不是只針對軟件生存周期的設計階段OOD中的 D 指的是Design或Development多少涉及分析問題 如識別問題域的對象 但很不徹底 早期的OOD可看作現今OOA D方法的雛形 45 定義 面向對象的設計 OOD 就在是OOA模型基礎上運用面向對象方法進行系統(tǒng)設計 目標是產生一個符合具體實現條件的OOD模型 現今 90年代以后 OOD的特點 1 以面向對象的分析為基礎 一般不依賴結構化分析 2 與相應的OOA方法共同構成一種OOA D方法體系 OOA和OOD采用一致的概念與原則 但屬于軟件生存周期的不同階段 有不同的目標及策略 3 較全面地體現面向對象方法的概念與原則 4 大多數方法獨立于編程語言 通過面向對象的分析與設計所得到的系統(tǒng)模型可以由不同的編程語言實現 46 軟件建模面臨的挑戰(zhàn) 1 問題域和系統(tǒng)責任復雜性日益增長問題域 problemdomain 被開發(fā)系統(tǒng)的應用領域 即在現實世界中由這個系統(tǒng)進行處理的業(yè)務范圍 系統(tǒng)責任 systemresponsibilities 所開發(fā)的系統(tǒng)應該具備的職能 隨著硬件性能的提高和價格的下降 軟件系統(tǒng)所面臨的問題域和系統(tǒng)責任越來越復雜 因此系統(tǒng)也越來越龐大 2 交流問題軟件系統(tǒng)的開發(fā)需要各類人員之間頻繁交流 領域的多樣性使軟件工程中的交流問題比與其他工程更為突出 有效的交流需要一種彼此都能理解的共同語言 否則將使彼此的思想難以溝通 很容易隱藏下許多錯誤 2 4 3OO方法的主要優(yōu)點 47 3 需求的不斷變化用戶因素 競爭因素 經費因素 開發(fā)者必須接受和適應需求變化 易變部分和穩(wěn)定部分 功能 最易變外部接口 很易變屬性 較易變對象 較穩(wěn)定 4 軟件復用的要求復用級別提高 分析結果復用要求分析模型的基本成分可以在多個系統(tǒng)中復用要求一個分析模型可以在多種條件下設計和實現 需求變化 系統(tǒng)局部修改 受影響部分修改 產生新錯誤 延長開發(fā)時間 48 面向對象方法的優(yōu)勢 對問題域和系統(tǒng)責任的復雜性具有較強的處理能力從問題域中的實際事物出發(fā)來構造系統(tǒng)模型 使系統(tǒng)模型能直接地映射問題域 繼承 封裝 聚合等概念使系統(tǒng)的復雜性得到有效的控制 提供了便于各類相關人員交流共同語言使用與問題域一致的概念及術語 體現人類的日常思維方式 為改進各類人員之間的交流提供了最基本的條件 對需求的變化具有較強的適應性按封裝原則把系統(tǒng)中最容易變化的因素隔離起來 系統(tǒng)的各個單元成分之間接口很少 把需求變化所引起的影響局部化 為實現分析與設計級別的軟件復用提供了有力支持OO方法的封裝 繼承 聚合等原則 對象的完整性 獨立性以及與問題域的良好對應 使之非常有利于軟件復用 貫穿軟件生存周期全過程的一致性從OOA開始使用與問題域一致的概念 詞匯 原則及表示法 這種一致性保持到設計 編程 測試 維護等各個階段 對于整個軟件生存周期的開發(fā) 維護及管理活動都具有重要的意義 49 Booch方法Coad Yourdon方法Firesmith方法Jacobson方法 OOSE Martin Odell方法Rumbaugh方法 OMT Seidewitz Stark方法Shlaer Mellor方法Wirfs Brock方法 2 4 4幾種典型的OO方法 方法的異同體現于 概念表示法系統(tǒng)模型開發(fā)過程可用性技術支持 50 Booch方法 必要時使用 用于分析和設計 6種模型圖 基本圖 通常不可缺少 類圖對象圖模塊圖進程圖 只用于設計 補充圖 狀態(tài)轉移圖交互圖 模型圖 51 開發(fā)期望行為模型 分析 建立體系結構 設計 逐漸形成實現 演化 建立核心需求 概念化 a 宏過程 識別類和對象 識別類和對象的語義 識別類和對象的關系 說明類和對象的接口和實現 b 微過程 管理交付后的演化 維護 特點 思想活躍 開拓與創(chuàng)新可操作性不夠強類圖與對象圖并存 過程 Booch方法 續(xù) 52 主題層類及對象層結構層屬性層服務層 OOA模型的5個層次 主題層類及對象層結構層屬性層服務層 人機交互部分 HIC 問題域部分 PDC 任務管理部分 TMC 數據管理部分 DMC OOD模型的5個層次和4個部分 Coad Yourdon方法 特點 概念簡練 過程清晰強調概念的一致性過程指導不夠具體 53 實體對象 界面對象 控制對象 三種對象 行為 表示 信息 三維的分析模型四維的設計模型 實現環(huán)境 需求說明 需求分析 健壯分析 需求模型 分析模型 需求模型 設計 實現 設計模型 實現模型 分析模型 需求模型 單元測試 組裝測試 實現模型 設計模型 系統(tǒng)測試 測試模型 分析過程 構造過程 測試過程 Jacobson方法 OOSE 特點 通過用況描述用戶需求用交互圖描述對象之間的交互用況驅動的觀點言之有過 54 三個模型 Rumbaugh方法 OMT 過程 分析 面向對象 系統(tǒng)設計 傳統(tǒng)方法 對象設計 面向對象 實現 特點 概念嚴謹 闡述清楚過程具體 可操作性強包含了許多非OO的內容提出若干擴充概念 偏于復雜 55 上述這些方法的共同點是什么 分組討論總結 56 支持3種基本的活動 系統(tǒng)的基本模型識別對象和類描述對象和類之間的關系通過描述每個類的功能定義對象的行為 57 各種面向對象的分析與設計方法都為面向對象理論與技術的發(fā)展做出了貢獻 這些方法各有自己的優(yōu)點和缺點 同時在各自不同范圍內擁有自己的用戶群 各種方法的主導思想以及所采用的主要概念與原則大體上是一致的 但是也存在不少差異 這些差異所帶來的問題是 不利于面向對象方法向一致的方向發(fā)展 也會給用戶的選擇帶來一些困惑 58 第3章統(tǒng)一建模語言UML簡介 3 1UML的背景與發(fā)展歷史3 2UML1概況3 3UML2概況 主要組成部分元模型體系結構具體元類和抽象元類各種圖和擴展機制 UML2的四個規(guī)范圖的增加和主要變化 59 面向對象方法種類繁多1989年約10種 1994年達到50種以上概念 表示法 過程策略及文檔組織等方面的差異使用戶在選擇建模方法和工具時無所適從不利于技術交流迫切需要OO概念及表示法走向統(tǒng)一和標準化統(tǒng)一建模語言UML應運而生 誕生背景 UML的背景與發(fā)展歷史 60 發(fā)展歷史第一階段 OO方法學家的聯(lián)合行動1995 10 G Booch與J Rumbaugh聯(lián)合推出UnifiedMethod0 81996 6 I Jacobson加入推出UML0 9 UnifiedModelingLanguage 不再稱 方法 而改稱 建模語言 第二階段 公司的聯(lián)合行動1996 成立了UML伙伴組織 12家公司加入1997 1 推出UML1 0 另外5家公司加盟1997 9 形成UML1 1 提交OMG作為建模語言規(guī)范提案1997 11 UML1 1被OMG正式采納 61 第三階段 OMG主持下的修訂1997 2002 OMG成立UML修訂任務組主持UML的修訂先后產生UML1 2 UML1 3 UML1 4 UML1 5等版本 UML1 3和UML1 4是兩個最重要的修訂版本 第四階段 UML的重大修訂 UML21999 開始醞釀 旨在產生比UML1有顯著改進的新版本2000 2001 由OMG陸續(xù)發(fā)布了4個提案需求 RFP 征集提案 擇優(yōu)采納2002年之后先后形成4個UML2 0規(guī)范在OMG的組織下繼續(xù)修訂和改進 目前最新的版本是UML2 4 62 UML是什么不是什么 1 是一種建模語言 不是一種建模方法 Rational統(tǒng)一過程 不是UML的一部分2 用于建立系統(tǒng)的分析模型和設計模型 而不是用于編程3 是一種已被OMG采納的建模語言規(guī)范 specification 正式場合一般不稱作 標準 standard 4 部分地采用了形式化語言的定義方式 但并不嚴格不是一種形式化語言 不能編譯執(zhí)行或解釋執(zhí)行 統(tǒng)一建模語言 UML 是一種用來對軟件密集型系統(tǒng)制品進行可視化 詳述 構造和建檔的圖形語言 也可用于業(yè)務建模以及其它非軟件系統(tǒng) 63 UML1規(guī)范的主要構成部分 1 UML概要 UMLSummary 對UML做概括介紹 包括其構成 動機 目標 范圍 特點 歷史 現狀以及對未來演化的建議 2 UML語義 UMLSemantics 定義UML的語法和語義 是定義UML語言的基本文件 3 UML表示法指南 UMLNotationGuide 定義UML的各種模型圖給出各種圖中建模元素的可視化表示法 UML1概況 64 4 UML外廓范例 UMLExampleProfiles 用于軟件開發(fā)過程的UML外廓用于業(yè)務建模的UML外廓 5 UML模型交換 UMLModelInterchange 規(guī)定了建模工具在實現各種UML模型時需要共同遵守的語言約定 使來自不同廠商的建模工具能夠彼此交換和處理各自開發(fā)的系統(tǒng)模型 6 對象約束語言OCL ObjectConstraintLanguage 定義了一種對象約束語言 用來描述模型中關于對象的附加約束 是一種形式化的語言 65 定義建模語言的語言元 元模型層 實例化 抽象 實例化 實例化 元 元模型 meta metamodel 元模型的基礎體系結構 定義一種說明元模型的語言 例如 MOF元模型 metamodel 元 元模型的一個實例 定義一種說明模型的語言例如 UML模型 model 元模型的一個實例 定義一種語言來描述信息領域 例如 教學管理系統(tǒng) 教室類 學生類 課程類用戶對象 userobject 模型的一個實例 定義一個特定的信息領域 例如 一個學校 某老師 某學生 某課程 OMG的四層元模型體系結構 66 抽象元類和具體元類 類 類型 接口 構件 結點 關聯(lián) 泛化 依賴 類目 關系 可泛化元素 模型元素 元素 具體元類 抽象元類 classifier 67 UML1的9種模型圖 靜態(tài)結構圖 StaticStructureDiagram 類圖 ClassDiagram 對象圖 ObjectDiagram 用況圖 UseCaseDiagram 交互圖 InteractionDiagram 順序圖 SequenceDiagram 協(xié)作圖 CollaborationDiagram 狀態(tài)圖 StatechartDiagrams 活動圖 ActivityDiagrams 實現圖 ImplementationDiagrams 構件圖 ComponentDiagram 部署圖 DeploymentDiagram 九種圖支持用戶從不同的視角進行系統(tǒng)建模 68 關聯(lián) 類 對象 鏈 元模型中的實例級概念引起體系結構層次的混亂 69 擴展機制 附加到其他模型元素之上以 將原有的建模元素特化成一種語義較特殊的新變種 或者表示出它們的某些細節(jié) 約束 constraint 用于說明某些必須保持為真的命題 注釋 comment 對模型元素的細節(jié)所進行的解釋 標記值 TaggedValue 表示模型元素的附加的特征 衍型 stereotype 附加到其他模型元素之上 從而將原有的建模元素定制成一種語義較為特殊的新變種 衍型的表示法和例子 active 類名 類名 界面 類名 關鍵詞或圖標 70 UML2的四個規(guī)范 UML2概況 71 UML2的13種模型圖 圖 結構圖 行為圖 交互圖 類圖 構件圖 對象圖 活動圖 用況圖 狀態(tài)機圖 部署圖 順序圖 通訊圖 組合結構圖 包圖 交互概覽圖 定時圖 支持用戶從不同的視角進行系統(tǒng)建模 72 UML與UML2的各種圖的對照 73 學習建議 1 重點掌握UML直接提供給應用模型開發(fā)者使用的建模元素 即 具體元類 熟練地掌握面向對象方法最基本的概念 2 在13種圖中 重點掌握類圖 用況圖 順序圖 活動圖狀態(tài)機圖 構件圖 3 著眼于實際應用 從UML的復雜性中解放出來 4 切記 UML只是一種建模語言 不是建模方法 它不包括過程 而且是獨立于過程的 根據本單位的實際情況選擇適當的過程 5 動手實踐 使用工具 選擇合適的項目開始實際應用 74 4 1引言 本書的宗旨 充分運用面向對象方法的基本概念 限制擴充概念以往某些OO方法提出了許多擴充概念 問題是 使方法復雜化 增加學習難度和工程開銷缺乏編程語言支持 造成模型與源程序不一致加強過程指導給出運用最基本的OO概念自然而有效地解決建模問題的策略 包括那些在其他方法中采用擴充概念解決的問題 強調在類的抽象層次上建立系統(tǒng)模型所有對象的屬性和操作以及對象之間的關系 都通過它們的類來描述 而不是針對個別對象實例進行描述 第4章本書的OOA D方法概貌 75 面向對象的概念包括以下兩種情況 1 用來構成系統(tǒng)模型的某種基本成分 稱為建模元素 2 在建模中需要遵守的某種原則 不代表任何模型成分 4 2主要概念 主要建模元素對象 類 所有的對象都通過類來表示 屬性 操作 類屬性和實例屬性 被動操作和主動操作 一般 特殊關系 一般 特殊結構整體 部分關系 整體 部分結構關聯(lián) 二元關聯(lián) 多元關聯(lián) 消息 控制流內部的消息 控制流之間的消息 76 主要原則 1 抽象什么叫抽象 回顧定義 OO方法廣泛地運用抽象原則 例如 系統(tǒng)中的對象是對現實世界中事物的抽象 類是對象的抽象 一般類是對特殊類的進一步抽象 屬性是事物靜態(tài)特征的抽象 操作是事物動態(tài)特征的抽象 過程抽象任何一個完成確定功能的操作序列 其使用者都可把它看作一個單一的實體 盡管實際上它可能是由一系列更低級的操作完成的 數據抽象根據施加于數據之上的操作來定義數據類型 并限定數據的值只能由這些操作來修改和觀察 77 2 分類分類就是把具有相同屬性和操作的對象劃分為一類 用類作為這些對象的抽象描述 不同程度的抽象可得到不同層次的類 形成一般 特殊結構 又稱分類結構 強調 在類的抽象層次上建模 3 封裝 4 繼承 5 聚合 6 關聯(lián) 7 消息通信即要求對象之間只能通過消息進行通訊 而不允許在對象之外直接地存取對象內部的屬性 78 8 粒度控制人們在研究問題時既需要微觀的思考 也需要宏觀的思考 因此需要控制自己的視野 考慮全局時 注重其大的組成部分 暫時不詳察每一部分的具體的細節(jié) 考慮某部分的細節(jié)時則暫時撇開其余的部分 這就是粒度控制原則 引入包 package 的概念 把模型中的類按一定的規(guī)則進行組合 形成一些包 使模型具有大小不同的粒度層次 從而有利于人們對復雜性的控制 79 9 行為分析 以對象為單位描述系統(tǒng)中的各種行為任何行為都歸屬于某個對象 用對象的操作表示 對象的操作只作用于對象自身的屬性 通過消息描述對象之間的行為依賴關系如果一個對象操作的執(zhí)行需要另一個對象為它提供服務 則在模型中表現為前者向后者發(fā)送消息 認識行為的起因 區(qū)分主動行為和被動行為用主動對象的主動操作描述主動行為用對象的被動操作描述被動行為 認識系統(tǒng)的并發(fā)行為在分析階段根據 根據系統(tǒng)的需求和事物的主動性來認識系統(tǒng)的并發(fā)行為 在設計階段 根據具體的實現條件確定系統(tǒng)中需要設計哪些控制流 80 4 3模型及其規(guī)約在分析階段和設計階段建立的系統(tǒng)模型分別稱為OOA模型和OOD模型正規(guī)理解 一個系統(tǒng)模型 應包括建模過程中產生的圖形 文字等各種形式的文檔 因為 所謂 模型 是指某一級別上的系統(tǒng)抽象描述 構成這種描述的任何資料都是模型的一部分 習慣說法 目前大部分OOA OOD著作談到 模型 一般是指OOA或OOD過程中產生的圖形文檔 本書采用習慣說法 將模型和模型規(guī)約分別討論OOA和OOD模型包括需求模型 基本模型和輔助模型 通過模型規(guī)約做詳細說明 81 基本模型 類圖面向對象的建模中最重要 最基本的模型圖集中而完整地體現了面向對象的概念為面向對象的編程提供了直接 可靠的依據可以從三個層次來看 需求模型 用況圖每個用況是一項系統(tǒng)功能使用情況的說明 把每一類參與者對每一項系統(tǒng)功能的使用情況確切地描述出來 便全面地定義了系統(tǒng)的功能需求 輔助模型 其他各種圖對類圖起到輔助作用 提供更詳細的建模信息 或者從不同的視角來描述系統(tǒng) 例如包圖 順序圖 活動圖等 模型規(guī)約對上述各種模型圖及其模型元素的詳細而確切的定義和解釋 82 OOA模型框架 基本模型 類圖 模型規(guī)約 需求模型 用況圖
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度婚姻介紹所涉外婚姻服務合同
- 二零二五餐飲業(yè)商鋪租賃合同附贈會員管理系統(tǒng)合作
- 2025年宜賓貨運從業(yè)資格考題
- 村支部書記發(fā)言稿
- 殘聯(lián)疫情發(fā)言稿
- 吉安市房屋租賃合同
- 小紅書平臺獨家代理運營合同
- 藝術設計現代藝術理論題詳解
- 廚房發(fā)言稿200字
- 醫(yī)療設備采購合同協(xié)議書
- 計算機技術碩士專業(yè)學位授權點申報研究演示課件(PPT 39頁)
- 建筑裝飾材料與構造-ppt課件
- AWS D1.8 D1.8M-2021 結構焊接規(guī)范
- 剪紙藝術-認識剪紙
- 駕駛員違規(guī)違章學習記錄表
- 簡易瞬態(tài)工況法1
- 中國鐵路總公司環(huán)境保護管理辦法(鐵總計統(tǒng)〔2015〕260號)
- 檢驗批分部分項工程質量驗收匯總表
- 技術分析介紹教程課件
- 汽車新能源汽車產業(yè)專利趨勢分析
- 故事小羊過橋PPT課件
評論
0/150
提交評論