




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第七章信息系統(tǒng)的面向?qū)ο笤O(shè)計(jì)目錄7.1面向?qū)ο笤O(shè)計(jì)的基本概念7.2面向?qū)ο笤O(shè)計(jì)模型7.3面向?qū)ο笤O(shè)計(jì)過程7.4UML的設(shè)計(jì)和實(shí)現(xiàn)模型7.5設(shè)計(jì)模式7.6面向?qū)ο笤O(shè)計(jì)案例
從面向?qū)ο蠓治龅矫嫦驅(qū)ο笤O(shè)計(jì),是一個(gè)逐漸擴(kuò)充模型的過程。分析處理以問題為中心,設(shè)計(jì)則是面向計(jì)算機(jī)“實(shí)現(xiàn)”的開發(fā)活動(dòng)。面向?qū)ο笤O(shè)計(jì)就是在OOA模型的基礎(chǔ)上,考慮與實(shí)現(xiàn)系統(tǒng)有關(guān)的因素(計(jì)算機(jī)設(shè)備、操作系統(tǒng)、網(wǎng)絡(luò)、數(shù)據(jù)庫、編程語言),進(jìn)一步運(yùn)用OO方法對(duì)系統(tǒng)進(jìn)行設(shè)計(jì),產(chǎn)生一個(gè)可實(shí)現(xiàn)的設(shè)計(jì)模型即OOD模型。7.1面向?qū)ο笤O(shè)計(jì)的基本概念
7.1.1面向?qū)ο笤O(shè)計(jì)的基本概念特點(diǎn):(1)在面向?qū)ο蟮姆治龌A(chǔ)上,繼續(xù)運(yùn)用面向?qū)ο蠓椒ㄟM(jìn)行系統(tǒng)設(shè)計(jì),一般不依賴結(jié)構(gòu)化分析的結(jié)果。(2)與OOA采用一致的概念與原則,分別解決軟件生命周期分析階段和設(shè)計(jì)的問題,有不同的目標(biāo)和策略。(3)較全面地體現(xiàn)了面向?qū)ο蠓椒ǖ母拍钆c原則,例如類、對(duì)象、屬性、操作、封裝、繼承、消息、關(guān)聯(lián)等。(4)大多數(shù)方法是獨(dú)立于編程語言的,即通過面向?qū)ο蟮姆治雠c設(shè)計(jì)所建立的系統(tǒng)模型可以由不同的編程語言實(shí)現(xiàn)。7.1面向?qū)ο笤O(shè)計(jì)的基本概念
7.1.1面向?qū)ο笤O(shè)計(jì)的基本概念OOA與OOD之間主要存在的關(guān)系:OOA識(shí)別和定義的類和對(duì)象,是一些直接反映問題空間和系統(tǒng)任務(wù)的,而OOD除了對(duì)OOA的結(jié)果進(jìn)行擴(kuò)充外,其識(shí)別和定義的對(duì)象則是附加的,反映需求的一種實(shí)現(xiàn)(對(duì)話層、任務(wù)管理層、數(shù)據(jù)管理層),兩者均采用相同的面向?qū)ο蟾拍詈捅硎痉?,且有連續(xù)性,這是傳統(tǒng)軟件分析和設(shè)計(jì)方法無可比擬的。兩者是分別在不同抽象層次上進(jìn)行的。OOA獨(dú)立于程序設(shè)計(jì)語言,屬于較高的抽象層次。初步的OOD雖然在很大程度上也是與語言無關(guān)的,但詳細(xì)的OOD則一般會(huì)依賴于某種具體的程序設(shè)計(jì)語言,屬于較低的抽象層次。7.1面向?qū)ο笤O(shè)計(jì)的基本概念
7.1.1面向?qū)ο笤O(shè)計(jì)的基本概念OOD的主要工作內(nèi)容是以O(shè)OA模型為基礎(chǔ),對(duì)選定的實(shí)現(xiàn)平臺(tái)進(jìn)行系統(tǒng)設(shè)計(jì),這包括全局性的決策和局部細(xì)節(jié)的設(shè)計(jì)。OOD的目標(biāo)是產(chǎn)生一個(gè)滿足用戶需求,并且在選定的實(shí)現(xiàn)平臺(tái)上完全可以實(shí)現(xiàn)的OOD模型。OOD的全局性設(shè)計(jì)決策包括體系結(jié)構(gòu)、分布方案、并發(fā)控制、人機(jī)交互、數(shù)據(jù)管理等方面的問題;局部細(xì)節(jié)的設(shè)計(jì)是針對(duì)每個(gè)對(duì)象的7.1面向?qū)ο笤O(shè)計(jì)的基本概念
7.1.2面向?qū)ο笤O(shè)計(jì)目標(biāo)和任務(wù)面向?qū)ο笤O(shè)計(jì)的主要任務(wù)包括:設(shè)計(jì)軟件體系結(jié)構(gòu),定義系統(tǒng)的高層劃分,確定主要組件及其接口。詳細(xì)設(shè)計(jì)類或接口。對(duì)分析模型中獲得的概念類的屬性和方法進(jìn)行詳細(xì)設(shè)計(jì),完成含有數(shù)據(jù)類型、可見性、方法參數(shù)等完整內(nèi)容的設(shè)計(jì)類圖。設(shè)計(jì)用戶界面原型,并根據(jù)界面繪制程序執(zhí)行的交互圖。設(shè)計(jì)數(shù)據(jù)庫接口,解決面向?qū)ο竽P偷綌?shù)據(jù)庫模型的過渡。7.1面向?qū)ο笤O(shè)計(jì)的基本概念
7.1.2面向?qū)ο笤O(shè)計(jì)目標(biāo)和任務(wù)目錄7.1面向?qū)ο笤O(shè)計(jì)的基本概念7.2面向?qū)ο笤O(shè)計(jì)模型7.3面向?qū)ο笤O(shè)計(jì)過程7.4UML的設(shè)計(jì)和實(shí)現(xiàn)模型7.5設(shè)計(jì)模式7.6面向?qū)ο笤O(shè)計(jì)案例OOD模型:問題域部件(ProblemDomainComponent,PDC)
--是由與問題域有關(guān)的對(duì)象構(gòu)成,并且在特定的實(shí)現(xiàn)平臺(tái)上提供用戶所需要功能的組成部分人機(jī)交互部件(HumanInteractionComponent,HIC)
--是根據(jù)具體的界面支持系統(tǒng)(如窗口系統(tǒng)、圖形用戶界面或可視化編程環(huán)境)而設(shè)計(jì)的任務(wù)管理部件(TaskManagementComponent,TMC)
--結(jié)合每個(gè)任務(wù)單元,給出每個(gè)任務(wù)單元實(shí)現(xiàn)的連接方式而設(shè)計(jì)數(shù)據(jù)管理部件(DataManagementComponent,DMC)。
--根據(jù)具體的數(shù)據(jù)管理系統(tǒng)(如文件系統(tǒng)或數(shù)據(jù)庫管理系統(tǒng))而設(shè)計(jì)的7.2面向?qū)ο笤O(shè)計(jì)模型7.2面向?qū)ο笤O(shè)計(jì)模型10OOD模型框架——從兩個(gè)側(cè)面來描述人機(jī)交互部分?jǐn)?shù)據(jù)接口部分任務(wù)管理部分問題域部分從一個(gè)側(cè)面看:OOD模型包括幾個(gè)主要部分?一個(gè)核心加三個(gè)外圍需求模型輔助模型類圖模型規(guī)約從另一側(cè)面看:OOD模型每個(gè)部分如何用OO概念表達(dá)?采用與OOA相同的概念及模型組織方式目錄7.1面向?qū)ο笤O(shè)計(jì)的基本概念7.2面向?qū)ο笤O(shè)計(jì)模型7.3面向?qū)ο笤O(shè)計(jì)過程7.4UML的設(shè)計(jì)和實(shí)現(xiàn)模型7.5設(shè)計(jì)模式7.6面向?qū)ο笤O(shè)計(jì)案例在面向?qū)ο笤O(shè)計(jì)過程中要根據(jù)需求的變化,對(duì)面向?qū)ο蠓治霎a(chǎn)生模型中的某些類與對(duì)象、結(jié)構(gòu)、屬性、操作進(jìn)行組合與分解。要考慮對(duì)時(shí)間與空間的折衷、內(nèi)存管理、開發(fā)人員的變更、以及類的調(diào)整等。另外根據(jù)面向?qū)ο笤O(shè)計(jì)的附加原則,增加必要的類、屬性和關(guān)系。7.3面向?qū)ο笤O(shè)計(jì)過程
7.3.1問題域設(shè)計(jì)復(fù)用設(shè)計(jì)設(shè)計(jì)關(guān)聯(lián)問題域相關(guān)的類建立類間的協(xié)議調(diào)整繼承支持級(jí)別改進(jìn)性能(執(zhí)行效率和速度)加入較低層的構(gòu)件7.3面向?qū)ο笤O(shè)計(jì)過程
7.3.1問題域設(shè)計(jì)復(fù)用設(shè)計(jì)7.3面向?qū)ο笤O(shè)計(jì)過程
7.3.1問題域設(shè)計(jì)將復(fù)用類加到問題域,用“{復(fù)用}”修飾類名;比較所需類和可復(fù)用類的信息等于,直接復(fù)用多于,所需類從復(fù)用類繼承;少于,刪除復(fù)用類中的多余信息;約等于,怎么辦?7.3面向?qū)ο笤O(shè)計(jì)過程面向?qū)ο蟮南到y(tǒng)分析與設(shè)計(jì)車輛序號(hào)顏色式樣出廠年月序號(hào)認(rèn)證車輛序號(hào)廠商式樣序號(hào)認(rèn)證可復(fù)用的類問題域部分的類?復(fù)用?車輛序號(hào)廠商式樣序號(hào)認(rèn)證可復(fù)用的類第六章系統(tǒng)的面向?qū)ο笤O(shè)計(jì)通常在面向?qū)ο蠓治鲭A段給出了所需的屬性和操作,在設(shè)計(jì)階段必須根據(jù)需求把交互的細(xì)節(jié)加入到用戶界面的設(shè)計(jì)中,包括有效的人機(jī)交互所必需的實(shí)際顯示和輸入。人機(jī)交互部分的設(shè)計(jì)決策影響到人的感情和精神感受7.3面向?qū)ο笤O(shè)計(jì)過程
7.3.2人機(jī)交互設(shè)計(jì)人機(jī)交互設(shè)計(jì)策略1.用戶分類目的是明確使用對(duì)象,針對(duì)不同的使用對(duì)象設(shè)計(jì)不同的用戶界面,以適合不同用戶的需要。分類的原則按技能層次分類:外行/初學(xué)者/熟練者/專家;按組織層次分類:行政人員/管理人員/專業(yè)技術(shù)人員/其他辦事員;按職能分類:顧客/職員。7.3面向?qū)ο笤O(shè)計(jì)過程
7.3.2人機(jī)交互設(shè)計(jì)2.描述人及其任務(wù)腳本對(duì)定義的每一類人,描述其身份、目的、特征、關(guān)鍵的成功因素、熟練程度及任務(wù)劇本。什么人:分析員目的:要求一個(gè)工具來輔助分析工作。特點(diǎn):年齡=42歲;教育水平=大學(xué);限制=不要微型打印。成功的關(guān)鍵因素:工具應(yīng)當(dāng)使分析工作順利進(jìn)行而不應(yīng)與分析工作沖突;工具應(yīng)能捕獲假設(shè)和思想,能適時(shí)做出折衷;應(yīng)能及時(shí)給出模型各個(gè)部分的文檔,這與給出需求同等重要。熟練程度:專家任務(wù)腳本:主腳本-識(shí)別“核心的”類和對(duì)象;識(shí)別“核心”結(jié)構(gòu);在發(fā)現(xiàn)了新的屬性或操作時(shí)隨時(shí)都可以加進(jìn)模型中去。檢驗(yàn)?zāi)P停蛴∧P图捌淙课臋n。7.3面向?qū)ο笤O(shè)計(jì)過程
7.3.2人機(jī)交互設(shè)計(jì)3.設(shè)計(jì)命令層研究現(xiàn)行的人機(jī)交互活動(dòng)的內(nèi)容和準(zhǔn)則,建立一個(gè)初始的命令層,再細(xì)化命令層。要考慮:排列命令層次,把使用最頻繁的操作放在前面,按照用戶工作步驟排列;通過逐步分解,找到整體-部分模式,幫助在命令層中對(duì)操作進(jìn)行分塊;根據(jù)人們短期記憶的“”或“每次記憶3塊/每塊3項(xiàng)”的特點(diǎn),組織命令層中的服務(wù),寬度與深度不宜太大,減少操作步驟。7.3面向?qū)ο笤O(shè)計(jì)過程
7.3.2人機(jī)交互設(shè)計(jì)4.設(shè)計(jì)詳細(xì)的交互用戶界面設(shè)計(jì)原則:一致性,操作步驟少,不要“啞播放”:即每當(dāng)用戶等待系統(tǒng)完成一個(gè)活動(dòng)時(shí),要給出一些反饋信息,說明工作正在進(jìn)展,以及進(jìn)展的程度。在操作出現(xiàn)錯(cuò)誤時(shí),要恢復(fù)或部分恢復(fù)原來的狀態(tài)。提供聯(lián)機(jī)的幫助信息,具有趣味性。在外觀和感受上,盡量采用圖形界面,符合人類習(xí)慣,有一定吸引力。7.3面向?qū)ο笤O(shè)計(jì)過程
7.3.2人機(jī)交互設(shè)計(jì)5.繼續(xù)做原型做人機(jī)交互原型是HIC設(shè)計(jì)的基本工作,界面應(yīng)使人花最少的時(shí)間去掌握其使用技法,做幾個(gè)可候選的原型,讓人們一個(gè)一個(gè)地試用,要達(dá)到“臻于完善”,由衷地滿意。6.設(shè)計(jì)人機(jī)交互部件類從組織窗口和部件的人機(jī)交互設(shè)計(jì)開始,窗口作基本類、部件作屬性或部分類。特殊窗口作特殊類。每個(gè)類包括窗口的菜單條、下拉菜單、彈出菜單的定義,每個(gè)類還定義了用來創(chuàng)造菜單、加亮選擇等所需的服務(wù)。7.3面向?qū)ο笤O(shè)計(jì)過程
7.3.2人機(jī)交互設(shè)計(jì)7.根據(jù)GUI進(jìn)行設(shè)計(jì)圖形用戶界面分為字型、坐標(biāo)系統(tǒng)和事件。字型是字號(hào)、字體、樣式和顏色的組合;坐標(biāo)系統(tǒng)的要素有原點(diǎn)、顯式分辨率、顯示維數(shù)等;事件是GUI的核心,操作將對(duì)事件做出響應(yīng),這些事件可以來自人,也可以來自其他操作7.3面向?qū)ο笤O(shè)計(jì)過程
7.3.2人機(jī)交互設(shè)計(jì)7.3面向?qū)ο笤O(shè)計(jì)過程
7.3.2人機(jī)交互設(shè)計(jì)應(yīng)注意:人機(jī)界面只負(fù)責(zé)輸入、輸出和窗口更新,不含應(yīng)用邏輯或業(yè)務(wù)的處理;界面部分的元素向問題域?qū)ο蟀l(fā)送請(qǐng)求消息,后者給予響應(yīng);盡量減少交互部分與問題域部分的耦合。界面易變。問題域部分人機(jī)交互部分通過接口進(jìn)行聯(lián)系
在OOD中,任務(wù)是指系統(tǒng)為了達(dá)到某一設(shè)定目標(biāo)而進(jìn)行的一連串的數(shù)據(jù)操作(或服務(wù)),若干任務(wù)的并發(fā)執(zhí)行叫做多任務(wù)。任務(wù)能簡化并發(fā)行為的設(shè)計(jì)和編碼,TMC的設(shè)計(jì)就是針對(duì)任務(wù)項(xiàng),對(duì)一連串的數(shù)據(jù)操作進(jìn)行定義和封裝,對(duì)于多任務(wù)要確定任務(wù)協(xié)調(diào)部分,以達(dá)到系統(tǒng)在運(yùn)行中對(duì)各項(xiàng)任務(wù)進(jìn)行合理組織與管理。7.3面向?qū)ο笤O(shè)計(jì)過程
7.3.3任務(wù)管理設(shè)計(jì)1.TMC設(shè)計(jì)策略1)識(shí)別事件驅(qū)動(dòng)任務(wù)2)識(shí)別時(shí)鐘驅(qū)動(dòng)任務(wù)3)識(shí)別優(yōu)先任務(wù)和關(guān)鍵任務(wù)4)識(shí)別協(xié)調(diào)者5)審查任務(wù)6)定義任務(wù)7.3面向?qū)ο笤O(shè)計(jì)過程
7.3.3任務(wù)管理設(shè)計(jì)2.設(shè)計(jì)步驟1)建立OOA/OOD工作表格2)審查OOA/OOD工作表格3)構(gòu)建新的類
TM部件設(shè)計(jì)的首要任務(wù)就是構(gòu)建一些新的類,這些類建立的主要目的是處理并發(fā)執(zhí)行、中斷、調(diào)度以及特定平臺(tái)有關(guān)的一些問題。
任務(wù)管理部件一般在信息系統(tǒng)中使用較少,在控制系統(tǒng)中應(yīng)用較多。7.3面向?qū)ο笤O(shè)計(jì)過程
7.3.3任務(wù)管理設(shè)計(jì)
數(shù)據(jù)管理部分提供了在數(shù)據(jù)管理系統(tǒng)中存儲(chǔ)和檢索對(duì)象的基本結(jié)構(gòu),包括對(duì)永久性數(shù)據(jù)的訪問和管理。1.數(shù)據(jù)管理方法1)文件管理2)關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)3)面向?qū)ο髷?shù)據(jù)庫管理系統(tǒng)(OODBMS)7.3面向?qū)ο笤O(shè)計(jì)過程
7.3.4數(shù)據(jù)管理設(shè)計(jì)2.數(shù)據(jù)管理部分的設(shè)計(jì)1)數(shù)據(jù)存放設(shè)計(jì)
數(shù)據(jù)存放形式:文件存放方式、關(guān)系數(shù)據(jù)庫存放方式和面向?qū)ο髷?shù)據(jù)庫存放方式。2)設(shè)計(jì)相應(yīng)的操作為每個(gè)需要存儲(chǔ)的對(duì)象及其類增加用于存儲(chǔ)管理的屬性和操作,在類及對(duì)象的定義中加以描述。通過定義,每個(gè)需要存儲(chǔ)的對(duì)象將知道如何“存儲(chǔ)我自己”。7.3面向?qū)ο笤O(shè)計(jì)過程
7.3.4數(shù)據(jù)管理設(shè)計(jì)7.3面向?qū)ο笤O(shè)計(jì)過程
7.3.4數(shù)據(jù)管理設(shè)計(jì)1NF:數(shù)據(jù)庫表中的字段都是單一屬性的,不可再分2NF要求實(shí)體的屬性完全依賴于主關(guān)鍵字;3NF就是屬性不依賴于其它非主屬性,不存在傳遞依賴不符合第一范式的關(guān)系教師代碼姓名基本工資附加工資1001張興500.0060.001002李明799.0070.001003王進(jìn)400.0050.00不符合第一范式的關(guān)系符合第一范式的關(guān)系教師代碼姓名工資
基本工資附加工資1001張興500.0060.001002李明799.0070.001003王進(jìn)400.0050.007.3面向?qū)ο笤O(shè)計(jì)過程
7.3.4數(shù)據(jù)管理設(shè)計(jì)不符合第二范式的教師與研究課題關(guān)系教師代碼姓名職稱研究課題號(hào)研究課題名
分解為如下三個(gè)關(guān)系:·
教師關(guān)系:教師代碼、姓名、職稱;·
課題關(guān)系:研究課題號(hào)、研究課題名;·
教師與課題關(guān)系:教師代碼、研究課題號(hào)。目錄7.1面向?qū)ο笤O(shè)計(jì)的基本概念7.2面向?qū)ο笤O(shè)計(jì)模型7.3面向?qū)ο笤O(shè)計(jì)過程7.4UML的設(shè)計(jì)和實(shí)現(xiàn)模型7.5設(shè)計(jì)模式7.6面向?qū)ο笤O(shè)計(jì)案例
設(shè)計(jì)階段要討論的類或?qū)ο蠓Q為設(shè)計(jì)類,也叫軟件類。設(shè)計(jì)類的主要工作是對(duì)類屬性、方法及類關(guān)系等進(jìn)行詳細(xì)設(shè)計(jì),完成含有數(shù)據(jù)類型、可見性、方法參數(shù)等完整內(nèi)容的設(shè)計(jì)類圖。1.類的屬性設(shè)計(jì)設(shè)計(jì)類屬性主要是在設(shè)計(jì)模型中詳細(xì)表示屬性的類型和默認(rèn)的初始值以及屬性的可見性。
7.4.1設(shè)計(jì)類圖7.4UML的設(shè)計(jì)和實(shí)現(xiàn)模型2.類的方法設(shè)計(jì)即設(shè)計(jì)軟件對(duì)象所要執(zhí)行的操作,利用交互圖來為定義的軟件類設(shè)計(jì)方法。軟件類的方法就是一個(gè)對(duì)象應(yīng)該執(zhí)行的操作,有時(shí)也稱為對(duì)象的職責(zé)或義務(wù)。在交互圖中一般用職責(zé)來描述類的方法。
職責(zé)有兩種類型:行為型,即對(duì)象本身的方法,比如進(jìn)行一項(xiàng)計(jì)算、被創(chuàng)建時(shí)的初始化、執(zhí)行控制或協(xié)調(diào)的各項(xiàng)活動(dòng);了解型,即對(duì)象應(yīng)掌握的信息。
類的方法設(shè)計(jì)也就是職責(zé)的分配,該工作貫穿于交互圖的整個(gè)生成過程。
7.4.1設(shè)計(jì)類圖7.4UML的設(shè)計(jì)和實(shí)現(xiàn)模型通過消息發(fā)送分配職責(zé)
7.4.1設(shè)計(jì)類圖7.4UML的設(shè)計(jì)和實(shí)現(xiàn)模型3.類的關(guān)系設(shè)計(jì)類與類之間主要存在著關(guān)聯(lián)關(guān)系、依賴關(guān)系、泛化關(guān)系和實(shí)現(xiàn)關(guān)系。1)泛化設(shè)計(jì)泛化在面向?qū)ο笳Z言中使用繼承來實(shí)現(xiàn),繼承機(jī)制實(shí)現(xiàn)了子類擁有父類特性的這一過程。
7.4.1設(shè)計(jì)類圖7.4UML的設(shè)計(jì)和實(shí)現(xiàn)模型2)關(guān)聯(lián)設(shè)計(jì)在類圖中,關(guān)聯(lián)將類聯(lián)系在一起,其作用是建立一條鏈接,順著鏈接方向,一個(gè)對(duì)象能夠訪問到所關(guān)聯(lián)的另一個(gè)對(duì)象,同時(shí)使消息也沿著該鏈接發(fā)送到關(guān)聯(lián)對(duì)象。實(shí)現(xiàn)對(duì)象關(guān)聯(lián)的一個(gè)簡單策略就是:在關(guān)聯(lián)的源類中聲明一個(gè)屬性來保存對(duì)目標(biāo)類的實(shí)例的引用,這種屬性稱為關(guān)聯(lián)屬性或引用屬性。
7.4.1設(shè)計(jì)類圖7.4UML的設(shè)計(jì)和實(shí)現(xiàn)模型
如讀者類與圖書類的關(guān)聯(lián)關(guān)系可通過在讀者類中聲明一個(gè)圖書類的屬性來建立。PublicclassReader{……privateBookbook;//關(guān)聯(lián)屬性publicBookgetBook(){//獲取關(guān)聯(lián)對(duì)象
returnbook;}publicvoidsetBook(Bookbk){this.book=bk;}
……}
7.4.1設(shè)計(jì)類圖7.4UML的設(shè)計(jì)和實(shí)現(xiàn)模型1.活動(dòng)圖概念與表示活動(dòng)圖是把系統(tǒng)的一項(xiàng)行為表示成一個(gè)可以由計(jì)算機(jī)、人或者其他執(zhí)行者執(zhí)行的活動(dòng),通過給出活動(dòng)中的各個(gè)動(dòng)作以及動(dòng)作之間的轉(zhuǎn)移關(guān)系來描述系統(tǒng)的行為?;顒?dòng)圖的作用是對(duì)系統(tǒng)的行為建模。
活動(dòng)圖和狀態(tài)圖都是描述狀態(tài)和狀態(tài)轉(zhuǎn)換的表現(xiàn)形式,兩者有本質(zhì)區(qū)別:活動(dòng)圖著重表現(xiàn)從一個(gè)活動(dòng)到另一個(gè)活動(dòng)的控制流,是內(nèi)部處理驅(qū)動(dòng)的流程;而狀態(tài)圖著重表現(xiàn)從一個(gè)狀態(tài)到另一個(gè)狀態(tài)的流程,主要有外部事件的參與。
7.4.2活動(dòng)圖7.4UML的設(shè)計(jì)和實(shí)現(xiàn)模型2.活動(dòng)圖組成元素1)動(dòng)作狀態(tài)2)活動(dòng)狀態(tài)3)動(dòng)作流4)分支與合并5)分叉與匯合6)泳道
7.4.2活動(dòng)圖7.4UML的設(shè)計(jì)和實(shí)現(xiàn)模型
6.4.2活動(dòng)圖7.4UML的設(shè)計(jì)和實(shí)現(xiàn)模型1.組件概念及要素組件是定義了良好接口的物理實(shí)現(xiàn)單元,是系統(tǒng)中可替換的物理部件,一般情況下,組件表示將類、接口等邏輯元素打包而成的物理模塊。
組件要素:(1)規(guī)格說明(2)一個(gè)或多個(gè)實(shí)現(xiàn)(3)受約束的組件標(biāo)準(zhǔn)(4)封裝方法(5)部署方法
7.4.3組件圖7.4UML的設(shè)計(jì)和實(shí)現(xiàn)模型2.組件和類相同:兩者都有名稱,都可以實(shí)現(xiàn)一組接口都可以參與依賴、泛化和關(guān)聯(lián)關(guān)系都可以被嵌套都可以有實(shí)例都可以參與交互。
7.4.3組件圖7.4UML的設(shè)計(jì)和實(shí)現(xiàn)模型2.組件和類不同:類表示的是邏輯的抽象,而組件是存在于計(jì)算機(jī)中的物理抽象。也就是說,組件是可以部署的,而類不行。組件表示的是物理模塊,而不是邏輯模塊,與類處于不同的抽象級(jí)別。甚至可以說,組件就是由一組類與協(xié)作組成的類可以直接擁有操作和屬性,而組件僅擁有可以通過其接口訪問的操作。
7.4.3組件圖7.4UML的設(shè)計(jì)和實(shí)現(xiàn)模型3.組件圖的表示組件圖描述了軟件的各種組件和它們之間的依賴關(guān)系。組件圖中通常包括3種元素:組件、接口和依賴關(guān)系。
7.4.3組件圖7.4UML的設(shè)計(jì)和實(shí)現(xiàn)模型4.組件圖建模組件圖用于對(duì)面向?qū)ο笙到y(tǒng)的物理方面建模,建模的時(shí)候要找出系統(tǒng)中存在的組件、接口以及組件之間的依賴關(guān)系。具體的建模步驟如下:(1)用組件圖形符號(hào)表示系統(tǒng)中的組件。(2)定義、表示組件的接口。(3)確定、表示組件間的依賴關(guān)系。(4)將邏輯設(shè)計(jì)映射成物理實(shí)現(xiàn)。(5)對(duì)建模結(jié)果進(jìn)行精化和細(xì)化。
7.4.3組件圖7.4UML的設(shè)計(jì)和實(shí)現(xiàn)模型1.包的概念包(Package)是一種將其他模型元素組織起來,形成較大粒度的系統(tǒng)單位的機(jī)制。運(yùn)用包機(jī)制,模型的使用者可以在不同的粒度層次上觀察和理解系統(tǒng),當(dāng)需要了解系統(tǒng)的全局和概況時(shí),可以著眼與其高層的各個(gè)包;當(dāng)需要了解各部分的細(xì)節(jié)時(shí)則深入到各個(gè)包中閱讀其內(nèi)部成分。每個(gè)包的內(nèi)部應(yīng)該是高內(nèi)聚的,各個(gè)包之間應(yīng)該是低耦合的。
7.4.4包圖7.4UML的設(shè)計(jì)和實(shí)現(xiàn)模型2.包的表示法
7.4.4包圖7.4UML的設(shè)計(jì)和實(shí)現(xiàn)模型3.包之間的關(guān)系引入:是包之間的一種依賴關(guān)系,它表明一個(gè)包(源包)中的模型元素能夠直接引用另一個(gè)包(目標(biāo)包)中的模型元素。包引入:源包把整個(gè)一個(gè)包作為引入的目標(biāo)。元素引入:源包把一個(gè)包中個(gè)別的模型元素作為引入的目標(biāo)。包之間的引入關(guān)系
7.4.4包圖7.4UML的設(shè)計(jì)和實(shí)現(xiàn)模型3.包之間的關(guān)系泛化:一個(gè)包繼承了另一個(gè)包的全部內(nèi)容,同時(shí)又補(bǔ)充了自己增加的內(nèi)容。包的泛化關(guān)系
7.4.4包圖7.4UML的設(shè)計(jì)和實(shí)現(xiàn)模型4.包圖建模建模步驟:(1)瀏覽特定體系結(jié)構(gòu)視圖中的建模元素,找出在概念和語義上相互接近的元素所定義的組塊。(2)把每一個(gè)這樣的組塊放到一個(gè)包中。(3)對(duì)每一個(gè)包找出可以在包外訪問的元素,將這些元素標(biāo)記為公有的,把其他的元素標(biāo)記為受保護(hù)的或私有的。如果不確定則隱藏該元素。(4)確定包與包之間的關(guān)系,特別是引入關(guān)系。(5)確定包與包之間的泛化關(guān)系,以及包的多重性和重載。
7.4.4包圖7.4UML的設(shè)計(jì)和實(shí)現(xiàn)模型實(shí)現(xiàn)(Implementation)是把系統(tǒng)的設(shè)計(jì)模型轉(zhuǎn)換為可以交付測試的系統(tǒng)的一個(gè)設(shè)計(jì)過程,其重點(diǎn)是實(shí)現(xiàn)系統(tǒng)軟件的設(shè)計(jì)。系統(tǒng)軟件有源程序代碼、二進(jìn)制可執(zhí)行代碼和相關(guān)的數(shù)據(jù)結(jié)構(gòu)組成,這些內(nèi)容以實(shí)現(xiàn)組件的形式表現(xiàn),用實(shí)現(xiàn)模型來描述。實(shí)現(xiàn)模型則是對(duì)系統(tǒng)的抽象描述,用來描述實(shí)現(xiàn)系統(tǒng)的各個(gè)元素之間的組織關(guān)系。UML的實(shí)現(xiàn)模型可以用包圖、組件圖及配置圖來描述。
7.4.5UML實(shí)現(xiàn)模型7.4UML的設(shè)計(jì)和實(shí)現(xiàn)模型1.配置圖概念及表示配置圖(DeploymentDiagram)用來描述系統(tǒng)運(yùn)行時(shí)進(jìn)行處理的結(jié)點(diǎn)以及在結(jié)點(diǎn)上活動(dòng)的組件的配置。在UML2.0中,配置圖的定義是:“一種描述系統(tǒng)執(zhí)行結(jié)構(gòu)的圖,它把系統(tǒng)制品表示成結(jié)點(diǎn),通過通信路徑連接這些結(jié)點(diǎn)而構(gòu)成網(wǎng)絡(luò)。結(jié)點(diǎn)通常以嵌套的方式定義,既表示硬件設(shè)備,也表示軟件執(zhí)行環(huán)境。”配置圖中通常包括兩種元素:節(jié)點(diǎn)和關(guān)聯(lián)關(guān)系。
7.4.5UML實(shí)現(xiàn)模型7.4UML的設(shè)計(jì)和實(shí)現(xiàn)模型配置圖
7.4.5UML實(shí)現(xiàn)模型7.4UML的設(shè)計(jì)和實(shí)現(xiàn)模型2.配置圖的建模建模步驟:(1)對(duì)系統(tǒng)中的節(jié)點(diǎn)建模;(2)對(duì)節(jié)點(diǎn)之間的關(guān)聯(lián)關(guān)系建模;(3)對(duì)駐留在節(jié)點(diǎn)上的配置建模;(4)對(duì)節(jié)點(diǎn)上的配置之間的依賴關(guān)系建模;(5)對(duì)建模的結(jié)果進(jìn)行精化和細(xì)化。
7.4.5UML實(shí)現(xiàn)模型7.4UML的設(shè)計(jì)和實(shí)現(xiàn)模型目錄7.1面向?qū)ο笤O(shè)計(jì)的基本概念7.2面向?qū)ο笤O(shè)計(jì)模型7.3面向?qū)ο笤O(shè)計(jì)過程7.4UML的設(shè)計(jì)和實(shí)現(xiàn)模型7.5設(shè)計(jì)模式7.6面向?qū)ο笤O(shè)計(jì)案例
軟件系統(tǒng)設(shè)計(jì)的一個(gè)核心問題是軟件是否能復(fù)用。軟件復(fù)用一般分為3個(gè)不同的層次:最低層次的軟件復(fù)用技術(shù)是代碼級(jí)復(fù)用,主要由支持面向?qū)ο缶幊碳夹g(shù)的各種語言來提供支持;第二個(gè)層次是系統(tǒng)中的功能組件級(jí)別的復(fù)用,這可以通過應(yīng)用各種設(shè)計(jì)模式來實(shí)現(xiàn);最高層的復(fù)用則是系統(tǒng)體系架構(gòu)級(jí)的復(fù)用,如MVC架構(gòu)模式、前端控制器模式等7.5設(shè)計(jì)模式設(shè)計(jì)模式是一套被反復(fù)使用、多數(shù)人知曉的、經(jīng)過分類編目的、代碼設(shè)計(jì)經(jīng)驗(yàn)的總結(jié)。每一個(gè)設(shè)計(jì)模式系統(tǒng)地命名、解釋和評(píng)價(jià)了面向?qū)ο笙到y(tǒng)中一個(gè)重要的和重復(fù)出現(xiàn)的設(shè)計(jì)。設(shè)計(jì)模式的目標(biāo)是將設(shè)計(jì)經(jīng)驗(yàn)以人們能夠有效利用的形式記錄下來。
7.5.1設(shè)計(jì)模式概念7.5設(shè)計(jì)模式模式的基本要素:模式名稱(patternname)問題(problem)解決方案(solution)效果(consequences)
7.5.1設(shè)計(jì)模式概念7.5設(shè)計(jì)模式
一個(gè)設(shè)計(jì)良好的系統(tǒng)應(yīng)該容易理解,可變更性好,易于復(fù)用。為了實(shí)現(xiàn)代碼復(fù)用,必須遵守一些設(shè)計(jì)原則,而設(shè)計(jì)模式就是實(shí)現(xiàn)了這些原則,從而達(dá)到代碼復(fù)用、增加系統(tǒng)可維護(hù)性的目的。
7.5.2設(shè)計(jì)原則7.5設(shè)計(jì)模式1.開放-封閉原則(Open-ClosePrinciple,OCP)具體內(nèi)容是軟件實(shí)體(類、模塊、函數(shù)等)應(yīng)該是可以擴(kuò)展的,但是不可修改的。其基本思想是“不用修改原有類就能擴(kuò)展一個(gè)類的行為”。這個(gè)原則一般通過抽象和多態(tài)來體現(xiàn)其機(jī)制。我們通過抽象基類或接口來提供一個(gè)標(biāo)準(zhǔn)調(diào)用規(guī)范,每個(gè)實(shí)質(zhì)子類都繼承或者實(shí)現(xiàn)這個(gè)規(guī)范以達(dá)到不同的應(yīng)用操作。
7.5.2設(shè)計(jì)原則7.5設(shè)計(jì)模式
如下的模型可以處理月薪制和時(shí)薪制職工工資,如果還要增加一種職工類型,其計(jì)酬方式不同(如提成制),則必定要修改Employee類。
7.5.2設(shè)計(jì)原則7.5設(shè)計(jì)模式如何改進(jìn)?利用抽象機(jī)制封閉:Employee及其子類是封閉的開放:可以派生新的子類,實(shí)現(xiàn)新的需求
7.5.2設(shè)計(jì)原則7.5設(shè)計(jì)模式2.單一職責(zé)原則(Single-ResponsibilityPrinciple,SRP)對(duì)一個(gè)類而言,應(yīng)該僅有一個(gè)引起它變化的原因,也就是要求應(yīng)用系統(tǒng)中的一個(gè)具體設(shè)計(jì)元素(類)只完成某一類功能(職責(zé)),盡可能避免出現(xiàn)一個(gè)“復(fù)合”功能的類,即在同一個(gè)類中完成多個(gè)不同的功能。實(shí)質(zhì)上是對(duì)類的粒度劃分做出了一個(gè)規(guī)定。一個(gè)具備強(qiáng)大功能的龐大類并不是一個(gè)好的做法,不如將其分割成多個(gè)小類,每個(gè)小類僅提供某個(gè)單一的功能,這樣能夠減少類之間的耦合關(guān)系,當(dāng)需求發(fā)生變化時(shí),開發(fā)人員只需要修改與變化有關(guān)的代碼即可。
7.5.2設(shè)計(jì)原則7.5設(shè)計(jì)模式職責(zé)過多的職工類
7.5.2設(shè)計(jì)原則7.5設(shè)計(jì)模式對(duì)“雜湊類”進(jìn)行分解
7.5.2設(shè)計(jì)原則7.5設(shè)計(jì)模式3.Liskov替換原則指子類型必須能替換掉它們的基類型(BaseType)。這個(gè)原則實(shí)質(zhì)上就是多態(tài)的一種體現(xiàn),子類繼承或者覆蓋基類的方法,具有和基類完全相同的調(diào)用規(guī)范。本原則和開放-封閉原則關(guān)系密切,正是由于子類的可替換性,增加或修改任何一個(gè)子類型,基類不用修改(封閉),基類的使用者也可以得到擴(kuò)充或修改過的行為,從而使應(yīng)用系統(tǒng)能遵守開放-封閉原則。
7.5.2設(shè)計(jì)原則7.5設(shè)計(jì)模式4.依賴倒置原則(DependenceInversionPrinciple,DIP)指應(yīng)用系統(tǒng)中的高層模塊不應(yīng)該依賴于低層模塊,二者都應(yīng)該依賴于抽象。抽象不應(yīng)該依賴于細(xì)節(jié)實(shí)現(xiàn),實(shí)現(xiàn)細(xì)節(jié)應(yīng)該依賴于抽象。滿足依賴倒置原則的一個(gè)有效方法是面向接口編程實(shí)現(xiàn),即在具體實(shí)現(xiàn)某個(gè)類的功能時(shí),應(yīng)該為它需要的各個(gè)服務(wù)都聲明一個(gè)抽象接口,較低層次的類來實(shí)現(xiàn)這個(gè)接口,每個(gè)高層的類都通過該抽象接口使用下一層的類。
7.5.2設(shè)計(jì)原則7.5設(shè)計(jì)模式傳統(tǒng)的依賴層次高層使用低層的對(duì)象及其服務(wù)
7.5.2設(shè)計(jì)原則7.5設(shè)計(jì)模式都依賴于抽象設(shè)計(jì)抽象接口,上層類使用接口,下層類實(shí)現(xiàn)接口這樣Button類也可以得到重用,也許是開關(guān)燈,也許是開關(guān)電視,根據(jù)創(chuàng)建具體對(duì)象完成多態(tài)的行為。
7.5.2設(shè)計(jì)原則7.5設(shè)計(jì)模式5.接口隔離原則(InterfaceSegregationPrinciple,ISP)該原則主要思想是:一個(gè)類對(duì)另一個(gè)類的依賴關(guān)系應(yīng)該是建立在最小接口上的;另外,使用多個(gè)專門的接口比使用單一的復(fù)合總接口要優(yōu)越。這個(gè)原則實(shí)際上時(shí)單一職責(zé)原則應(yīng)用在接口設(shè)計(jì)的自然結(jié)果,遵守該原則就不會(huì)強(qiáng)迫接口的使用者依賴于他們不需要的方法。
7.5.2設(shè)計(jì)原則7.5設(shè)計(jì)模式
從接口隔離原則的角度出發(fā),根據(jù)客戶需要的不同,而為不同的客戶提供不同的服務(wù)是一種應(yīng)該得到鼓勵(lì)的做法。7.5設(shè)計(jì)模式一般根據(jù)設(shè)計(jì)模式涉及的解決問題的層次性來分類:(1)系統(tǒng)架構(gòu)模式(如J2EE核心模式中的各種架構(gòu)模式)。(2)基于職責(zé)分配的通用軟件模式(GRASP模式-GeneralResponsibilityAssignmentSoftwarePattern)。(3)代碼設(shè)計(jì)模式(如GoF的23種代碼設(shè)計(jì)模式)
7.5.3常用設(shè)計(jì)模式7.5設(shè)計(jì)模式1.基于職責(zé)分配的通用軟件模式(GRASP)
GRASP模式是面向?qū)ο笤O(shè)計(jì)中的基本設(shè)計(jì)模式,它描述了有關(guān)對(duì)象設(shè)計(jì)和職責(zé)分配的最基本的指導(dǎo)原則,能幫助設(shè)計(jì)人員理解和把握面向?qū)ο蠹夹g(shù)中基本的類設(shè)計(jì)技術(shù)、類職責(zé)的分配和類之間關(guān)系的確定。
GRASP提供的模式有9種:信息專家、創(chuàng)建者、高內(nèi)聚、低耦合、控制器、多態(tài)、中介、純虛構(gòu)和受保護(hù)變化。
7.5.3常用設(shè)計(jì)模式7.5設(shè)計(jì)模式1.基于職責(zé)分配的通用軟件模式(GRASP)1)信息專家模式(informationexpert)問題描述:對(duì)象設(shè)計(jì)和職責(zé)分配的通用原則是什么?解決方案:將職責(zé)分配給擁有履行一個(gè)職責(zé)所必需信息的類-信息專家。這個(gè)類就是相對(duì)于這個(gè)職責(zé)的信息專家類。優(yōu)點(diǎn):能夠產(chǎn)生低耦合的設(shè)計(jì)效果,也能產(chǎn)生高內(nèi)聚的設(shè)計(jì)結(jié)果。
7.5.3常用設(shè)計(jì)模式7.5設(shè)計(jì)模式1.基于職責(zé)分配的通用軟件模式(GRASP)1)信息專家模式(informationexpert)示例:在網(wǎng)上購物系統(tǒng)中,往購物車?yán)锾砑由唐窌r(shí),需要與購物車?yán)锏囊延猩唐繁容^,比較商品是否相同的方法應(yīng)該由購物車和商品哪個(gè)類來實(shí)現(xiàn)?
7.5.3常用設(shè)計(jì)模式7.5設(shè)計(jì)模式2)創(chuàng)建者模式問題描述:創(chuàng)建對(duì)象的職責(zé)具體由哪個(gè)類來承擔(dān),即某個(gè)類的對(duì)象實(shí)例由哪個(gè)相關(guān)類來創(chuàng)建或者統(tǒng)一由某個(gè)類集中創(chuàng)建?解決方案:如果符合下列的一個(gè)或多個(gè)條件①A是B的聚合(A類中包含B類的對(duì)象實(shí)例)。②A是B的容器(B類的對(duì)象實(shí)例在A類產(chǎn)生的容器中運(yùn)行)。③A持有初始化B的信息(數(shù)據(jù))。④A記錄B的實(shí)例。⑤A頻繁使用B類中的方法。就可以稱類A是類B的創(chuàng)建者。優(yōu)點(diǎn):支持低耦合,這種設(shè)計(jì)模式具有更低的維護(hù)依賴性和更高的復(fù)用機(jī)會(huì)。
7.5.3常用設(shè)計(jì)模式7.5設(shè)計(jì)模式2)創(chuàng)建者模式示例:在網(wǎng)上購物系統(tǒng)中商品對(duì)象該由誰來創(chuàng)建?由于訂單是商品的容器,同時(shí)訂單擁有初始化商品類對(duì)象實(shí)例的屬性信息,因此基于創(chuàng)建者模式的原則,商品信息類的對(duì)象實(shí)例應(yīng)該由訂單類來創(chuàng)建。
7.5.3常用設(shè)計(jì)模式7.5設(shè)計(jì)模式3)高內(nèi)聚模式問題描述:如何讓復(fù)雜性可管理?解決方案:分配一個(gè)職責(zé),保持類的高內(nèi)聚。高內(nèi)聚設(shè)計(jì)具體體現(xiàn)為系統(tǒng)中的各個(gè)功能模塊是相對(duì)獨(dú)立和分離的。為了達(dá)到“高內(nèi)聚”的設(shè)計(jì)目標(biāo),常用的設(shè)計(jì)手段是功能分解,即把應(yīng)用系統(tǒng)中各個(gè)具體的功能及實(shí)現(xiàn)該功能的模塊程序代碼分解開。優(yōu)點(diǎn):功能獨(dú)立、接口簡化,易于多人合作開發(fā)實(shí)現(xiàn);維護(hù)和擴(kuò)展容易,復(fù)用性好。
7.5.3常用設(shè)計(jì)模式7.5設(shè)計(jì)模式3)高內(nèi)聚模式示例:在網(wǎng)上購物系統(tǒng)中對(duì)訂單數(shù)據(jù)保存方式的要求是既可以保存為XML格式的文件,也可以保存到某個(gè)物理數(shù)據(jù)庫系統(tǒng)中。按照高內(nèi)聚模式,比較好的設(shè)計(jì)方案是不同的職責(zé)由不同的類來實(shí)現(xiàn)。因此可以設(shè)計(jì)一個(gè)具體的“訂單數(shù)據(jù)訪問的接口”,并在該接口中規(guī)定了具體的功能要求,同時(shí)再為該接口提供兩個(gè)不同的實(shí)現(xiàn)類,一個(gè)類的職責(zé)是保存XML格式的文件,另一個(gè)類的職責(zé)則是實(shí)現(xiàn)將數(shù)據(jù)保存到物理數(shù)據(jù)庫中。
7.5.3常用設(shè)計(jì)模式7.5設(shè)計(jì)模式4)低耦合模式問題:如何支持低依賴性以及增加復(fù)用性?解決方案:分配職責(zé)時(shí)使(不必要的)耦合保持為最低,同時(shí)盡可能減少或者除去不必要的耦合關(guān)系。優(yōu)點(diǎn):類之間松散聯(lián)系,不受其它類或組件改變的影響,復(fù)用方便。
7.5.3常用設(shè)計(jì)模式7.5設(shè)計(jì)模式4)低耦合模式示例:在網(wǎng)上購物系統(tǒng)中,當(dāng)訂購商品金額達(dá)到要求會(huì)享受優(yōu)惠政策。訂購商品時(shí)產(chǎn)生訂購服務(wù),訂購消息會(huì)先發(fā)給商品對(duì)象,由該對(duì)象負(fù)責(zé)請(qǐng)求訂購對(duì)象計(jì)算訂單金額,并負(fù)責(zé)創(chuàng)建優(yōu)惠對(duì)象,可以看到,商品對(duì)象依賴了訂購對(duì)象和優(yōu)惠對(duì)象,且優(yōu)惠對(duì)象與訂購對(duì)象有關(guān)聯(lián),三者都存在耦合。但實(shí)際上優(yōu)惠對(duì)象與訂購對(duì)象密切相關(guān),創(chuàng)建優(yōu)惠對(duì)象的職責(zé)交給訂購類應(yīng)該更合適,這樣就將耦合限制在商品對(duì)象和訂購對(duì)象、訂購對(duì)象和優(yōu)惠對(duì)象之間,達(dá)到了低耦合的目的。
7.5.3常用設(shè)計(jì)模式7.5設(shè)計(jì)模式5)控制器模式問題:誰負(fù)責(zé)處理一個(gè)與輸入有關(guān)的系統(tǒng)事件?解決方案:當(dāng)類代表下列一種情況時(shí),為它分配接收或處理系統(tǒng)事件消息的職責(zé)。①代表整個(gè)系統(tǒng)、設(shè)備或子系統(tǒng)(外觀控制器)。②代表系統(tǒng)事件發(fā)生的用例場景(用例或會(huì)話控制器)。通常使用控制器類來處理一個(gè)用例的所有系統(tǒng)事件,完成從表現(xiàn)層(界面類)到領(lǐng)域?qū)樱▽?shí)體類)的消息分發(fā)和控制。優(yōu)點(diǎn):能確保表現(xiàn)層不處理任何業(yè)務(wù)邏輯,分離出的業(yè)務(wù)流程封裝后能得到復(fù)用。表現(xiàn)層只負(fù)責(zé)數(shù)據(jù)的輸入輸出格式,因此比較容易維護(hù)。
7.5.3常用設(shè)計(jì)模式7.5設(shè)計(jì)模式5)控制器模式示例:在web應(yīng)用系統(tǒng)中可以采用Servlet組件來構(gòu)建系統(tǒng)的全局控制器,為整個(gè)系統(tǒng)或某個(gè)子系統(tǒng)提供統(tǒng)一的訪問入口,由它接收來自表現(xiàn)層的請(qǐng)求消息,調(diào)用一個(gè)或多個(gè)JavaBean完成業(yè)務(wù)邏輯處理。Struts框架中提供的Action組件類,就是控制器設(shè)計(jì)思想的具體應(yīng)用。
7.5.3常用設(shè)計(jì)模式7.5設(shè)計(jì)模式2.GoF設(shè)計(jì)模式對(duì)設(shè)計(jì)模式影響最深的書當(dāng)推Gamma、Helm、Johnson和Vissides的《設(shè)計(jì)模式:可復(fù)用面向?qū)ο筌浖A(chǔ)》,該書中總結(jié)了23種模式,習(xí)慣上稱為GoF設(shè)計(jì)模式。GoF設(shè)計(jì)模式并不是一種具體的技術(shù),它更多講述的是編程的思想和具體解決問題的方法,該模式中的一個(gè)重要原則就是系統(tǒng)開發(fā)中的各個(gè)模塊類盡可能地可被重用,并簡化對(duì)問題的實(shí)現(xiàn)代碼。對(duì)GoF設(shè)計(jì)模式的分類有多種不同的方式,從應(yīng)用目的的角度可分為:創(chuàng)建型模式、結(jié)構(gòu)型模式和行為型模式三類。
7.5.3常用設(shè)計(jì)模式7.5設(shè)計(jì)模式以創(chuàng)建型模式為例創(chuàng)建型模式是涉及類的對(duì)象在實(shí)例化時(shí)使用的各種模式,描述怎樣創(chuàng)建一個(gè)對(duì)象,以及如何隱藏對(duì)象創(chuàng)建的細(xì)節(jié),從而使得程序代碼不依賴于具體的對(duì)象,這樣在增加一個(gè)新對(duì)象時(shí)對(duì)代碼改動(dòng)非常小。
7.5.3常用設(shè)計(jì)模式7.5設(shè)計(jì)模式(1)抽象工廠模式(abstractfactory):該模式提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無需指定它們具體的類。參與角色:抽象工廠(AbstractFactory),是工廠方法模式的核心,它是與應(yīng)用系統(tǒng)商業(yè)邏輯無關(guān)的;具體工廠(ConcreteFactory),這個(gè)角色直接在客戶端的調(diào)用下創(chuàng)建產(chǎn)品的實(shí)例,它含有選擇合適的產(chǎn)品對(duì)象的邏輯,而這個(gè)邏輯是與應(yīng)用系統(tǒng)的商業(yè)邏輯緊密相關(guān)的;抽象產(chǎn)品(AbstractProduct),擔(dān)任這個(gè)角色的類是工廠方法模式所創(chuàng)建的對(duì)象的父類或它們共同擁有的接口;具體產(chǎn)品(ConcreteProduct),這個(gè)角色用以代表具體的產(chǎn)品;Client,僅使用由AbstractFactory和AbstractProduct類聲明的接口。
7.5.3常用設(shè)計(jì)模式7.5設(shè)計(jì)模式
7.5.3常用設(shè)計(jì)模式7.5設(shè)計(jì)模式(2)生成器模式(Builder)將一個(gè)復(fù)雜類的表示與其構(gòu)造相分離,使得相同的構(gòu)建過程能夠得出不同的表示。(3)工廠方法模式(factorymethod)定義一個(gè)創(chuàng)建對(duì)象的接口,而讓子類來決定實(shí)例化哪個(gè)類。工廠方法使得子類實(shí)例化的過程推遲。(4)原型模式(prototype)用原型實(shí)例制定創(chuàng)建對(duì)象的類型,并且通過拷貝這個(gè)原型來創(chuàng)建新的對(duì)象。(5)單例模式(singleton)保證一個(gè)類僅有一個(gè)實(shí)例,并提供一個(gè)訪問它的全局訪問點(diǎn)。
7.5.3常用設(shè)計(jì)模式7.5設(shè)計(jì)模式目錄7.1面向?qū)ο笤O(shè)計(jì)的基本概念7.2面向?qū)ο笤O(shè)計(jì)模型7.3面向?qū)ο笤O(shè)計(jì)過程7.4UML的設(shè)計(jì)和實(shí)現(xiàn)模型7.5設(shè)計(jì)模式7.6面向?qū)ο笤O(shè)計(jì)案例
系統(tǒng)平臺(tái)是系統(tǒng)開發(fā)和運(yùn)行的環(huán)境。圖書管理系統(tǒng)的開發(fā)和運(yùn)行環(huán)境如下:1.操作系統(tǒng)圖書管理系統(tǒng)可以運(yùn)行在Windows2000/WindowsXP等操作系統(tǒng)下。2.支撐軟件支撐軟件是協(xié)助人們開發(fā)和維護(hù)系統(tǒng)的工具和環(huán)境軟件。數(shù)據(jù)庫系統(tǒng)、集成開發(fā)環(huán)境等都屬于支撐軟件。圖書管理系統(tǒng)使用的數(shù)據(jù)庫管理系統(tǒng)是MicrosoftSQL2000,開發(fā)環(huán)境是eclipse3.3,分析設(shè)計(jì)建模環(huán)境是Rose2003。
7.6.1系統(tǒng)平臺(tái)設(shè)計(jì)7.6面向?qū)ο笤O(shè)計(jì)案例1.用戶界面包(UIPackage)描述系統(tǒng)用戶界面使用的類,這些類提供用戶瀏覽、輸入數(shù)據(jù)等操作。用戶界面包是與業(yè)務(wù)模型包相互協(xié)作的,可以調(diào)用業(yè)務(wù)模型包中的類實(shí)例方法對(duì)圖書信息進(jìn)行檢索、添加和修改等操作。2.業(yè)務(wù)模型包(BMPackage)包括了分析階段主要的類,如圖書類、讀者類等,在設(shè)計(jì)階段要將進(jìn)一步細(xì)化這些類,從而完整地定義它們的操作,并為它們?cè)黾映志眯源鎯?chǔ)支持。該包可以與數(shù)據(jù)庫包相互協(xié)作,訪問數(shù)據(jù)庫中的持久數(shù)據(jù)。
7.6.2結(jié)構(gòu)設(shè)計(jì)7.6面向?qū)ο笤O(shè)計(jì)案例3.數(shù)據(jù)庫包(DBPackage)該包為業(yè)務(wù)模型包中的類提供數(shù)據(jù)存取服務(wù),為這些類實(shí)現(xiàn)數(shù)據(jù)的持久性存儲(chǔ)功能。4.組件包(ComponentsPackage)組件包中包含一些可以被系統(tǒng)中其他包所使用的公共服務(wù)。
7.6.2結(jié)構(gòu)設(shè)計(jì)7.6面向?qū)ο笤O(shè)計(jì)案例6.6.2結(jié)構(gòu)設(shè)計(jì)結(jié)構(gòu)設(shè)計(jì)是把系統(tǒng)劃分成相對(duì)獨(dú)立、功能相對(duì)完整的子系統(tǒng)(包),并標(biāo)識(shí)子系統(tǒng)(包)及其聯(lián)系。圖書管理系統(tǒng)的結(jié)構(gòu)視圖由用戶界面包、業(yè)務(wù)模型包、數(shù)據(jù)庫包和組件包組成
7.6.2結(jié)構(gòu)設(shè)計(jì)7.6面向?qū)ο笤O(shè)計(jì)案例用例設(shè)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度貓咪寵物美容學(xué)院加盟買賣協(xié)議
- 高中家長會(huì):家校攜手·共創(chuàng)明天課件-高一上學(xué)期家長會(huì)
- 常年聘請(qǐng)法律顧問的合同
- 2025年遼寧貨運(yùn)從業(yè)資格證試題庫及答案
- 金秋助學(xué)發(fā)言稿
- 智能家居產(chǎn)品市場占有率表格
- 建筑工程安全施工協(xié)議書
- 心理學(xué)社交技巧考試試題
- 各類金融資產(chǎn)占比圖表(按類型分類)
- 2025屆河北省邯鄲市名校高三模擬預(yù)測歷史試題(解析版)
- 電工流體 變壓器和開關(guān)用的未使用過的礦物絕緣油
- 2024年安徽醫(yī)學(xué)高等專科學(xué)校單招職業(yè)適應(yīng)性測試題庫帶答案
- 聲門下分泌物引流的應(yīng)用專家講座
- 7.1.2全概率公式課件高二下學(xué)期數(shù)學(xué)人教A版選擇性
- 硝酸脂類藥物的作用注意事項(xiàng)不良反應(yīng)
- 科普版小學(xué)英語六年級(jí)下冊(cè)全冊(cè)教案
- 腦梗合并心衰護(hù)理查房
- 婦聯(lián)普法知識(shí)競賽參考試題庫300題(含答案)
- T-NAHIEM 101-2023 急診科建設(shè)與設(shè)備配置標(biāo)準(zhǔn)
- 【綠色家園你我共建】約會(huì)春天擁抱綠色-2024年3月12日植樹節(jié)主題班會(huì)(小學(xué)通用版)
- 解分式方程50題八年級(jí)數(shù)學(xué)上冊(cè)
評(píng)論
0/150
提交評(píng)論