版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
軟件工程導(dǎo)論劉春計算機與信息工程學(xué)院軟件工程系軟件工程導(dǎo)論劉春兩種軟件開發(fā)方法結(jié)構(gòu)化方法面向?qū)ο蠓椒▋煞N軟件開發(fā)方法結(jié)構(gòu)化方法面向?qū)ο蠓椒?回顧結(jié)構(gòu)化設(shè)計方法概述結(jié)構(gòu)化設(shè)計的基本概念兩種數(shù)據(jù)流類型:變換型和事務(wù)型系統(tǒng)體系結(jié)構(gòu)的描述工具:系統(tǒng)結(jié)構(gòu)圖結(jié)構(gòu)化設(shè)計過程概要設(shè)計變換分析事務(wù)分析詳細(xì)設(shè)計案例:圖書訂購系統(tǒng)3回顧結(jié)構(gòu)化設(shè)計方法概述變換分析是一系列設(shè)計步驟的總稱,經(jīng)過這些步驟把具有變換流特點的數(shù)據(jù)流圖映射成為一個預(yù)定義的程序結(jié)構(gòu)模板。變換分析的步驟:1.對DFD圖的分析和劃分2.進(jìn)行第一級分解,設(shè)計頂層和第一層模塊3.第二級分解,設(shè)計中、下層模塊概要設(shè)計:變換分析變換分析是一系列設(shè)計步驟的總稱,經(jīng)過這些步驟把具有變換流特點第九講:面向?qū)ο蟮脑O(shè)計課件1,第一層分解,設(shè)計頂層和第一層1,第一層分解,設(shè)計頂層和第一層第一層分解的另外一種畫法第一層分解的另外一種畫法1,第一層分解,設(shè)計頂層和第一層2,第二層分解1,第一層分解,設(shè)計頂層和第一層2,第二層分解1,第一層分解,設(shè)計頂層和第一層2,第二層分解1,第一層分解,設(shè)計頂層和第一層2,第二層分解1,第一層分解,設(shè)計頂層和第一層2,第二層分解1,第一層分解,設(shè)計頂層和第一層2,第二層分解第九講:面向?qū)ο蟮脑O(shè)計課件事務(wù):引起式、觸發(fā)式啟動單一動作或一串動作的任何數(shù)據(jù)、控制、信號、事件或狀態(tài)變化。事務(wù)分析:由事務(wù)型數(shù)據(jù)流圖映射為軟件結(jié)構(gòu)的過程。概要設(shè)計:事務(wù)分析事務(wù):引起式、觸發(fā)式啟動單一動作或一串動作的任何數(shù)據(jù)、控制、(1)確定輸入、事務(wù)變換和輸出路徑的集合(劃分集合)。(2)根據(jù)事務(wù)的功能設(shè)計—個總控模塊(設(shè)計總控)。(3)確定頂層模塊和第一層模塊(建立映射)。(4)繼續(xù)下層分解(遞歸自展)。事務(wù)分析的具體過程(1)確定輸入、事務(wù)變換和輸出路徑的集合(劃分集合)。事務(wù)第九講:面向?qū)ο蟮脑O(shè)計課件第九講:面向?qū)ο蟮脑O(shè)計課件第九講:面向?qū)ο蟮脑O(shè)計課件變換-事務(wù)混合:一個數(shù)據(jù)流圖中既有變換又有事務(wù)分析策略:以一種分析(比如以變換分析)為主,另一種分析為輔概要設(shè)計:變換-事務(wù)混合型分析變換-事務(wù)混合:一個數(shù)據(jù)流圖中既有變換又有事務(wù)概要設(shè)計:變換變換-事務(wù)混合型分析變換-事務(wù)混合型分析第九講:面向?qū)ο蟮脑O(shè)計課件兩種軟件開發(fā)方法結(jié)構(gòu)化方法面向?qū)ο蠓椒▋煞N軟件開發(fā)方法結(jié)構(gòu)化方法面向?qū)ο蠓椒嫦驅(qū)ο蠓椒嫦驅(qū)ο蠓治觯∣bjectOrientedAnalysis,OOA)分析和理解問題域,找出描述問題域和系統(tǒng)責(zé)任所需的類及對象,分析它們的內(nèi)部構(gòu)成和外部關(guān)系,建立OOA模型。面向?qū)ο笤O(shè)計(ObjectOrientedDesign,OOD)將OOA模型直接變成OOD模型,并且補充一些與實現(xiàn)有關(guān)的部分,如:算法、人機界面、數(shù)據(jù)存儲、任務(wù)管理等。面向?qū)ο缶幊蹋∣bjectOrientedProgramming,OOP)用一種面向?qū)ο蟮木幊陶Z言將OOD模型中的各個成分編寫成程序面向?qū)ο蟮臏y試(ObjectOrientedTesting,OOT)面向?qū)ο筌浖S護(ObjectOrientedSoftwareMaintenance,OOSM)21面向?qū)ο蠓椒嫦驅(qū)ο蠓治觯∣bjectOriented22用例驅(qū)動的面向?qū)ο蠓治鲇美#航⒂脩舻男枨竽P?,由用例圖體現(xiàn)具體過程:定義系統(tǒng)、確定參與者、確定用例、描述用例、確定用例之間的關(guān)系、評審用例模型對象建模建立系統(tǒng)的分析模型,由類圖體現(xiàn)具體過程:理解用例、識別類和類的屬性、識別類的操作、確定類與類之間的關(guān)系、評審模型22用例驅(qū)動的面向?qū)ο蠓治鲇美#旱诰胖v:面向?qū)ο蟮脑O(shè)計課件對用例“開戶”進(jìn)行分析之后得到的類圖對用例“開戶”進(jìn)行分析之后得到的類圖第九講:面向?qū)ο蟮脑O(shè)計課件26第十章面向?qū)ο笤O(shè)計方法26第十章27內(nèi)容提綱面向?qū)ο笤O(shè)計方法概述系統(tǒng)設(shè)計軟件體系結(jié)構(gòu)設(shè)計硬件體系結(jié)構(gòu)設(shè)計詳細(xì)設(shè)計對象設(shè)計對象持久化設(shè)計面向?qū)ο蟮脑O(shè)計原則設(shè)計模式27內(nèi)容提綱面向?qū)ο笤O(shè)計方法概述主要考慮“如何實現(xiàn)”的問題,將面向?qū)ο蠓治鰟?chuàng)建的分析模型,轉(zhuǎn)變?yōu)樽鳛檐浖?gòu)造藍(lán)圖的設(shè)計模型。不僅要說明為實現(xiàn)需要必須引入的類、對象及它們之間是如何關(guān)聯(lián)的,描述對象間如何傳遞消息和對象的行為如何實現(xiàn),還必須從提高軟件設(shè)計質(zhì)量和效率方面考慮如何改進(jìn)類結(jié)構(gòu)和可復(fù)用類庫中的類。面向?qū)ο笤O(shè)計方法概述主要考慮“如何實現(xiàn)”的問題,將面向?qū)ο蠓治鰟?chuàng)建的分析模型,轉(zhuǎn)系統(tǒng)設(shè)計:包括如何把整個系統(tǒng)分解為子系統(tǒng)、子系統(tǒng)的軟硬件布局等策略性決策詳細(xì)設(shè)計:根據(jù)具體的實現(xiàn)策略,對分析模型進(jìn)行擴充設(shè)計評審:對所設(shè)計的系統(tǒng)和系統(tǒng)設(shè)計規(guī)格說明報告逐一進(jìn)行嚴(yán)格審查,檢查是否達(dá)到系統(tǒng)設(shè)計功能要求面向?qū)ο笤O(shè)計的主要內(nèi)容系統(tǒng)設(shè)計:面向?qū)ο笤O(shè)計的主要內(nèi)容包括軟件系統(tǒng)體系結(jié)構(gòu)設(shè)計和硬件系統(tǒng)體系結(jié)構(gòu)設(shè)計
。軟件系統(tǒng)體系結(jié)構(gòu)是對系統(tǒng)的類、對象、接口以及相互間的交互和協(xié)作進(jìn)行描述。硬件系統(tǒng)體系結(jié)構(gòu)是要對系統(tǒng)的構(gòu)件、節(jié)點的配置進(jìn)行描述。系統(tǒng)設(shè)計包括軟件系統(tǒng)體系結(jié)構(gòu)設(shè)計和硬件系統(tǒng)體系結(jié)構(gòu)設(shè)計。系統(tǒng)設(shè)計軟件系統(tǒng)體系結(jié)構(gòu)把系統(tǒng)的各種功能分配到系統(tǒng)的不同組織部分,并詳細(xì)地描述各個組織部分之間是如何協(xié)調(diào)工作來實現(xiàn)這些功能的。軟件系統(tǒng)體系結(jié)構(gòu)模型的作用是:指明系統(tǒng)應(yīng)該具有的功能完成這些功能所涉及哪些類,這些類之間如何相互聯(lián)系類和它們的對象如何協(xié)作才能實現(xiàn)這些功能指明系統(tǒng)中各功能實現(xiàn)的先后時間順序軟件系統(tǒng)體系結(jié)構(gòu)設(shè)計軟件系統(tǒng)體系結(jié)構(gòu)把系統(tǒng)的各種功能分配到系統(tǒng)的不同組織部分,并分層的思路是將系統(tǒng)按功能職責(zé)進(jìn)行劃分,將同一類職責(zé)的功能抽象為一層在信息系統(tǒng)中軟件架構(gòu)通常采用典型的三層結(jié)構(gòu):表示層――用戶界面業(yè)務(wù)層――業(yè)務(wù)處理流程數(shù)據(jù)層――持久化存儲數(shù)據(jù)層在業(yè)務(wù)層中是可見的,業(yè)務(wù)層在表示層中是可見的,反之則不可見體系結(jié)構(gòu)設(shè)計的一種策略:分層分層的思路是將系統(tǒng)按功能職責(zé)進(jìn)行劃分,將同一類職責(zé)的功能抽象包(package)是一種邏輯分組手段,可以取UML模型中的任何一種事物,將相關(guān)成分聚在一起,以構(gòu)成更高層的組織單元最常用的方法是將類以包為單位進(jìn)行分組,比如三層結(jié)構(gòu)中的每一層中的所有類組成一個包一個包可以包含其它的包,高層包被分成若干子包,子包又可以在分成更小的包軟件體系結(jié)構(gòu)的描述工具:包包(package)是一種邏輯分組手段,可以取UML模型中的軟件體系結(jié)構(gòu)設(shè)計:如何分包分包:軟件類的分組兩種原則:共同封閉原則:一個包中的各個類應(yīng)該是由于相似的原則而改變,即將一組職責(zé)相似、但以不同方式實現(xiàn)的類歸為一個包中。比如按照層來進(jìn)行分包就是這種類型。共同復(fù)用原則:一個包中的各個類應(yīng)該一起被復(fù)用,復(fù)用其中一個可能需要同時考慮同一個包中的其它協(xié)作類。軟件體系結(jié)構(gòu)設(shè)計:如何分包分包:軟件類的分組軟件體系結(jié)構(gòu)的表示:包圖包圖用來描述包及其依賴關(guān)系當(dāng)表示層包中的類要使用業(yè)務(wù)包中的業(yè)務(wù)類提供的服務(wù)時,表示包就依賴于業(yè)務(wù)包。軟件體系結(jié)構(gòu)的表示:包圖包圖用來描述包及其依賴關(guān)系將信息系統(tǒng)中比較關(guān)心的對象分層,可分為三層:用戶界面層、業(yè)務(wù)層、數(shù)據(jù)訪問層,再把各層中的一些公共部分提出來:權(quán)限管理、異常處理,這樣得到包圖如下:軟件體系結(jié)構(gòu)的設(shè)計:以信息系統(tǒng)為例將信息系統(tǒng)中比較關(guān)心的對象分層,可分為三層:用戶界面層、業(yè)務(wù)用戶界面層的職責(zé)是:與用戶的交互,接收用戶的各種輸入以及輸出各種提示信息或處理結(jié)果。對于輸入的數(shù)據(jù)進(jìn)行數(shù)據(jù)校驗,過濾非法數(shù)據(jù)。向業(yè)務(wù)處理對象發(fā)送處理請求。1、用戶界面層用戶界面層的職責(zé)是:1、用戶界面層2、業(yè)務(wù)處理包業(yè)務(wù)處理層的職責(zé)是:實現(xiàn)各種業(yè)務(wù)處理邏輯或處理算法。驗證請求者的權(quán)限。向數(shù)據(jù)訪問對象發(fā)送數(shù)據(jù)持久化操作的請求。向用戶界面層返回處理結(jié)果。2、業(yè)務(wù)處理包業(yè)務(wù)處理層的職責(zé)是:3、數(shù)據(jù)訪問包數(shù)據(jù)訪問層的職責(zé)是:實現(xiàn)數(shù)據(jù)的持久化操作實現(xiàn)事務(wù)處理
3、數(shù)據(jù)訪問包數(shù)據(jù)訪問層的職責(zé)是:權(quán)限管理的主要職責(zé)是:驗證請求者的請求權(quán)限提供請求者的權(quán)限列表
注:業(yè)務(wù)處理對象通過權(quán)限管理對象來驗證權(quán)限
4、權(quán)限管理包權(quán)限管理的主要職責(zé)是:注:業(yè)務(wù)處理對象通過權(quán)限管理對象來驗證5、異常處理包異常處理的職責(zé):匯報運行時的詳細(xì)異常信息記錄異常處理日志5、異常處理包異常處理的職責(zé):6、信息系統(tǒng)的體系結(jié)構(gòu)的類圖
6、信息系統(tǒng)的體系結(jié)構(gòu)的類圖7、體系結(jié)構(gòu)的動態(tài)圖7、體系結(jié)構(gòu)的動態(tài)圖子系統(tǒng)當(dāng)按照業(yè)務(wù)功能或管理職能組織包,并對這樣的包進(jìn)行徹底的封裝實現(xiàn)后,一個高層的具有特定功能的可以運行的獨立構(gòu)件就產(chǎn)生了,稱為子系統(tǒng)(subsystem)子系統(tǒng)及其關(guān)系使用構(gòu)件圖描述子系統(tǒng)與包的區(qū)別子系統(tǒng)具有自身獨立的功能,是物理的具體軟件單位,而包只是軟件對象的邏輯組織方式軟件體系結(jié)構(gòu)設(shè)計:子系統(tǒng)(1)子系統(tǒng)軟件體系結(jié)構(gòu)設(shè)計:子系統(tǒng)(1)子系統(tǒng)的接口子系統(tǒng)對外可以提供有限的接口,只要接口不改變,不管子系統(tǒng)內(nèi)部發(fā)生什么變化,也不會影響到依賴于該子系統(tǒng)接口的其它子系統(tǒng)財務(wù)子系統(tǒng)將內(nèi)部操作進(jìn)行了封裝,但對外提供必要的接口。銷售子系統(tǒng)在執(zhí)行銷售業(yè)務(wù)過程中可以使用該接口對銷售數(shù)據(jù)執(zhí)行某些財務(wù)操作。對于銷售子系統(tǒng)而言,依賴的是財務(wù)子系統(tǒng)的接口,并不需要關(guān)心財務(wù)子系統(tǒng)的具體實現(xiàn)。軟件體系結(jié)構(gòu)設(shè)計:子系統(tǒng)(2)子系統(tǒng)的接口軟件體系結(jié)構(gòu)設(shè)計:子系統(tǒng)(2)46內(nèi)容提綱面向?qū)ο笤O(shè)計方法概述系統(tǒng)設(shè)計軟件體系結(jié)構(gòu)設(shè)計硬件體系結(jié)構(gòu)設(shè)計詳細(xì)設(shè)計對象設(shè)計對象持久化設(shè)計面向?qū)ο蟮脑O(shè)計原則設(shè)計模式46內(nèi)容提綱面向?qū)ο笤O(shè)計方法概述建立硬件系統(tǒng)體系結(jié)構(gòu)模型硬件系統(tǒng)體系結(jié)構(gòu)模型顯示硬件的結(jié)構(gòu),包括不同的節(jié)點和這些節(jié)點之間如何連接它還用圖形展示了代碼模塊的物理結(jié)構(gòu)和依賴關(guān)系硬件體系結(jié)構(gòu)設(shè)計建立硬件系統(tǒng)體系結(jié)構(gòu)模型硬件體系結(jié)構(gòu)設(shè)計指出系統(tǒng)中的類和對象涉及的具體程序或進(jìn)程。指明系統(tǒng)中配置的計算機和其他硬件設(shè)備。指明系統(tǒng)中各種計算機和硬件設(shè)備如何進(jìn)行相互連接。明確不同代碼文件之間的相互依賴關(guān)系。硬件體系結(jié)構(gòu)模型指出系統(tǒng)中的類和對象涉及的具體程序或進(jìn)程。硬件體系結(jié)構(gòu)模型硬件體系結(jié)構(gòu)的描述工具:配置圖硬件體系結(jié)構(gòu)的描述工具:配置圖50內(nèi)容提綱面向?qū)ο笤O(shè)計方法概述系統(tǒng)設(shè)計軟件體系結(jié)構(gòu)設(shè)計硬件體系結(jié)構(gòu)設(shè)計詳細(xì)設(shè)計對象設(shè)計對象持久化設(shè)計面向?qū)ο蟮脑O(shè)計原則設(shè)計模式50內(nèi)容提綱面向?qū)ο笤O(shè)計方法概述主要包括對象設(shè)計和對象持久化設(shè)計(數(shù)據(jù)庫設(shè)計)對象設(shè)計:
系統(tǒng)設(shè)計相當(dāng)于大樓的建筑平面圖,規(guī)定了每個房間的用途,以及房間與房間之間、房間與外部環(huán)境之間的連接機制。對象設(shè)計著重于每個房間的內(nèi)部細(xì)節(jié)對象持久化設(shè)計:
解決對象數(shù)據(jù)的存儲和檢索詳細(xì)設(shè)計主要包括對象設(shè)計和對象持久化設(shè)計(數(shù)據(jù)庫設(shè)計)詳細(xì)設(shè)計對象設(shè)計的主要任務(wù):定義對象完整的接口設(shè)計對象內(nèi)部結(jié)構(gòu)詳細(xì)設(shè)計:對象設(shè)計對象設(shè)計的主要任務(wù):詳細(xì)設(shè)計:對象設(shè)計對象的接口也稱為對象的協(xié)議、對象的界面。接口提供了一種方法,把對象的功能說明與具體實現(xiàn)區(qū)分開來,使得任何依賴和使用接口的客戶不必依賴于接口的具體實現(xiàn),有利于接口實現(xiàn)的替換。
接口描述可以用UML中類圖一樣的符號,省略屬性部分,《interface》要包含在類名部分中。定義對象的完整接口對象的接口也稱為對象的協(xié)議、對象的界面。定義對象的完整接口對屬性和操作進(jìn)行建模屬性建模:確定屬性的類型和數(shù)據(jù)結(jié)構(gòu)、可見性等將所有屬性的可見性設(shè)置為private僅通過set方法更新屬性僅通過get方法訪問屬性在屬性的set方法中,實現(xiàn)簡單的有效性驗證,而在獨立的驗證方法中實現(xiàn)復(fù)雜的邏輯驗證操作建模:確定操作的可見性、參數(shù)、返回值、算法等設(shè)計實現(xiàn)服務(wù)的算法。定義內(nèi)部類和內(nèi)部操作設(shè)計對象內(nèi)部結(jié)構(gòu)對屬性和操作進(jìn)行建模設(shè)計對象內(nèi)部結(jié)構(gòu)第九講:面向?qū)ο蟮脑O(shè)計課件在狀態(tài)建模中,狀態(tài)通過對象屬性的值來表示,狀態(tài)轉(zhuǎn)移是操作調(diào)用的結(jié)果,經(jīng)常會反映業(yè)務(wù)規(guī)則對象設(shè)計的進(jìn)一步:狀態(tài)建模在狀態(tài)建模中,狀態(tài)通過對象屬性的值來表示,對象設(shè)計的進(jìn)一步:57內(nèi)容提綱面向?qū)ο笤O(shè)計方法概述系統(tǒng)設(shè)計軟件體系結(jié)構(gòu)設(shè)計硬件體系結(jié)構(gòu)設(shè)計詳細(xì)設(shè)計對象設(shè)計對象持久化設(shè)計面向?qū)ο蟮脑O(shè)計原則設(shè)計模式57內(nèi)容提綱面向?qū)ο笤O(shè)計方法概述關(guān)注的是對象數(shù)據(jù)如何存儲數(shù)據(jù)存儲管理的一般模式文件管理模式關(guān)系數(shù)據(jù)庫管理系統(tǒng)面向?qū)ο髷?shù)據(jù)庫管理系統(tǒng)詳細(xì)設(shè)計:對象持久化設(shè)計關(guān)注的是對象數(shù)據(jù)如何存儲詳細(xì)設(shè)計:對象持久化設(shè)計關(guān)系數(shù)據(jù)庫與面向?qū)ο笾械母拍畲嬖谝欢ǖ膶?yīng)對象持久化設(shè)計的方法:基于關(guān)系數(shù)據(jù)庫存儲關(guān)系數(shù)據(jù)庫與面向?qū)ο笾械母拍畲嬖谝欢ǖ膶?yīng)對象持久化設(shè)計的方永久類的存儲設(shè)計永久類一般都是實體類,對應(yīng)的是系統(tǒng)中涉及的數(shù)據(jù)每一個永久類映射為一個關(guān)系表,表格的列或字段對應(yīng)類的屬性,而行或記錄對應(yīng)類的實例(對象)關(guān)聯(lián)的存儲設(shè)計1:1關(guān)聯(lián):在一個類對應(yīng)的表中用外鍵隱含管理1:n關(guān)聯(lián):在n端類對應(yīng)的表中用外鍵隱含關(guān)聯(lián)n:n關(guān)聯(lián):轉(zhuǎn)換成1:n管理,然后按照上面的方法進(jìn)行轉(zhuǎn)換基于關(guān)系數(shù)據(jù)庫的對象持久化設(shè)計永久類的存儲設(shè)計基于關(guān)系數(shù)據(jù)庫的對象持久化設(shè)計1:1關(guān)聯(lián)1:1關(guān)聯(lián)1:n關(guān)聯(lián)1:n關(guān)聯(lián)63內(nèi)容提綱面向?qū)ο笤O(shè)計方法概述系統(tǒng)設(shè)計軟件體系結(jié)構(gòu)設(shè)計硬件體系結(jié)構(gòu)設(shè)計詳細(xì)設(shè)計對象設(shè)計對象持久化設(shè)計面向?qū)ο蟮脑O(shè)計原則設(shè)計模式63內(nèi)容提綱面向?qū)ο笤O(shè)計方法概述系統(tǒng)設(shè)計審查就是對所設(shè)計的系統(tǒng)和系統(tǒng)設(shè)計規(guī)格說明報告逐一進(jìn)行嚴(yán)格審查,檢查是否達(dá)到系統(tǒng)設(shè)計功能要求。如果發(fā)現(xiàn)系統(tǒng)功能沒有達(dá)到用例的要求或有遺漏,一次返回逐步檢查,找到問題所在,補充設(shè)計實現(xiàn)其功能。這是一個反復(fù)迭代的過程。追求一個好的設(shè)計,以及設(shè)計完成后評價它是不是好的設(shè)計,不是一個籠統(tǒng)的概念,有一些具體的評價準(zhǔn)則。評審設(shè)計系統(tǒng)設(shè)計審查就是對所設(shè)計的系統(tǒng)和系統(tǒng)設(shè)計規(guī)格說明報告逐一進(jìn)行單一職責(zé)原則開放-封閉原則接口隔離原則Liskov替換原則依賴倒置原則面向?qū)ο笤O(shè)計原則單一職責(zé)原則面向?qū)ο笤O(shè)計原則一個類只完成某一類功能(職責(zé))盡可能避免出現(xiàn)一個“復(fù)合”功能的類——在同一個類中完成多個不同的功能1、單一職責(zé)原則一個類只完成某一類功能(職責(zé))1、單一職責(zé)原則第九講:面向?qū)ο蟮脑O(shè)計課件開放?封閉原則:軟件實體類(類、模塊、函數(shù)等)應(yīng)該是可以擴展、但是不可修改的基本思想:不用修改原有類就能擴展一個類的行為2、開放?封閉原則開放?封閉原則:軟件實體類(類、模塊、函數(shù)等)應(yīng)該是可以擴展什么是不封閉、不開放如下的模型可以處理月薪制和時薪制職工工資,如果還要增加一種職工類型,其計酬方式不同(如提成制),則必定要修改Employee類什么是不封閉、不開放如下的模型可以處理月薪制和時薪制職工工資如何改進(jìn)利用抽象機制封閉:Employee及其子類是封閉的開放:可以派生新的子類,實現(xiàn)新的需求如何改進(jìn)利用抽象機制Liskov替換原則:子類應(yīng)當(dāng)可以替換父類并出現(xiàn)在父類能夠出現(xiàn)的任何地方核心思想:子類型必須能夠替換它們的基類型,該原則能夠知道設(shè)計人員正確地進(jìn)行類的繼承與派生3、Liskov替換原則Liskov替換原則:子類應(yīng)當(dāng)可以替換父類并出現(xiàn)在父類能夠一個違反Liskov原則的例子正方形是長方形的一種特例一個違反Liskov原則的例子正方形是長方形的一種特例正方形有獨特的行為方式通過覆蓋父類的有關(guān)方法來實現(xiàn)子類行為正方形有獨特的行為方式實際中的使用情況長方形的使用者按照長方形的特點來調(diào)用SetWidth和SetHeight兩個函數(shù),并測試面積,代碼如下:voidtestArea(Rectangle&r){ r.SetWidth(5); r.SetHeight(4); assert(r.Area()==20);}如果傳遞進(jìn)來的是Square對象又會如何呢?顯然會出現(xiàn)斷言錯誤,測試失敗。對于客戶程序來說,模型中的層次結(jié)構(gòu)是脆弱的,因為違反了LSP替換原則,Square對象和Rectangle對象的行為方式不相容實際中的使用情況長方形的使用者按照長方形的特點來調(diào)用SetW4、接口隔離原則接口隔離原則:采用多個與特定客戶類有關(guān)的接口比采用一個通用的涵蓋多個業(yè)務(wù)方法的接口更好。對接口的污染設(shè)計人員為了節(jié)省接口數(shù)目,而經(jīng)常將一些功能相近或功能相關(guān)的接口合并成一個總的接口臃腫的大接口4、接口隔離原則接口隔離原則:采用多個與特定客戶類有關(guān)的接口第九講:面向?qū)ο蟮脑O(shè)計課件面向過程——自頂向下,逐步求精,形成上對下依賴依賴倒置原則:應(yīng)用系統(tǒng)中的高層模塊不應(yīng)依賴于底層模塊;抽象不應(yīng)該依賴于細(xì)節(jié)實現(xiàn),實現(xiàn)細(xì)節(jié)應(yīng)該依賴于抽象。優(yōu)點:復(fù)用、靈活性、易維護5、依賴倒置原則面向過程——自頂向下,逐步求精,形成上對下依賴5、依賴倒置原第九講:面向?qū)ο蟮脑O(shè)計課件79內(nèi)容提綱面向?qū)ο笤O(shè)計方法概述系統(tǒng)設(shè)計軟件體系結(jié)構(gòu)設(shè)計硬件體系結(jié)構(gòu)設(shè)計詳細(xì)設(shè)計對象設(shè)計對象持久化設(shè)計面向?qū)ο蟮脑O(shè)計原則設(shè)計模式79內(nèi)容提綱面向?qū)ο笤O(shè)計方法概述如何遵守設(shè)計原則設(shè)計原則不是死記硬背,而是要靈活運用一些成熟的設(shè)計模式可以幫助我們解決實際問題,并且符合設(shè)計原則如何遵守設(shè)計原則設(shè)計原則不是死記硬背,而是要靈活運用廣義上講:設(shè)計模式是對被用來在特定場景下解決一般設(shè)計問題的類和相互通信的對象的描述。狹義上講:設(shè)計模式就是對特定問題的描述或解決方案,往往直接對應(yīng)一段程序代碼。設(shè)計模式廣義上講:設(shè)計模式是對被用來在特定場景下解決一般設(shè)計問題的類作用:記錄和提煉了軟件人員在面向?qū)ο筌浖O(shè)計中的成功經(jīng)驗和問題的解決方案,是系統(tǒng)可復(fù)用的基礎(chǔ)。正確地使用設(shè)計模式,有助于快速開發(fā)出可復(fù)用的系統(tǒng)。意義:優(yōu)化的設(shè)計經(jīng)驗極高的復(fù)用性豐富的表達(dá)能力極低的耦合度設(shè)計模式的作用和研究意義作用:記錄和提煉了軟件人員在面向?qū)ο筌浖O(shè)計中的成功經(jīng)驗和問1.抽象工廠(AbstractFactory)模式2.適配器(Adapter)模式3.策略(Strategy)模式4.外觀(Facadepattern)模式經(jīng)典設(shè)計模式1.抽象工廠(AbstractFactory)模式經(jīng)典設(shè)從面向?qū)ο蠓治龅矫嫦驅(qū)ο笤O(shè)計,是一個逐漸擴充模型的過程,二者需要多次反復(fù)迭代。OOD主要包括兩個方面:系統(tǒng)設(shè)計和詳細(xì)設(shè)計。系統(tǒng)設(shè)計包括軟件體系結(jié)構(gòu)設(shè)計和硬件體系結(jié)構(gòu)設(shè)計詳細(xì)設(shè)計包括對象設(shè)計和對象持久化設(shè)計五個設(shè)計原則和設(shè)計模式小結(jié)從面向?qū)ο蠓治龅矫嫦驅(qū)ο笤O(shè)計,是一個逐漸擴充模型的過程,二者小結(jié)結(jié)構(gòu)化設(shè)計主要解決如何將需求分析階段的DFD圖推導(dǎo)為軟件系統(tǒng)結(jié)構(gòu),并用它提供的結(jié)構(gòu)圖描述之。系統(tǒng)設(shè)計時要遵循模塊化、自頂向下逐步求精的基本思想。詳細(xì)設(shè)計著重對各個模塊的邏輯進(jìn)行詳細(xì)設(shè)計。小結(jié)結(jié)構(gòu)化設(shè)計主要解決如何將需求分析階段的DFD圖推導(dǎo)作業(yè)
針對實驗課自己選的系統(tǒng),結(jié)合上次面向?qū)ο蠓治鏊贾玫淖鳂I(yè),進(jìn)行系統(tǒng)的面向?qū)ο笤O(shè)計主要任務(wù):基于上次面向?qū)ο蠓治龅淖鳂I(yè)中自己所選定的一個用例,識別類與對象、建立對象模型,并進(jìn)行詳細(xì)設(shè)計每個人都要做,一個組不能交一份,每個人要基于不同的用例來做作業(yè)軟件工程導(dǎo)論劉春計算機與信息工程學(xué)院軟件工程系軟件工程導(dǎo)論劉春兩種軟件開發(fā)方法結(jié)構(gòu)化方法面向?qū)ο蠓椒▋煞N軟件開發(fā)方法結(jié)構(gòu)化方法面向?qū)ο蠓椒?9回顧結(jié)構(gòu)化設(shè)計方法概述結(jié)構(gòu)化設(shè)計的基本概念兩種數(shù)據(jù)流類型:變換型和事務(wù)型系統(tǒng)體系結(jié)構(gòu)的描述工具:系統(tǒng)結(jié)構(gòu)圖結(jié)構(gòu)化設(shè)計過程概要設(shè)計變換分析事務(wù)分析詳細(xì)設(shè)計案例:圖書訂購系統(tǒng)3回顧結(jié)構(gòu)化設(shè)計方法概述變換分析是一系列設(shè)計步驟的總稱,經(jīng)過這些步驟把具有變換流特點的數(shù)據(jù)流圖映射成為一個預(yù)定義的程序結(jié)構(gòu)模板。變換分析的步驟:1.對DFD圖的分析和劃分2.進(jìn)行第一級分解,設(shè)計頂層和第一層模塊3.第二級分解,設(shè)計中、下層模塊概要設(shè)計:變換分析變換分析是一系列設(shè)計步驟的總稱,經(jīng)過這些步驟把具有變換流特點第九講:面向?qū)ο蟮脑O(shè)計課件1,第一層分解,設(shè)計頂層和第一層1,第一層分解,設(shè)計頂層和第一層第一層分解的另外一種畫法第一層分解的另外一種畫法1,第一層分解,設(shè)計頂層和第一層2,第二層分解1,第一層分解,設(shè)計頂層和第一層2,第二層分解1,第一層分解,設(shè)計頂層和第一層2,第二層分解1,第一層分解,設(shè)計頂層和第一層2,第二層分解1,第一層分解,設(shè)計頂層和第一層2,第二層分解1,第一層分解,設(shè)計頂層和第一層2,第二層分解第九講:面向?qū)ο蟮脑O(shè)計課件事務(wù):引起式、觸發(fā)式啟動單一動作或一串動作的任何數(shù)據(jù)、控制、信號、事件或狀態(tài)變化。事務(wù)分析:由事務(wù)型數(shù)據(jù)流圖映射為軟件結(jié)構(gòu)的過程。概要設(shè)計:事務(wù)分析事務(wù):引起式、觸發(fā)式啟動單一動作或一串動作的任何數(shù)據(jù)、控制、(1)確定輸入、事務(wù)變換和輸出路徑的集合(劃分集合)。(2)根據(jù)事務(wù)的功能設(shè)計—個總控模塊(設(shè)計總控)。(3)確定頂層模塊和第一層模塊(建立映射)。(4)繼續(xù)下層分解(遞歸自展)。事務(wù)分析的具體過程(1)確定輸入、事務(wù)變換和輸出路徑的集合(劃分集合)。事務(wù)第九講:面向?qū)ο蟮脑O(shè)計課件第九講:面向?qū)ο蟮脑O(shè)計課件第九講:面向?qū)ο蟮脑O(shè)計課件變換-事務(wù)混合:一個數(shù)據(jù)流圖中既有變換又有事務(wù)分析策略:以一種分析(比如以變換分析)為主,另一種分析為輔概要設(shè)計:變換-事務(wù)混合型分析變換-事務(wù)混合:一個數(shù)據(jù)流圖中既有變換又有事務(wù)概要設(shè)計:變換變換-事務(wù)混合型分析變換-事務(wù)混合型分析第九講:面向?qū)ο蟮脑O(shè)計課件兩種軟件開發(fā)方法結(jié)構(gòu)化方法面向?qū)ο蠓椒▋煞N軟件開發(fā)方法結(jié)構(gòu)化方法面向?qū)ο蠓椒嫦驅(qū)ο蠓椒嫦驅(qū)ο蠓治觯∣bjectOrientedAnalysis,OOA)分析和理解問題域,找出描述問題域和系統(tǒng)責(zé)任所需的類及對象,分析它們的內(nèi)部構(gòu)成和外部關(guān)系,建立OOA模型。面向?qū)ο笤O(shè)計(ObjectOrientedDesign,OOD)將OOA模型直接變成OOD模型,并且補充一些與實現(xiàn)有關(guān)的部分,如:算法、人機界面、數(shù)據(jù)存儲、任務(wù)管理等。面向?qū)ο缶幊蹋∣bjectOrientedProgramming,OOP)用一種面向?qū)ο蟮木幊陶Z言將OOD模型中的各個成分編寫成程序面向?qū)ο蟮臏y試(ObjectOrientedTesting,OOT)面向?qū)ο筌浖S護(ObjectOrientedSoftwareMaintenance,OOSM)107面向?qū)ο蠓椒嫦驅(qū)ο蠓治觯∣bjectOriented108用例驅(qū)動的面向?qū)ο蠓治鲇美#航⒂脩舻男枨竽P停捎美龍D體現(xiàn)具體過程:定義系統(tǒng)、確定參與者、確定用例、描述用例、確定用例之間的關(guān)系、評審用例模型對象建模建立系統(tǒng)的分析模型,由類圖體現(xiàn)具體過程:理解用例、識別類和類的屬性、識別類的操作、確定類與類之間的關(guān)系、評審模型22用例驅(qū)動的面向?qū)ο蠓治鲇美#旱诰胖v:面向?qū)ο蟮脑O(shè)計課件對用例“開戶”進(jìn)行分析之后得到的類圖對用例“開戶”進(jìn)行分析之后得到的類圖第九講:面向?qū)ο蟮脑O(shè)計課件112第十章面向?qū)ο笤O(shè)計方法26第十章113內(nèi)容提綱面向?qū)ο笤O(shè)計方法概述系統(tǒng)設(shè)計軟件體系結(jié)構(gòu)設(shè)計硬件體系結(jié)構(gòu)設(shè)計詳細(xì)設(shè)計對象設(shè)計對象持久化設(shè)計面向?qū)ο蟮脑O(shè)計原則設(shè)計模式27內(nèi)容提綱面向?qū)ο笤O(shè)計方法概述主要考慮“如何實現(xiàn)”的問題,將面向?qū)ο蠓治鰟?chuàng)建的分析模型,轉(zhuǎn)變?yōu)樽鳛檐浖?gòu)造藍(lán)圖的設(shè)計模型。不僅要說明為實現(xiàn)需要必須引入的類、對象及它們之間是如何關(guān)聯(lián)的,描述對象間如何傳遞消息和對象的行為如何實現(xiàn),還必須從提高軟件設(shè)計質(zhì)量和效率方面考慮如何改進(jìn)類結(jié)構(gòu)和可復(fù)用類庫中的類。面向?qū)ο笤O(shè)計方法概述主要考慮“如何實現(xiàn)”的問題,將面向?qū)ο蠓治鰟?chuàng)建的分析模型,轉(zhuǎn)系統(tǒng)設(shè)計:包括如何把整個系統(tǒng)分解為子系統(tǒng)、子系統(tǒng)的軟硬件布局等策略性決策詳細(xì)設(shè)計:根據(jù)具體的實現(xiàn)策略,對分析模型進(jìn)行擴充設(shè)計評審:對所設(shè)計的系統(tǒng)和系統(tǒng)設(shè)計規(guī)格說明報告逐一進(jìn)行嚴(yán)格審查,檢查是否達(dá)到系統(tǒng)設(shè)計功能要求面向?qū)ο笤O(shè)計的主要內(nèi)容系統(tǒng)設(shè)計:面向?qū)ο笤O(shè)計的主要內(nèi)容包括軟件系統(tǒng)體系結(jié)構(gòu)設(shè)計和硬件系統(tǒng)體系結(jié)構(gòu)設(shè)計
。軟件系統(tǒng)體系結(jié)構(gòu)是對系統(tǒng)的類、對象、接口以及相互間的交互和協(xié)作進(jìn)行描述。硬件系統(tǒng)體系結(jié)構(gòu)是要對系統(tǒng)的構(gòu)件、節(jié)點的配置進(jìn)行描述。系統(tǒng)設(shè)計包括軟件系統(tǒng)體系結(jié)構(gòu)設(shè)計和硬件系統(tǒng)體系結(jié)構(gòu)設(shè)計。系統(tǒng)設(shè)計軟件系統(tǒng)體系結(jié)構(gòu)把系統(tǒng)的各種功能分配到系統(tǒng)的不同組織部分,并詳細(xì)地描述各個組織部分之間是如何協(xié)調(diào)工作來實現(xiàn)這些功能的。軟件系統(tǒng)體系結(jié)構(gòu)模型的作用是:指明系統(tǒng)應(yīng)該具有的功能完成這些功能所涉及哪些類,這些類之間如何相互聯(lián)系類和它們的對象如何協(xié)作才能實現(xiàn)這些功能指明系統(tǒng)中各功能實現(xiàn)的先后時間順序軟件系統(tǒng)體系結(jié)構(gòu)設(shè)計軟件系統(tǒng)體系結(jié)構(gòu)把系統(tǒng)的各種功能分配到系統(tǒng)的不同組織部分,并分層的思路是將系統(tǒng)按功能職責(zé)進(jìn)行劃分,將同一類職責(zé)的功能抽象為一層在信息系統(tǒng)中軟件架構(gòu)通常采用典型的三層結(jié)構(gòu):表示層――用戶界面業(yè)務(wù)層――業(yè)務(wù)處理流程數(shù)據(jù)層――持久化存儲數(shù)據(jù)層在業(yè)務(wù)層中是可見的,業(yè)務(wù)層在表示層中是可見的,反之則不可見體系結(jié)構(gòu)設(shè)計的一種策略:分層分層的思路是將系統(tǒng)按功能職責(zé)進(jìn)行劃分,將同一類職責(zé)的功能抽象包(package)是一種邏輯分組手段,可以取UML模型中的任何一種事物,將相關(guān)成分聚在一起,以構(gòu)成更高層的組織單元最常用的方法是將類以包為單位進(jìn)行分組,比如三層結(jié)構(gòu)中的每一層中的所有類組成一個包一個包可以包含其它的包,高層包被分成若干子包,子包又可以在分成更小的包軟件體系結(jié)構(gòu)的描述工具:包包(package)是一種邏輯分組手段,可以取UML模型中的軟件體系結(jié)構(gòu)設(shè)計:如何分包分包:軟件類的分組兩種原則:共同封閉原則:一個包中的各個類應(yīng)該是由于相似的原則而改變,即將一組職責(zé)相似、但以不同方式實現(xiàn)的類歸為一個包中。比如按照層來進(jìn)行分包就是這種類型。共同復(fù)用原則:一個包中的各個類應(yīng)該一起被復(fù)用,復(fù)用其中一個可能需要同時考慮同一個包中的其它協(xié)作類。軟件體系結(jié)構(gòu)設(shè)計:如何分包分包:軟件類的分組軟件體系結(jié)構(gòu)的表示:包圖包圖用來描述包及其依賴關(guān)系當(dāng)表示層包中的類要使用業(yè)務(wù)包中的業(yè)務(wù)類提供的服務(wù)時,表示包就依賴于業(yè)務(wù)包。軟件體系結(jié)構(gòu)的表示:包圖包圖用來描述包及其依賴關(guān)系將信息系統(tǒng)中比較關(guān)心的對象分層,可分為三層:用戶界面層、業(yè)務(wù)層、數(shù)據(jù)訪問層,再把各層中的一些公共部分提出來:權(quán)限管理、異常處理,這樣得到包圖如下:軟件體系結(jié)構(gòu)的設(shè)計:以信息系統(tǒng)為例將信息系統(tǒng)中比較關(guān)心的對象分層,可分為三層:用戶界面層、業(yè)務(wù)用戶界面層的職責(zé)是:與用戶的交互,接收用戶的各種輸入以及輸出各種提示信息或處理結(jié)果。對于輸入的數(shù)據(jù)進(jìn)行數(shù)據(jù)校驗,過濾非法數(shù)據(jù)。向業(yè)務(wù)處理對象發(fā)送處理請求。1、用戶界面層用戶界面層的職責(zé)是:1、用戶界面層2、業(yè)務(wù)處理包業(yè)務(wù)處理層的職責(zé)是:實現(xiàn)各種業(yè)務(wù)處理邏輯或處理算法。驗證請求者的權(quán)限。向數(shù)據(jù)訪問對象發(fā)送數(shù)據(jù)持久化操作的請求。向用戶界面層返回處理結(jié)果。2、業(yè)務(wù)處理包業(yè)務(wù)處理層的職責(zé)是:3、數(shù)據(jù)訪問包數(shù)據(jù)訪問層的職責(zé)是:實現(xiàn)數(shù)據(jù)的持久化操作實現(xiàn)事務(wù)處理
3、數(shù)據(jù)訪問包數(shù)據(jù)訪問層的職責(zé)是:權(quán)限管理的主要職責(zé)是:驗證請求者的請求權(quán)限提供請求者的權(quán)限列表
注:業(yè)務(wù)處理對象通過權(quán)限管理對象來驗證權(quán)限
4、權(quán)限管理包權(quán)限管理的主要職責(zé)是:注:業(yè)務(wù)處理對象通過權(quán)限管理對象來驗證5、異常處理包異常處理的職責(zé):匯報運行時的詳細(xì)異常信息記錄異常處理日志5、異常處理包異常處理的職責(zé):6、信息系統(tǒng)的體系結(jié)構(gòu)的類圖
6、信息系統(tǒng)的體系結(jié)構(gòu)的類圖7、體系結(jié)構(gòu)的動態(tài)圖7、體系結(jié)構(gòu)的動態(tài)圖子系統(tǒng)當(dāng)按照業(yè)務(wù)功能或管理職能組織包,并對這樣的包進(jìn)行徹底的封裝實現(xiàn)后,一個高層的具有特定功能的可以運行的獨立構(gòu)件就產(chǎn)生了,稱為子系統(tǒng)(subsystem)子系統(tǒng)及其關(guān)系使用構(gòu)件圖描述子系統(tǒng)與包的區(qū)別子系統(tǒng)具有自身獨立的功能,是物理的具體軟件單位,而包只是軟件對象的邏輯組織方式軟件體系結(jié)構(gòu)設(shè)計:子系統(tǒng)(1)子系統(tǒng)軟件體系結(jié)構(gòu)設(shè)計:子系統(tǒng)(1)子系統(tǒng)的接口子系統(tǒng)對外可以提供有限的接口,只要接口不改變,不管子系統(tǒng)內(nèi)部發(fā)生什么變化,也不會影響到依賴于該子系統(tǒng)接口的其它子系統(tǒng)財務(wù)子系統(tǒng)將內(nèi)部操作進(jìn)行了封裝,但對外提供必要的接口。銷售子系統(tǒng)在執(zhí)行銷售業(yè)務(wù)過程中可以使用該接口對銷售數(shù)據(jù)執(zhí)行某些財務(wù)操作。對于銷售子系統(tǒng)而言,依賴的是財務(wù)子系統(tǒng)的接口,并不需要關(guān)心財務(wù)子系統(tǒng)的具體實現(xiàn)。軟件體系結(jié)構(gòu)設(shè)計:子系統(tǒng)(2)子系統(tǒng)的接口軟件體系結(jié)構(gòu)設(shè)計:子系統(tǒng)(2)132內(nèi)容提綱面向?qū)ο笤O(shè)計方法概述系統(tǒng)設(shè)計軟件體系結(jié)構(gòu)設(shè)計硬件體系結(jié)構(gòu)設(shè)計詳細(xì)設(shè)計對象設(shè)計對象持久化設(shè)計面向?qū)ο蟮脑O(shè)計原則設(shè)計模式46內(nèi)容提綱面向?qū)ο笤O(shè)計方法概述建立硬件系統(tǒng)體系結(jié)構(gòu)模型硬件系統(tǒng)體系結(jié)構(gòu)模型顯示硬件的結(jié)構(gòu),包括不同的節(jié)點和這些節(jié)點之間如何連接它還用圖形展示了代碼模塊的物理結(jié)構(gòu)和依賴關(guān)系硬件體系結(jié)構(gòu)設(shè)計建立硬件系統(tǒng)體系結(jié)構(gòu)模型硬件體系結(jié)構(gòu)設(shè)計指出系統(tǒng)中的類和對象涉及的具體程序或進(jìn)程。指明系統(tǒng)中配置的計算機和其他硬件設(shè)備。指明系統(tǒng)中各種計算機和硬件設(shè)備如何進(jìn)行相互連接。明確不同代碼文件之間的相互依賴關(guān)系。硬件體系結(jié)構(gòu)模型指出系統(tǒng)中的類和對象涉及的具體程序或進(jìn)程。硬件體系結(jié)構(gòu)模型硬件體系結(jié)構(gòu)的描述工具:配置圖硬件體系結(jié)構(gòu)的描述工具:配置圖136內(nèi)容提綱面向?qū)ο笤O(shè)計方法概述系統(tǒng)設(shè)計軟件體系結(jié)構(gòu)設(shè)計硬件體系結(jié)構(gòu)設(shè)計詳細(xì)設(shè)計對象設(shè)計對象持久化設(shè)計面向?qū)ο蟮脑O(shè)計原則設(shè)計模式50內(nèi)容提綱面向?qū)ο笤O(shè)計方法概述主要包括對象設(shè)計和對象持久化設(shè)計(數(shù)據(jù)庫設(shè)計)對象設(shè)計:
系統(tǒng)設(shè)計相當(dāng)于大樓的建筑平面圖,規(guī)定了每個房間的用途,以及房間與房間之間、房間與外部環(huán)境之間的連接機制。對象設(shè)計著重于每個房間的內(nèi)部細(xì)節(jié)對象持久化設(shè)計:
解決對象數(shù)據(jù)的存儲和檢索詳細(xì)設(shè)計主要包括對象設(shè)計和對象持久化設(shè)計(數(shù)據(jù)庫設(shè)計)詳細(xì)設(shè)計對象設(shè)計的主要任務(wù):定義對象完整的接口設(shè)計對象內(nèi)部結(jié)構(gòu)詳細(xì)設(shè)計:對象設(shè)計對象設(shè)計的主要任務(wù):詳細(xì)設(shè)計:對象設(shè)計對象的接口也稱為對象的協(xié)議、對象的界面。接口提供了一種方法,把對象的功能說明與具體實現(xiàn)區(qū)分開來,使得任何依賴和使用接口的客戶不必依賴于接口的具體實現(xiàn),有利于接口實現(xiàn)的替換。
接口描述可以用UML中類圖一樣的符號,省略屬性部分,《interface》要包含在類名部分中。定義對象的完整接口對象的接口也稱為對象的協(xié)議、對象的界面。定義對象的完整接口對屬性和操作進(jìn)行建模屬性建模:確定屬性的類型和數(shù)據(jù)結(jié)構(gòu)、可見性等將所有屬性的可見性設(shè)置為private僅通過set方法更新屬性僅通過get方法訪問屬性在屬性的set方法中,實現(xiàn)簡單的有效性驗證,而在獨立的驗證方法中實現(xiàn)復(fù)雜的邏輯驗證操作建模:確定操作的可見性、參數(shù)、返回值、算法等設(shè)計實現(xiàn)服務(wù)的算法。定義內(nèi)部類和內(nèi)部操作設(shè)計對象內(nèi)部結(jié)構(gòu)對屬性和操作進(jìn)行建模設(shè)計對象內(nèi)部結(jié)構(gòu)第九講:面向?qū)ο蟮脑O(shè)計課件在狀態(tài)建模中,狀態(tài)通過對象屬性的值來表示,狀態(tài)轉(zhuǎn)移是操作調(diào)用的結(jié)果,經(jīng)常會反映業(yè)務(wù)規(guī)則對象設(shè)計的進(jìn)一步:狀態(tài)建模在狀態(tài)建模中,狀態(tài)通過對象屬性的值來表示,對象設(shè)計的進(jìn)一步:143內(nèi)容提綱面向?qū)ο笤O(shè)計方法概述系統(tǒng)設(shè)計軟件體系結(jié)構(gòu)設(shè)計硬件體系結(jié)構(gòu)設(shè)計詳細(xì)設(shè)計對象設(shè)計對象持久化設(shè)計面向?qū)ο蟮脑O(shè)計原則設(shè)計模式57內(nèi)容提綱面向?qū)ο笤O(shè)計方法概述關(guān)注的是對象數(shù)據(jù)如何存儲數(shù)據(jù)存儲管理的一般模式文件管理模式關(guān)系數(shù)據(jù)庫管理系統(tǒng)面向?qū)ο髷?shù)據(jù)庫管理系統(tǒng)詳細(xì)設(shè)計:對象持久化設(shè)計關(guān)注的是對象數(shù)據(jù)如何存儲詳細(xì)設(shè)計:對象持久化設(shè)計關(guān)系數(shù)據(jù)庫與面向?qū)ο笾械母拍畲嬖谝欢ǖ膶?yīng)對象持久化設(shè)計的方法:基于關(guān)系數(shù)據(jù)庫存儲關(guān)系數(shù)據(jù)庫與面向?qū)ο笾械母拍畲嬖谝欢ǖ膶?yīng)對象持久化設(shè)計的方永久類的存儲設(shè)計永久類一般都是實體類,對應(yīng)的是系統(tǒng)中涉及的數(shù)據(jù)每一個永久類映射為一個關(guān)系表,表格的列或字段對應(yīng)類的屬性,而行或記錄對應(yīng)類的實例(對象)關(guān)聯(lián)的存儲設(shè)計1:1關(guān)聯(lián):在一個類對應(yīng)的表中用外鍵隱含管理1:n關(guān)聯(lián):在n端類對應(yīng)的表中用外鍵隱含關(guān)聯(lián)n:n關(guān)聯(lián):轉(zhuǎn)換成1:n管理,然后按照上面的方法進(jìn)行轉(zhuǎn)換基于關(guān)系數(shù)據(jù)庫的對象持久化設(shè)計永久類的存儲設(shè)計基于關(guān)系數(shù)據(jù)庫的對象持久化設(shè)計1:1關(guān)聯(lián)1:1關(guān)聯(lián)1:n關(guān)聯(lián)1:n關(guān)聯(lián)149內(nèi)容提綱面向?qū)ο笤O(shè)計方法概述系統(tǒng)設(shè)計軟件體系結(jié)構(gòu)設(shè)計硬件體系結(jié)構(gòu)設(shè)計詳細(xì)設(shè)計對象設(shè)計對象持久化設(shè)計面向?qū)ο蟮脑O(shè)計原則設(shè)計模式63內(nèi)容提綱面向?qū)ο笤O(shè)計方法概述系統(tǒng)設(shè)計審查就是對所設(shè)計的系統(tǒng)和系統(tǒng)設(shè)計規(guī)格說明報告逐一進(jìn)行嚴(yán)格審查,檢查是否達(dá)到系統(tǒng)設(shè)計功能要求。如果發(fā)現(xiàn)系統(tǒng)功能沒有達(dá)到用例的要求或有遺漏,一次返回逐步檢查,找到問題所在,補充設(shè)計實現(xiàn)其功能。這是一個反復(fù)迭代的過程。追求一個好的設(shè)計,以及設(shè)計完成后評價它是不是好的設(shè)計,不是一個籠統(tǒng)的概念,有一些具體的評價準(zhǔn)則。評審設(shè)計系統(tǒng)設(shè)計審查就是對所設(shè)計的系統(tǒng)和系統(tǒng)設(shè)計規(guī)格說明報告逐一進(jìn)行單一職責(zé)原則開放-封閉原則接口隔離原則Liskov替換原則依賴倒置原則面向?qū)ο笤O(shè)計原則單一職責(zé)原則面向?qū)ο笤O(shè)計原則一個類只完成某一類功能(職責(zé))盡可能避免出現(xiàn)一個“復(fù)合”功能的類——在同一個類中完成多個不同的功能1、單一職責(zé)原則一個類只完成某一類功能(職責(zé))1、單一職責(zé)原則第九講:面向?qū)ο蟮脑O(shè)計課件開放?封閉原則:軟件實體類(類、模塊、函數(shù)等)應(yīng)該是可以擴展、但是不可修改的基本思想:不用修改原有類就能擴展一個類的行為2、開放?封閉原則開放?封閉原則:軟件實體類(類、模塊、函數(shù)等)應(yīng)該是可以擴展什么是不封閉、不開放如下的模型可以處理月薪制和時薪制職工工資,如果還要增加一種職工類型,其計酬方式不同(如提成制),則必定要修改Employee類什么是不封閉、不開放如下的模型可以處理月薪制和時薪制職工工資如何改進(jìn)利用抽象機制封閉:Employee及其子類是封閉的開放:可以派生新的子類,實現(xiàn)新的需求如何改進(jìn)利用抽象機制Liskov替換原則:子類應(yīng)當(dāng)可以替換父類并出現(xiàn)在父類能夠出現(xiàn)的任何地方核心思想:子類型必須能夠替換它們的基類型,該原則能夠知道設(shè)計人員正確地進(jìn)行類的繼承與派生3、Liskov替換原則Liskov替換原則:子類應(yīng)當(dāng)可以替換父類并出現(xiàn)在父類能夠一個違反Liskov原則的例子正方形是長方形的一種特例一個違
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度旅游大巴租賃與景區(qū)住宿服務(wù)合同范本4篇
- 2025年版城市軌道交通退工程款合同樣本3篇
- 二零二五年度綠色能源項目投資買賣擔(dān)保協(xié)議4篇
- 2025年校園暑假工代理業(yè)務(wù)專項合作協(xié)議3篇
- 二零二五年物流行業(yè)掛靠運營合作協(xié)議3篇
- 2025年文化旅游物業(yè)租賃居間服務(wù)協(xié)議2篇
- 二零二五年度毛紗加工定制合同4篇
- 二零二五年酒店客房裝修施工期間顧客權(quán)益保護協(xié)議3篇
- 二零二五年度高端鴨鴨苗供應(yīng)價格合作合同3篇
- 2025年文化遺址保護用地土地使用權(quán)租賃與文化遺產(chǎn)保護合同3篇
- 舞蹈課家長會
- 2024年內(nèi)蒙古包頭市中考道德與法治試卷
- 湖南省長沙市2024-2025學(xué)年高二上學(xué)期期中考試地理試卷(含答案)
- 自來水質(zhì)量提升技術(shù)方案
- 金色簡約蛇年年終總結(jié)匯報模板
- 農(nóng)用地土壤環(huán)境質(zhì)量類別劃分技術(shù)指南(試行)(環(huán)辦土壤2017第97號)
- 反向開票政策解讀課件
- 工程周工作計劃
- 房地產(chǎn)銷售任務(wù)及激勵制度
- 六年級語文下冊14文言文二則《學(xué)弈》課件
- 2024年內(nèi)蒙古中考語文試卷五套合卷附答案
評論
0/150
提交評論