面向對象的設計課件_第1頁
面向對象的設計課件_第2頁
面向對象的設計課件_第3頁
面向對象的設計課件_第4頁
面向對象的設計課件_第5頁
已閱讀5頁,還剩165頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

軟件工程導論劉春計算機與信息工程學院軟件工程系軟件工程導論劉春兩種軟件開發(fā)方法結構化方法面向對象方法兩種軟件開發(fā)方法結構化方法面向對象方法3回顧結構化設計方法概述結構化設計的基本概念兩種數(shù)據(jù)流類型:變換型和事務型系統(tǒng)體系結構的描述工具:系統(tǒng)結構圖結構化設計過程概要設計變換分析事務分析詳細設計案例:圖書訂購系統(tǒng)3回顧結構化設計方法概述變換分析是一系列設計步驟的總稱,經(jīng)過這些步驟把具有變換流特點的數(shù)據(jù)流圖映射成為一個預定義的程序結構模板。變換分析的步驟:1.對DFD圖的分析和劃分2.進行第一級分解,設計頂層和第一層模塊3.第二級分解,設計中、下層模塊概要設計:變換分析變換分析是一系列設計步驟的總稱,經(jīng)過這些步驟把具有變換流特點第九講:面向對象的設計課件1,第一層分解,設計頂層和第一層1,第一層分解,設計頂層和第一層第一層分解的另外一種畫法第一層分解的另外一種畫法1,第一層分解,設計頂層和第一層2,第二層分解1,第一層分解,設計頂層和第一層2,第二層分解1,第一層分解,設計頂層和第一層2,第二層分解1,第一層分解,設計頂層和第一層2,第二層分解1,第一層分解,設計頂層和第一層2,第二層分解1,第一層分解,設計頂層和第一層2,第二層分解第九講:面向對象的設計課件事務:引起式、觸發(fā)式啟動單一動作或一串動作的任何數(shù)據(jù)、控制、信號、事件或狀態(tài)變化。事務分析:由事務型數(shù)據(jù)流圖映射為軟件結構的過程。概要設計:事務分析事務:引起式、觸發(fā)式啟動單一動作或一串動作的任何數(shù)據(jù)、控制、(1)確定輸入、事務變換和輸出路徑的集合(劃分集合)。(2)根據(jù)事務的功能設計—個總控模塊(設計總控)。(3)確定頂層模塊和第一層模塊(建立映射)。(4)繼續(xù)下層分解(遞歸自展)。事務分析的具體過程(1)確定輸入、事務變換和輸出路徑的集合(劃分集合)。事務第九講:面向對象的設計課件第九講:面向對象的設計課件第九講:面向對象的設計課件變換-事務混合:一個數(shù)據(jù)流圖中既有變換又有事務分析策略:以一種分析(比如以變換分析)為主,另一種分析為輔概要設計:變換-事務混合型分析變換-事務混合:一個數(shù)據(jù)流圖中既有變換又有事務概要設計:變換變換-事務混合型分析變換-事務混合型分析第九講:面向對象的設計課件兩種軟件開發(fā)方法結構化方法面向對象方法兩種軟件開發(fā)方法結構化方法面向對象方法面向對象方法面向對象分析(ObjectOrientedAnalysis,OOA)分析和理解問題域,找出描述問題域和系統(tǒng)責任所需的類及對象,分析它們的內(nèi)部構成和外部關系,建立OOA模型。面向對象設計(ObjectOrientedDesign,OOD)將OOA模型直接變成OOD模型,并且補充一些與實現(xiàn)有關的部分,如:算法、人機界面、數(shù)據(jù)存儲、任務管理等。面向對象編程(ObjectOrientedProgramming,OOP)用一種面向對象的編程語言將OOD模型中的各個成分編寫成程序面向對象的測試(ObjectOrientedTesting,OOT)面向對象軟件維護(ObjectOrientedSoftwareMaintenance,OOSM)21面向對象方法面向對象分析(ObjectOriented22用例驅動的面向對象分析用例建模:建立用戶的需求模型,由用例圖體現(xiàn)具體過程:定義系統(tǒng)、確定參與者、確定用例、描述用例、確定用例之間的關系、評審用例模型對象建模建立系統(tǒng)的分析模型,由類圖體現(xiàn)具體過程:理解用例、識別類和類的屬性、識別類的操作、確定類與類之間的關系、評審模型22用例驅動的面向對象分析用例建模:第九講:面向對象的設計課件對用例“開戶”進行分析之后得到的類圖對用例“開戶”進行分析之后得到的類圖第九講:面向對象的設計課件26第十章面向對象設計方法26第十章27內(nèi)容提綱面向對象設計方法概述系統(tǒng)設計軟件體系結構設計硬件體系結構設計詳細設計對象設計對象持久化設計面向對象的設計原則設計模式27內(nèi)容提綱面向對象設計方法概述主要考慮“如何實現(xiàn)”的問題,將面向對象分析創(chuàng)建的分析模型,轉變?yōu)樽鳛檐浖嬙焖{圖的設計模型。不僅要說明為實現(xiàn)需要必須引入的類、對象及它們之間是如何關聯(lián)的,描述對象間如何傳遞消息和對象的行為如何實現(xiàn),還必須從提高軟件設計質量和效率方面考慮如何改進類結構和可復用類庫中的類。面向對象設計方法概述主要考慮“如何實現(xiàn)”的問題,將面向對象分析創(chuàng)建的分析模型,轉系統(tǒng)設計:包括如何把整個系統(tǒng)分解為子系統(tǒng)、子系統(tǒng)的軟硬件布局等策略性決策詳細設計:根據(jù)具體的實現(xiàn)策略,對分析模型進行擴充設計評審:對所設計的系統(tǒng)和系統(tǒng)設計規(guī)格說明報告逐一進行嚴格審查,檢查是否達到系統(tǒng)設計功能要求面向對象設計的主要內(nèi)容系統(tǒng)設計:面向對象設計的主要內(nèi)容包括軟件系統(tǒng)體系結構設計和硬件系統(tǒng)體系結構設計

。軟件系統(tǒng)體系結構是對系統(tǒng)的類、對象、接口以及相互間的交互和協(xié)作進行描述。硬件系統(tǒng)體系結構是要對系統(tǒng)的構件、節(jié)點的配置進行描述。系統(tǒng)設計包括軟件系統(tǒng)體系結構設計和硬件系統(tǒng)體系結構設計。系統(tǒng)設計軟件系統(tǒng)體系結構把系統(tǒng)的各種功能分配到系統(tǒng)的不同組織部分,并詳細地描述各個組織部分之間是如何協(xié)調(diào)工作來實現(xiàn)這些功能的。軟件系統(tǒng)體系結構模型的作用是:指明系統(tǒng)應該具有的功能完成這些功能所涉及哪些類,這些類之間如何相互聯(lián)系類和它們的對象如何協(xié)作才能實現(xiàn)這些功能指明系統(tǒng)中各功能實現(xiàn)的先后時間順序軟件系統(tǒng)體系結構設計軟件系統(tǒng)體系結構把系統(tǒng)的各種功能分配到系統(tǒng)的不同組織部分,并分層的思路是將系統(tǒng)按功能職責進行劃分,將同一類職責的功能抽象為一層在信息系統(tǒng)中軟件架構通常采用典型的三層結構:表示層――用戶界面業(yè)務層――業(yè)務處理流程數(shù)據(jù)層――持久化存儲數(shù)據(jù)層在業(yè)務層中是可見的,業(yè)務層在表示層中是可見的,反之則不可見體系結構設計的一種策略:分層分層的思路是將系統(tǒng)按功能職責進行劃分,將同一類職責的功能抽象包(package)是一種邏輯分組手段,可以取UML模型中的任何一種事物,將相關成分聚在一起,以構成更高層的組織單元最常用的方法是將類以包為單位進行分組,比如三層結構中的每一層中的所有類組成一個包一個包可以包含其它的包,高層包被分成若干子包,子包又可以在分成更小的包軟件體系結構的描述工具:包包(package)是一種邏輯分組手段,可以取UML模型中的軟件體系結構設計:如何分包分包:軟件類的分組兩種原則:共同封閉原則:一個包中的各個類應該是由于相似的原則而改變,即將一組職責相似、但以不同方式實現(xiàn)的類歸為一個包中。比如按照層來進行分包就是這種類型。共同復用原則:一個包中的各個類應該一起被復用,復用其中一個可能需要同時考慮同一個包中的其它協(xié)作類。軟件體系結構設計:如何分包分包:軟件類的分組軟件體系結構的表示:包圖包圖用來描述包及其依賴關系當表示層包中的類要使用業(yè)務包中的業(yè)務類提供的服務時,表示包就依賴于業(yè)務包。軟件體系結構的表示:包圖包圖用來描述包及其依賴關系將信息系統(tǒng)中比較關心的對象分層,可分為三層:用戶界面層、業(yè)務層、數(shù)據(jù)訪問層,再把各層中的一些公共部分提出來:權限管理、異常處理,這樣得到包圖如下:軟件體系結構的設計:以信息系統(tǒng)為例將信息系統(tǒng)中比較關心的對象分層,可分為三層:用戶界面層、業(yè)務用戶界面層的職責是:與用戶的交互,接收用戶的各種輸入以及輸出各種提示信息或處理結果。對于輸入的數(shù)據(jù)進行數(shù)據(jù)校驗,過濾非法數(shù)據(jù)。向業(yè)務處理對象發(fā)送處理請求。1、用戶界面層用戶界面層的職責是:1、用戶界面層2、業(yè)務處理包業(yè)務處理層的職責是:實現(xiàn)各種業(yè)務處理邏輯或處理算法。驗證請求者的權限。向數(shù)據(jù)訪問對象發(fā)送數(shù)據(jù)持久化操作的請求。向用戶界面層返回處理結果。2、業(yè)務處理包業(yè)務處理層的職責是:3、數(shù)據(jù)訪問包數(shù)據(jù)訪問層的職責是:實現(xiàn)數(shù)據(jù)的持久化操作實現(xiàn)事務處理

3、數(shù)據(jù)訪問包數(shù)據(jù)訪問層的職責是:權限管理的主要職責是:驗證請求者的請求權限提供請求者的權限列表

注:業(yè)務處理對象通過權限管理對象來驗證權限

4、權限管理包權限管理的主要職責是:注:業(yè)務處理對象通過權限管理對象來驗證5、異常處理包異常處理的職責:匯報運行時的詳細異常信息記錄異常處理日志5、異常處理包異常處理的職責:6、信息系統(tǒng)的體系結構的類圖

6、信息系統(tǒng)的體系結構的類圖7、體系結構的動態(tài)圖7、體系結構的動態(tài)圖子系統(tǒng)當按照業(yè)務功能或管理職能組織包,并對這樣的包進行徹底的封裝實現(xiàn)后,一個高層的具有特定功能的可以運行的獨立構件就產(chǎn)生了,稱為子系統(tǒng)(subsystem)子系統(tǒng)及其關系使用構件圖描述子系統(tǒng)與包的區(qū)別子系統(tǒng)具有自身獨立的功能,是物理的具體軟件單位,而包只是軟件對象的邏輯組織方式軟件體系結構設計:子系統(tǒng)(1)子系統(tǒng)軟件體系結構設計:子系統(tǒng)(1)子系統(tǒng)的接口子系統(tǒng)對外可以提供有限的接口,只要接口不改變,不管子系統(tǒng)內(nèi)部發(fā)生什么變化,也不會影響到依賴于該子系統(tǒng)接口的其它子系統(tǒng)財務子系統(tǒng)將內(nèi)部操作進行了封裝,但對外提供必要的接口。銷售子系統(tǒng)在執(zhí)行銷售業(yè)務過程中可以使用該接口對銷售數(shù)據(jù)執(zhí)行某些財務操作。對于銷售子系統(tǒng)而言,依賴的是財務子系統(tǒng)的接口,并不需要關心財務子系統(tǒng)的具體實現(xiàn)。軟件體系結構設計:子系統(tǒng)(2)子系統(tǒng)的接口軟件體系結構設計:子系統(tǒng)(2)46內(nèi)容提綱面向對象設計方法概述系統(tǒng)設計軟件體系結構設計硬件體系結構設計詳細設計對象設計對象持久化設計面向對象的設計原則設計模式46內(nèi)容提綱面向對象設計方法概述建立硬件系統(tǒng)體系結構模型硬件系統(tǒng)體系結構模型顯示硬件的結構,包括不同的節(jié)點和這些節(jié)點之間如何連接它還用圖形展示了代碼模塊的物理結構和依賴關系硬件體系結構設計建立硬件系統(tǒng)體系結構模型硬件體系結構設計指出系統(tǒng)中的類和對象涉及的具體程序或進程。指明系統(tǒng)中配置的計算機和其他硬件設備。指明系統(tǒng)中各種計算機和硬件設備如何進行相互連接。明確不同代碼文件之間的相互依賴關系。硬件體系結構模型指出系統(tǒng)中的類和對象涉及的具體程序或進程。硬件體系結構模型硬件體系結構的描述工具:配置圖硬件體系結構的描述工具:配置圖50內(nèi)容提綱面向對象設計方法概述系統(tǒng)設計軟件體系結構設計硬件體系結構設計詳細設計對象設計對象持久化設計面向對象的設計原則設計模式50內(nèi)容提綱面向對象設計方法概述主要包括對象設計和對象持久化設計(數(shù)據(jù)庫設計)對象設計:

系統(tǒng)設計相當于大樓的建筑平面圖,規(guī)定了每個房間的用途,以及房間與房間之間、房間與外部環(huán)境之間的連接機制。對象設計著重于每個房間的內(nèi)部細節(jié)對象持久化設計:

解決對象數(shù)據(jù)的存儲和檢索詳細設計主要包括對象設計和對象持久化設計(數(shù)據(jù)庫設計)詳細設計對象設計的主要任務:定義對象完整的接口設計對象內(nèi)部結構詳細設計:對象設計對象設計的主要任務:詳細設計:對象設計對象的接口也稱為對象的協(xié)議、對象的界面。接口提供了一種方法,把對象的功能說明與具體實現(xiàn)區(qū)分開來,使得任何依賴和使用接口的客戶不必依賴于接口的具體實現(xiàn),有利于接口實現(xiàn)的替換。

接口描述可以用UML中類圖一樣的符號,省略屬性部分,《interface》要包含在類名部分中。定義對象的完整接口對象的接口也稱為對象的協(xié)議、對象的界面。定義對象的完整接口對屬性和操作進行建模屬性建模:確定屬性的類型和數(shù)據(jù)結構、可見性等將所有屬性的可見性設置為private僅通過set方法更新屬性僅通過get方法訪問屬性在屬性的set方法中,實現(xiàn)簡單的有效性驗證,而在獨立的驗證方法中實現(xiàn)復雜的邏輯驗證操作建模:確定操作的可見性、參數(shù)、返回值、算法等設計實現(xiàn)服務的算法。定義內(nèi)部類和內(nèi)部操作設計對象內(nèi)部結構對屬性和操作進行建模設計對象內(nèi)部結構第九講:面向對象的設計課件在狀態(tài)建模中,狀態(tài)通過對象屬性的值來表示,狀態(tài)轉移是操作調(diào)用的結果,經(jīng)常會反映業(yè)務規(guī)則對象設計的進一步:狀態(tài)建模在狀態(tài)建模中,狀態(tài)通過對象屬性的值來表示,對象設計的進一步:57內(nèi)容提綱面向對象設計方法概述系統(tǒng)設計軟件體系結構設計硬件體系結構設計詳細設計對象設計對象持久化設計面向對象的設計原則設計模式57內(nèi)容提綱面向對象設計方法概述關注的是對象數(shù)據(jù)如何存儲數(shù)據(jù)存儲管理的一般模式文件管理模式關系數(shù)據(jù)庫管理系統(tǒng)面向對象數(shù)據(jù)庫管理系統(tǒng)詳細設計:對象持久化設計關注的是對象數(shù)據(jù)如何存儲詳細設計:對象持久化設計關系數(shù)據(jù)庫與面向對象中的概念存在一定的對應對象持久化設計的方法:基于關系數(shù)據(jù)庫存儲關系數(shù)據(jù)庫與面向對象中的概念存在一定的對應對象持久化設計的方永久類的存儲設計永久類一般都是實體類,對應的是系統(tǒng)中涉及的數(shù)據(jù)每一個永久類映射為一個關系表,表格的列或字段對應類的屬性,而行或記錄對應類的實例(對象)關聯(lián)的存儲設計1:1關聯(lián):在一個類對應的表中用外鍵隱含管理1:n關聯(lián):在n端類對應的表中用外鍵隱含關聯(lián)n:n關聯(lián):轉換成1:n管理,然后按照上面的方法進行轉換基于關系數(shù)據(jù)庫的對象持久化設計永久類的存儲設計基于關系數(shù)據(jù)庫的對象持久化設計1:1關聯(lián)1:1關聯(lián)1:n關聯(lián)1:n關聯(lián)63內(nèi)容提綱面向對象設計方法概述系統(tǒng)設計軟件體系結構設計硬件體系結構設計詳細設計對象設計對象持久化設計面向對象的設計原則設計模式63內(nèi)容提綱面向對象設計方法概述系統(tǒng)設計審查就是對所設計的系統(tǒng)和系統(tǒng)設計規(guī)格說明報告逐一進行嚴格審查,檢查是否達到系統(tǒng)設計功能要求。如果發(fā)現(xiàn)系統(tǒng)功能沒有達到用例的要求或有遺漏,一次返回逐步檢查,找到問題所在,補充設計實現(xiàn)其功能。這是一個反復迭代的過程。追求一個好的設計,以及設計完成后評價它是不是好的設計,不是一個籠統(tǒng)的概念,有一些具體的評價準則。評審設計系統(tǒng)設計審查就是對所設計的系統(tǒng)和系統(tǒng)設計規(guī)格說明報告逐一進行單一職責原則開放-封閉原則接口隔離原則Liskov替換原則依賴倒置原則面向對象設計原則單一職責原則面向對象設計原則一個類只完成某一類功能(職責)盡可能避免出現(xiàn)一個“復合”功能的類——在同一個類中完成多個不同的功能1、單一職責原則一個類只完成某一類功能(職責)1、單一職責原則第九講:面向對象的設計課件開放?封閉原則:軟件實體類(類、模塊、函數(shù)等)應該是可以擴展、但是不可修改的基本思想:不用修改原有類就能擴展一個類的行為2、開放?封閉原則開放?封閉原則:軟件實體類(類、模塊、函數(shù)等)應該是可以擴展什么是不封閉、不開放如下的模型可以處理月薪制和時薪制職工工資,如果還要增加一種職工類型,其計酬方式不同(如提成制),則必定要修改Employee類什么是不封閉、不開放如下的模型可以處理月薪制和時薪制職工工資如何改進利用抽象機制封閉:Employee及其子類是封閉的開放:可以派生新的子類,實現(xiàn)新的需求如何改進利用抽象機制Liskov替換原則:子類應當可以替換父類并出現(xiàn)在父類能夠出現(xiàn)的任何地方核心思想:子類型必須能夠替換它們的基類型,該原則能夠知道設計人員正確地進行類的繼承與派生3、Liskov替換原則Liskov替換原則:子類應當可以替換父類并出現(xiàn)在父類能夠一個違反Liskov原則的例子正方形是長方形的一種特例一個違反Liskov原則的例子正方形是長方形的一種特例正方形有獨特的行為方式通過覆蓋父類的有關方法來實現(xiàn)子類行為正方形有獨特的行為方式實際中的使用情況長方形的使用者按照長方形的特點來調(diào)用SetWidth和SetHeight兩個函數(shù),并測試面積,代碼如下:voidtestArea(Rectangle&r){ r.SetWidth(5); r.SetHeight(4); assert(r.Area()==20);}如果傳遞進來的是Square對象又會如何呢?顯然會出現(xiàn)斷言錯誤,測試失敗。對于客戶程序來說,模型中的層次結構是脆弱的,因為違反了LSP替換原則,Square對象和Rectangle對象的行為方式不相容實際中的使用情況長方形的使用者按照長方形的特點來調(diào)用SetW4、接口隔離原則接口隔離原則:采用多個與特定客戶類有關的接口比采用一個通用的涵蓋多個業(yè)務方法的接口更好。對接口的污染設計人員為了節(jié)省接口數(shù)目,而經(jīng)常將一些功能相近或功能相關的接口合并成一個總的接口臃腫的大接口4、接口隔離原則接口隔離原則:采用多個與特定客戶類有關的接口第九講:面向對象的設計課件面向過程——自頂向下,逐步求精,形成上對下依賴依賴倒置原則:應用系統(tǒng)中的高層模塊不應依賴于底層模塊;抽象不應該依賴于細節(jié)實現(xiàn),實現(xiàn)細節(jié)應該依賴于抽象。優(yōu)點:復用、靈活性、易維護5、依賴倒置原則面向過程——自頂向下,逐步求精,形成上對下依賴5、依賴倒置原第九講:面向對象的設計課件79內(nèi)容提綱面向對象設計方法概述系統(tǒng)設計軟件體系結構設計硬件體系結構設計詳細設計對象設計對象持久化設計面向對象的設計原則設計模式79內(nèi)容提綱面向對象設計方法概述如何遵守設計原則設計原則不是死記硬背,而是要靈活運用一些成熟的設計模式可以幫助我們解決實際問題,并且符合設計原則如何遵守設計原則設計原則不是死記硬背,而是要靈活運用廣義上講:設計模式是對被用來在特定場景下解決一般設計問題的類和相互通信的對象的描述。狹義上講:設計模式就是對特定問題的描述或解決方案,往往直接對應一段程序代碼。設計模式廣義上講:設計模式是對被用來在特定場景下解決一般設計問題的類作用:記錄和提煉了軟件人員在面向對象軟件設計中的成功經(jīng)驗和問題的解決方案,是系統(tǒng)可復用的基礎。正確地使用設計模式,有助于快速開發(fā)出可復用的系統(tǒng)。意義:優(yōu)化的設計經(jīng)驗極高的復用性豐富的表達能力極低的耦合度設計模式的作用和研究意義作用:記錄和提煉了軟件人員在面向對象軟件設計中的成功經(jīng)驗和問1.抽象工廠(AbstractFactory)模式2.適配器(Adapter)模式3.策略(Strategy)模式4.外觀(Facadepattern)模式經(jīng)典設計模式1.抽象工廠(AbstractFactory)模式經(jīng)典設從面向對象分析到面向對象設計,是一個逐漸擴充模型的過程,二者需要多次反復迭代。OOD主要包括兩個方面:系統(tǒng)設計和詳細設計。系統(tǒng)設計包括軟件體系結構設計和硬件體系結構設計詳細設計包括對象設計和對象持久化設計五個設計原則和設計模式小結從面向對象分析到面向對象設計,是一個逐漸擴充模型的過程,二者小結結構化設計主要解決如何將需求分析階段的DFD圖推導為軟件系統(tǒng)結構,并用它提供的結構圖描述之。系統(tǒng)設計時要遵循模塊化、自頂向下逐步求精的基本思想。詳細設計著重對各個模塊的邏輯進行詳細設計。小結結構化設計主要解決如何將需求分析階段的DFD圖推導作業(yè)

針對實驗課自己選的系統(tǒng),結合上次面向對象分析所布置的作業(yè),進行系統(tǒng)的面向對象設計主要任務:基于上次面向對象分析的作業(yè)中自己所選定的一個用例,識別類與對象、建立對象模型,并進行詳細設計每個人都要做,一個組不能交一份,每個人要基于不同的用例來做作業(yè)軟件工程導論劉春計算機與信息工程學院軟件工程系軟件工程導論劉春兩種軟件開發(fā)方法結構化方法面向對象方法兩種軟件開發(fā)方法結構化方法面向對象方法89回顧結構化設計方法概述結構化設計的基本概念兩種數(shù)據(jù)流類型:變換型和事務型系統(tǒng)體系結構的描述工具:系統(tǒng)結構圖結構化設計過程概要設計變換分析事務分析詳細設計案例:圖書訂購系統(tǒng)3回顧結構化設計方法概述變換分析是一系列設計步驟的總稱,經(jīng)過這些步驟把具有變換流特點的數(shù)據(jù)流圖映射成為一個預定義的程序結構模板。變換分析的步驟:1.對DFD圖的分析和劃分2.進行第一級分解,設計頂層和第一層模塊3.第二級分解,設計中、下層模塊概要設計:變換分析變換分析是一系列設計步驟的總稱,經(jīng)過這些步驟把具有變換流特點第九講:面向對象的設計課件1,第一層分解,設計頂層和第一層1,第一層分解,設計頂層和第一層第一層分解的另外一種畫法第一層分解的另外一種畫法1,第一層分解,設計頂層和第一層2,第二層分解1,第一層分解,設計頂層和第一層2,第二層分解1,第一層分解,設計頂層和第一層2,第二層分解1,第一層分解,設計頂層和第一層2,第二層分解1,第一層分解,設計頂層和第一層2,第二層分解1,第一層分解,設計頂層和第一層2,第二層分解第九講:面向對象的設計課件事務:引起式、觸發(fā)式啟動單一動作或一串動作的任何數(shù)據(jù)、控制、信號、事件或狀態(tài)變化。事務分析:由事務型數(shù)據(jù)流圖映射為軟件結構的過程。概要設計:事務分析事務:引起式、觸發(fā)式啟動單一動作或一串動作的任何數(shù)據(jù)、控制、(1)確定輸入、事務變換和輸出路徑的集合(劃分集合)。(2)根據(jù)事務的功能設計—個總控模塊(設計總控)。(3)確定頂層模塊和第一層模塊(建立映射)。(4)繼續(xù)下層分解(遞歸自展)。事務分析的具體過程(1)確定輸入、事務變換和輸出路徑的集合(劃分集合)。事務第九講:面向對象的設計課件第九講:面向對象的設計課件第九講:面向對象的設計課件變換-事務混合:一個數(shù)據(jù)流圖中既有變換又有事務分析策略:以一種分析(比如以變換分析)為主,另一種分析為輔概要設計:變換-事務混合型分析變換-事務混合:一個數(shù)據(jù)流圖中既有變換又有事務概要設計:變換變換-事務混合型分析變換-事務混合型分析第九講:面向對象的設計課件兩種軟件開發(fā)方法結構化方法面向對象方法兩種軟件開發(fā)方法結構化方法面向對象方法面向對象方法面向對象分析(ObjectOrientedAnalysis,OOA)分析和理解問題域,找出描述問題域和系統(tǒng)責任所需的類及對象,分析它們的內(nèi)部構成和外部關系,建立OOA模型。面向對象設計(ObjectOrientedDesign,OOD)將OOA模型直接變成OOD模型,并且補充一些與實現(xiàn)有關的部分,如:算法、人機界面、數(shù)據(jù)存儲、任務管理等。面向對象編程(ObjectOrientedProgramming,OOP)用一種面向對象的編程語言將OOD模型中的各個成分編寫成程序面向對象的測試(ObjectOrientedTesting,OOT)面向對象軟件維護(ObjectOrientedSoftwareMaintenance,OOSM)107面向對象方法面向對象分析(ObjectOriented108用例驅動的面向對象分析用例建模:建立用戶的需求模型,由用例圖體現(xiàn)具體過程:定義系統(tǒng)、確定參與者、確定用例、描述用例、確定用例之間的關系、評審用例模型對象建模建立系統(tǒng)的分析模型,由類圖體現(xiàn)具體過程:理解用例、識別類和類的屬性、識別類的操作、確定類與類之間的關系、評審模型22用例驅動的面向對象分析用例建模:第九講:面向對象的設計課件對用例“開戶”進行分析之后得到的類圖對用例“開戶”進行分析之后得到的類圖第九講:面向對象的設計課件112第十章面向對象設計方法26第十章113內(nèi)容提綱面向對象設計方法概述系統(tǒng)設計軟件體系結構設計硬件體系結構設計詳細設計對象設計對象持久化設計面向對象的設計原則設計模式27內(nèi)容提綱面向對象設計方法概述主要考慮“如何實現(xiàn)”的問題,將面向對象分析創(chuàng)建的分析模型,轉變?yōu)樽鳛檐浖嬙焖{圖的設計模型。不僅要說明為實現(xiàn)需要必須引入的類、對象及它們之間是如何關聯(lián)的,描述對象間如何傳遞消息和對象的行為如何實現(xiàn),還必須從提高軟件設計質量和效率方面考慮如何改進類結構和可復用類庫中的類。面向對象設計方法概述主要考慮“如何實現(xiàn)”的問題,將面向對象分析創(chuàng)建的分析模型,轉系統(tǒng)設計:包括如何把整個系統(tǒng)分解為子系統(tǒng)、子系統(tǒng)的軟硬件布局等策略性決策詳細設計:根據(jù)具體的實現(xiàn)策略,對分析模型進行擴充設計評審:對所設計的系統(tǒng)和系統(tǒng)設計規(guī)格說明報告逐一進行嚴格審查,檢查是否達到系統(tǒng)設計功能要求面向對象設計的主要內(nèi)容系統(tǒng)設計:面向對象設計的主要內(nèi)容包括軟件系統(tǒng)體系結構設計和硬件系統(tǒng)體系結構設計

。軟件系統(tǒng)體系結構是對系統(tǒng)的類、對象、接口以及相互間的交互和協(xié)作進行描述。硬件系統(tǒng)體系結構是要對系統(tǒng)的構件、節(jié)點的配置進行描述。系統(tǒng)設計包括軟件系統(tǒng)體系結構設計和硬件系統(tǒng)體系結構設計。系統(tǒng)設計軟件系統(tǒng)體系結構把系統(tǒng)的各種功能分配到系統(tǒng)的不同組織部分,并詳細地描述各個組織部分之間是如何協(xié)調(diào)工作來實現(xiàn)這些功能的。軟件系統(tǒng)體系結構模型的作用是:指明系統(tǒng)應該具有的功能完成這些功能所涉及哪些類,這些類之間如何相互聯(lián)系類和它們的對象如何協(xié)作才能實現(xiàn)這些功能指明系統(tǒng)中各功能實現(xiàn)的先后時間順序軟件系統(tǒng)體系結構設計軟件系統(tǒng)體系結構把系統(tǒng)的各種功能分配到系統(tǒng)的不同組織部分,并分層的思路是將系統(tǒng)按功能職責進行劃分,將同一類職責的功能抽象為一層在信息系統(tǒng)中軟件架構通常采用典型的三層結構:表示層――用戶界面業(yè)務層――業(yè)務處理流程數(shù)據(jù)層――持久化存儲數(shù)據(jù)層在業(yè)務層中是可見的,業(yè)務層在表示層中是可見的,反之則不可見體系結構設計的一種策略:分層分層的思路是將系統(tǒng)按功能職責進行劃分,將同一類職責的功能抽象包(package)是一種邏輯分組手段,可以取UML模型中的任何一種事物,將相關成分聚在一起,以構成更高層的組織單元最常用的方法是將類以包為單位進行分組,比如三層結構中的每一層中的所有類組成一個包一個包可以包含其它的包,高層包被分成若干子包,子包又可以在分成更小的包軟件體系結構的描述工具:包包(package)是一種邏輯分組手段,可以取UML模型中的軟件體系結構設計:如何分包分包:軟件類的分組兩種原則:共同封閉原則:一個包中的各個類應該是由于相似的原則而改變,即將一組職責相似、但以不同方式實現(xiàn)的類歸為一個包中。比如按照層來進行分包就是這種類型。共同復用原則:一個包中的各個類應該一起被復用,復用其中一個可能需要同時考慮同一個包中的其它協(xié)作類。軟件體系結構設計:如何分包分包:軟件類的分組軟件體系結構的表示:包圖包圖用來描述包及其依賴關系當表示層包中的類要使用業(yè)務包中的業(yè)務類提供的服務時,表示包就依賴于業(yè)務包。軟件體系結構的表示:包圖包圖用來描述包及其依賴關系將信息系統(tǒng)中比較關心的對象分層,可分為三層:用戶界面層、業(yè)務層、數(shù)據(jù)訪問層,再把各層中的一些公共部分提出來:權限管理、異常處理,這樣得到包圖如下:軟件體系結構的設計:以信息系統(tǒng)為例將信息系統(tǒng)中比較關心的對象分層,可分為三層:用戶界面層、業(yè)務用戶界面層的職責是:與用戶的交互,接收用戶的各種輸入以及輸出各種提示信息或處理結果。對于輸入的數(shù)據(jù)進行數(shù)據(jù)校驗,過濾非法數(shù)據(jù)。向業(yè)務處理對象發(fā)送處理請求。1、用戶界面層用戶界面層的職責是:1、用戶界面層2、業(yè)務處理包業(yè)務處理層的職責是:實現(xiàn)各種業(yè)務處理邏輯或處理算法。驗證請求者的權限。向數(shù)據(jù)訪問對象發(fā)送數(shù)據(jù)持久化操作的請求。向用戶界面層返回處理結果。2、業(yè)務處理包業(yè)務處理層的職責是:3、數(shù)據(jù)訪問包數(shù)據(jù)訪問層的職責是:實現(xiàn)數(shù)據(jù)的持久化操作實現(xiàn)事務處理

3、數(shù)據(jù)訪問包數(shù)據(jù)訪問層的職責是:權限管理的主要職責是:驗證請求者的請求權限提供請求者的權限列表

注:業(yè)務處理對象通過權限管理對象來驗證權限

4、權限管理包權限管理的主要職責是:注:業(yè)務處理對象通過權限管理對象來驗證5、異常處理包異常處理的職責:匯報運行時的詳細異常信息記錄異常處理日志5、異常處理包異常處理的職責:6、信息系統(tǒng)的體系結構的類圖

6、信息系統(tǒng)的體系結構的類圖7、體系結構的動態(tài)圖7、體系結構的動態(tài)圖子系統(tǒng)當按照業(yè)務功能或管理職能組織包,并對這樣的包進行徹底的封裝實現(xiàn)后,一個高層的具有特定功能的可以運行的獨立構件就產(chǎn)生了,稱為子系統(tǒng)(subsystem)子系統(tǒng)及其關系使用構件圖描述子系統(tǒng)與包的區(qū)別子系統(tǒng)具有自身獨立的功能,是物理的具體軟件單位,而包只是軟件對象的邏輯組織方式軟件體系結構設計:子系統(tǒng)(1)子系統(tǒng)軟件體系結構設計:子系統(tǒng)(1)子系統(tǒng)的接口子系統(tǒng)對外可以提供有限的接口,只要接口不改變,不管子系統(tǒng)內(nèi)部發(fā)生什么變化,也不會影響到依賴于該子系統(tǒng)接口的其它子系統(tǒng)財務子系統(tǒng)將內(nèi)部操作進行了封裝,但對外提供必要的接口。銷售子系統(tǒng)在執(zhí)行銷售業(yè)務過程中可以使用該接口對銷售數(shù)據(jù)執(zhí)行某些財務操作。對于銷售子系統(tǒng)而言,依賴的是財務子系統(tǒng)的接口,并不需要關心財務子系統(tǒng)的具體實現(xiàn)。軟件體系結構設計:子系統(tǒng)(2)子系統(tǒng)的接口軟件體系結構設計:子系統(tǒng)(2)132內(nèi)容提綱面向對象設計方法概述系統(tǒng)設計軟件體系結構設計硬件體系結構設計詳細設計對象設計對象持久化設計面向對象的設計原則設計模式46內(nèi)容提綱面向對象設計方法概述建立硬件系統(tǒng)體系結構模型硬件系統(tǒng)體系結構模型顯示硬件的結構,包括不同的節(jié)點和這些節(jié)點之間如何連接它還用圖形展示了代碼模塊的物理結構和依賴關系硬件體系結構設計建立硬件系統(tǒng)體系結構模型硬件體系結構設計指出系統(tǒng)中的類和對象涉及的具體程序或進程。指明系統(tǒng)中配置的計算機和其他硬件設備。指明系統(tǒng)中各種計算機和硬件設備如何進行相互連接。明確不同代碼文件之間的相互依賴關系。硬件體系結構模型指出系統(tǒng)中的類和對象涉及的具體程序或進程。硬件體系結構模型硬件體系結構的描述工具:配置圖硬件體系結構的描述工具:配置圖136內(nèi)容提綱面向對象設計方法概述系統(tǒng)設計軟件體系結構設計硬件體系結構設計詳細設計對象設計對象持久化設計面向對象的設計原則設計模式50內(nèi)容提綱面向對象設計方法概述主要包括對象設計和對象持久化設計(數(shù)據(jù)庫設計)對象設計:

系統(tǒng)設計相當于大樓的建筑平面圖,規(guī)定了每個房間的用途,以及房間與房間之間、房間與外部環(huán)境之間的連接機制。對象設計著重于每個房間的內(nèi)部細節(jié)對象持久化設計:

解決對象數(shù)據(jù)的存儲和檢索詳細設計主要包括對象設計和對象持久化設計(數(shù)據(jù)庫設計)詳細設計對象設計的主要任務:定義對象完整的接口設計對象內(nèi)部結構詳細設計:對象設計對象設計的主要任務:詳細設計:對象設計對象的接口也稱為對象的協(xié)議、對象的界面。接口提供了一種方法,把對象的功能說明與具體實現(xiàn)區(qū)分開來,使得任何依賴和使用接口的客戶不必依賴于接口的具體實現(xiàn),有利于接口實現(xiàn)的替換。

接口描述可以用UML中類圖一樣的符號,省略屬性部分,《interface》要包含在類名部分中。定義對象的完整接口對象的接口也稱為對象的協(xié)議、對象的界面。定義對象的完整接口對屬性和操作進行建模屬性建模:確定屬性的類型和數(shù)據(jù)結構、可見性等將所有屬性的可見性設置為private僅通過set方法更新屬性僅通過get方法訪問屬性在屬性的set方法中,實現(xiàn)簡單的有效性驗證,而在獨立的驗證方法中實現(xiàn)復雜的邏輯驗證操作建模:確定操作的可見性、參數(shù)、返回值、算法等設計實現(xiàn)服務的算法。定義內(nèi)部類和內(nèi)部操作設計對象內(nèi)部結構對屬性和操作進行建模設計對象內(nèi)部結構第九講:面向對象的設計課件在狀態(tài)建模中,狀態(tài)通過對象屬性的值來表示,狀態(tài)轉移是操作調(diào)用的結果,經(jīng)常會反映業(yè)務規(guī)則對象設計的進一步:狀態(tài)建模在狀態(tài)建模中,狀態(tài)通過對象屬性的值來表示,對象設計的進一步:143內(nèi)容提綱面向對象設計方法概述系統(tǒng)設計軟件體系結構設計硬件體系結構設計詳細設計對象設計對象持久化設計面向對象的設計原則設計模式57內(nèi)容提綱面向對象設計方法概述關注的是對象數(shù)據(jù)如何存儲數(shù)據(jù)存儲管理的一般模式文件管理模式關系數(shù)據(jù)庫管理系統(tǒng)面向對象數(shù)據(jù)庫管理系統(tǒng)詳細設計:對象持久化設計關注的是對象數(shù)據(jù)如何存儲詳細設計:對象持久化設計關系數(shù)據(jù)庫與面向對象中的概念存在一定的對應對象持久化設計的方法:基于關系數(shù)據(jù)庫存儲關系數(shù)據(jù)庫與面向對象中的概念存在一定的對應對象持久化設計的方永久類的存儲設計永久類一般都是實體類,對應的是系統(tǒng)中涉及的數(shù)據(jù)每一個永久類映射為一個關系表,表格的列或字段對應類的屬性,而行或記錄對應類的實例(對象)關聯(lián)的存儲設計1:1關聯(lián):在一個類對應的表中用外鍵隱含管理1:n關聯(lián):在n端類對應的表中用外鍵隱含關聯(lián)n:n關聯(lián):轉換成1:n管理,然后按照上面的方法進行轉換基于關系數(shù)據(jù)庫的對象持久化設計永久類的存儲設計基于關系數(shù)據(jù)庫的對象持久化設計1:1關聯(lián)1:1關聯(lián)1:n關聯(lián)1:n關聯(lián)149內(nèi)容提綱面向對象設計方法概述系統(tǒng)設計軟件體系結構設計硬件體系結構設計詳細設計對象設計對象持久化設計面向對象的設計原則設計模式63內(nèi)容提綱面向對象設計方法概述系統(tǒng)設計審查就是對所設計的系統(tǒng)和系統(tǒng)設計規(guī)格說明報告逐一進行嚴格審查,檢查是否達到系統(tǒng)設計功能要求。如果發(fā)現(xiàn)系統(tǒng)功能沒有達到用例的要求或有遺漏,一次返回逐步檢查,找到問題所在,補充設計實現(xiàn)其功能。這是一個反復迭代的過程。追求一個好的設計,以及設計完成后評價它是不是好的設計,不是一個籠統(tǒng)的概念,有一些具體的評價準則。評審設計系統(tǒng)設計審查就是對所設計的系統(tǒng)和系統(tǒng)設計規(guī)格說明報告逐一進行單一職責原則開放-封閉原則接口隔離原則Liskov替換原則依賴倒置原則面向對象設計原則單一職責原則面向對象設計原則一個類只完成某一類功能(職責)盡可能避免出現(xiàn)一個“復合”功能的類——在同一個類中完成多個不同的功能1、單一職責原則一個類只完成某一類功能(職責)1、單一職責原則第九講:面向對象的設計課件開放?封閉原則:軟件實體類(類、模塊、函數(shù)等)應該是可以擴展、但是不可修改的基本思想:不用修改原有類就能擴展一個類的行為2、開放?封閉原則開放?封閉原則:軟件實體類(類、模塊、函數(shù)等)應該是可以擴展什么是不封閉、不開放如下的模型可以處理月薪制和時薪制職工工資,如果還要增加一種職工類型,其計酬方式不同(如提成制),則必定要修改Employee類什么是不封閉、不開放如下的模型可以處理月薪制和時薪制職工工資如何改進利用抽象機制封閉:Employee及其子類是封閉的開放:可以派生新的子類,實現(xiàn)新的需求如何改進利用抽象機制Liskov替換原則:子類應當可以替換父類并出現(xiàn)在父類能夠出現(xiàn)的任何地方核心思想:子類型必須能夠替換它們的基類型,該原則能夠知道設計人員正確地進行類的繼承與派生3、Liskov替換原則Liskov替換原則:子類應當可以替換父類并出現(xiàn)在父類能夠一個違反Liskov原則的例子正方形是長方形的一種特例一個違

溫馨提示

  • 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

提交評論