第6章 面向?qū)ο笤O(shè)計(jì)_第1頁
第6章 面向?qū)ο笤O(shè)計(jì)_第2頁
第6章 面向?qū)ο笤O(shè)計(jì)_第3頁
第6章 面向?qū)ο笤O(shè)計(jì)_第4頁
第6章 面向?qū)ο笤O(shè)計(jì)_第5頁
已閱讀5頁,還剩71頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

圖:活動(dòng)圖統(tǒng)一建模語言UML

活動(dòng)圖反映系統(tǒng)中從一個(gè)活動(dòng)到另一個(gè)活動(dòng)的流程,強(qiáng)調(diào)對象間的控制流程活動(dòng)圖的組成活動(dòng)(Activity)轉(zhuǎn)移(Transition)泳道(Swimlane)分支(Branch)分叉和匯合(ForkandJoin)對象流(ObjectStream)圖:活動(dòng)圖統(tǒng)一建模語言UML

活動(dòng)圖反映系統(tǒng)中從一個(gè)活動(dòng)到另一個(gè)活動(dòng)的流程,強(qiáng)調(diào)對象間的控制流程圖:組件圖統(tǒng)一建模語言UML組件圖描述組件以及它們之間的關(guān)系,表示系統(tǒng)的靜態(tài)實(shí)現(xiàn)視圖圖:部署圖統(tǒng)一建模語言UML部署圖反映了系統(tǒng)中軟件和硬件的物理架構(gòu),表示系統(tǒng)運(yùn)行時(shí)的處理節(jié)點(diǎn)以及節(jié)點(diǎn)中組件的配置圖:部署圖統(tǒng)一建模語言UML面向?qū)ο蟮脑O(shè)計(jì)面向?qū)ο笤O(shè)計(jì)的過程體系結(jié)構(gòu)設(shè)計(jì)說明詳細(xì)設(shè)計(jì)說明系統(tǒng)設(shè)計(jì)設(shè)計(jì)系統(tǒng)的體系結(jié)構(gòu)選擇合適的體系結(jié)構(gòu)策略,建立系統(tǒng)的總體結(jié)構(gòu)識(shí)別設(shè)計(jì)元素識(shí)別類和子系統(tǒng)識(shí)別子系統(tǒng)接口定義數(shù)據(jù)的存儲(chǔ)策略部署子系統(tǒng)選擇硬件配置和系統(tǒng)平臺(tái),將子系統(tǒng)分配到相應(yīng)的物理節(jié)點(diǎn)檢查系統(tǒng)設(shè)計(jì)9什么是面向?qū)ο笤O(shè)計(jì)面向?qū)ο蟮脑O(shè)計(jì)(OOD)概述OOD——按實(shí)現(xiàn)條件對OOA模型進(jìn)行調(diào)整,并補(bǔ)充幾個(gè)新的組成部分(也是由對象構(gòu)成)與實(shí)現(xiàn)有關(guān)的因素:圖形用戶界面系統(tǒng)硬件、操作系統(tǒng)及網(wǎng)絡(luò)數(shù)據(jù)管理系統(tǒng)其他——編程語言、可復(fù)用的類庫……OOA模型補(bǔ)充補(bǔ)充補(bǔ)充補(bǔ)充調(diào)整10OOA與OOD的關(guān)系:1、從OOA到OOD不是轉(zhuǎn)換;

——是調(diào)整和增補(bǔ)問題域部分OOA模型將OOA模型搬到OOD;進(jìn)行必要的調(diào)整,作為OOD模型的問題域部分;人機(jī)交互部分?jǐn)?shù)據(jù)管理部分構(gòu)件部署部分增補(bǔ)其它部分,成為完整的OOD模型??刂乞?qū)動(dòng)部分112、采用一致的概念和表示法——不存在分析與設(shè)計(jì)之間的鴻溝分析設(shè)計(jì)數(shù)據(jù)流圖(DFD)模塊結(jié)構(gòu)圖(MSD)實(shí)體-關(guān)系圖(ERD)傳統(tǒng)方法分析與設(shè)計(jì)之間的鴻溝3、有不同的側(cè)重點(diǎn)和不同的策略

OOA主要針對問題域,識(shí)別有關(guān)的對象以及它們之間的關(guān)系,產(chǎn)生一個(gè)滿足用戶需求,獨(dú)立于實(shí)現(xiàn)的OOA模型。

OOD主要解決與實(shí)現(xiàn)有關(guān)的問題,基于OOA模型,針對具體的軟、硬件條件(如機(jī)器、網(wǎng)絡(luò)、OS、GUI、DBMS等)產(chǎn)生一個(gè)可實(shí)現(xiàn)的OOD模型。OOAOOD一致的概念一致的表示法OO模型面向?qū)ο蟮姆治雠c設(shè)計(jì)之間不存在鴻溝OO模型OOD模型——從兩個(gè)側(cè)面來描述 OOD模型和過程從另一側(cè)面觀察OOD模型每個(gè)部分如何用OO概念表達(dá)——采用OOA的概念及模型組織方式從一個(gè)側(cè)面觀察OOD模型包括幾個(gè)主要部分——一個(gè)核心部分加幾個(gè)外圍部分在輔助模型中要增加分別用于描述構(gòu)件模型和部署模型的構(gòu)件圖和部署圖13OOD過程模型問題域部分的設(shè)計(jì)人機(jī)交互部分的設(shè)計(jì)控制流管理部分的設(shè)計(jì)數(shù)據(jù)管理部分的設(shè)計(jì)構(gòu)件部署部分的設(shè)計(jì)前4項(xiàng)不強(qiáng)調(diào)次序每個(gè)部分均采用與OOA一致的概念、表示法及活動(dòng),但具有自己獨(dú)特的策略。進(jìn)行構(gòu)件部署設(shè)計(jì)要在其前面四個(gè)部分完成后進(jìn)行。

MiniLibrary:軟件體系結(jié)構(gòu)MiniLibrary:軟件體系結(jié)構(gòu)MiniLibrary:軟件體系結(jié)構(gòu)識(shí)別設(shè)計(jì)元素識(shí)別設(shè)計(jì)元素確定設(shè)計(jì)元素的基本原則如果一個(gè)“分析類”比較簡單,代表著單一的邏輯抽象,那么可以將其映射為“設(shè)計(jì)類”如果一個(gè)“分析類”的職責(zé)比較復(fù)雜,很難由單個(gè)“設(shè)計(jì)類”承擔(dān),則應(yīng)該將其映射成“子系統(tǒng)接口”子系統(tǒng)的劃分應(yīng)該符合高內(nèi)聚低耦合的原則MiniLibrary:識(shí)別設(shè)計(jì)元素MiniLibrary:識(shí)別設(shè)計(jì)元素識(shí)別子系統(tǒng)接口在確定了設(shè)計(jì)元素之后,需要描述子系統(tǒng)的行為,也就是準(zhǔn)確定義接口操作的集合。同時(shí),還要確定“子系統(tǒng)接口”與其他設(shè)計(jì)元素之間的依賴關(guān)系數(shù)據(jù)文件

數(shù)據(jù)文件是由操作系統(tǒng)提供的存儲(chǔ)形式,應(yīng)用系統(tǒng)將數(shù)據(jù)按字節(jié)順序存儲(chǔ),并定義如何以及何時(shí)檢索數(shù)據(jù)數(shù)據(jù)存儲(chǔ)策略關(guān)系數(shù)據(jù)庫

在關(guān)系數(shù)據(jù)庫中,數(shù)據(jù)是以表的形式存儲(chǔ)在預(yù)先定義好的稱為Schema的類型中面向?qū)ο髷?shù)據(jù)庫

與關(guān)系數(shù)據(jù)庫不同的是,面向?qū)ο髷?shù)據(jù)庫將對象和關(guān)系做為數(shù)據(jù)一起存儲(chǔ)何時(shí)選擇文件

存儲(chǔ)大容量數(shù)據(jù)、臨時(shí)數(shù)據(jù)、低信息密度數(shù)據(jù)數(shù)據(jù)存儲(chǔ)策略何時(shí)選擇數(shù)據(jù)庫

并發(fā)訪問要求高、系統(tǒng)跨平臺(tái)、多個(gè)應(yīng)用程序使用相同數(shù)據(jù)何時(shí)選擇關(guān)系數(shù)據(jù)庫

復(fù)雜的數(shù)據(jù)查詢

數(shù)據(jù)集規(guī)模大何時(shí)選擇面向?qū)ο髷?shù)據(jù)庫

數(shù)據(jù)集處于中等規(guī)模

對象間沒有規(guī)則聯(lián)系部署圖反映了系統(tǒng)中軟件和硬件的物理架構(gòu),表示系統(tǒng)運(yùn)行時(shí)的處理節(jié)點(diǎn)以及節(jié)點(diǎn)中組件的配置部署子系統(tǒng)MiniLibrary系統(tǒng)的部署圖詳細(xì)設(shè)計(jì)需要細(xì)化分析和系統(tǒng)設(shè)計(jì)產(chǎn)生的模型,確定新的設(shè)計(jì)對象,消除問題域與實(shí)現(xiàn)域之間的差距詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)的主要任務(wù)

精化類的屬性和操作

-明確定義操作的參數(shù)和基本的實(shí)現(xiàn)邏輯

-明確定義屬性的類型和可見性

明確類之間的關(guān)系

整理和優(yōu)化設(shè)計(jì)模型詳細(xì)設(shè)計(jì)模型可以分割成類的集合,通常由單個(gè)開發(fā)人員實(shí)現(xiàn)詳細(xì)設(shè)計(jì)邊界類的設(shè)計(jì)策略

用戶界面設(shè)計(jì)因素

-用戶界面的開發(fā)工具

-所創(chuàng)建的界面數(shù)量

外部系統(tǒng)接口類實(shí)體類的設(shè)計(jì)策略

考慮性能需求對實(shí)體對象的影響控制類的設(shè)計(jì)策略

是否真正需要?是否應(yīng)該繼續(xù)細(xì)化?

考慮復(fù)雜性、變化適應(yīng)性、分布性和性能、事務(wù)處理等要求定義操作定義操作的過程

找出滿足基本邏輯要求的操作

補(bǔ)充必要的輔助操作

-初始化類的實(shí)例

-驗(yàn)證兩個(gè)實(shí)例是否等同

-……

完整地描述操作

-確定操作的名稱、參數(shù)、返回值、可見性等

-應(yīng)該遵從程序設(shè)計(jì)語言的命名規(guī)則

簡要說明操作的內(nèi)部實(shí)現(xiàn)邏輯定義操作舉例:BorrowerInfo類

構(gòu)造函數(shù)

<<class>>+new()

屬性賦值

+setName(name:String)

+setAddress(address:String)

其他

+addLoan(theLoan:Loan)

+removeLoan(theLoan:Loan)+isAllowed():Boolean

……定義屬性具體說明屬性的名稱、類型、缺省值、可見性等定義屬性基本原則

將所有屬性的可見性設(shè)置為private;

僅通過set方法更新屬性;

僅通過get方法訪問屬性;

在屬性的set方法中,實(shí)現(xiàn)簡單的有效性驗(yàn)證,而在獨(dú)立的驗(yàn)證方法中實(shí)現(xiàn)復(fù)雜的邏輯驗(yàn)證。定義屬性在詳細(xì)設(shè)計(jì)階段,狀態(tài)建模一般只發(fā)生在依賴狀態(tài)展示不同行為的類上定義狀態(tài)在詳細(xì)設(shè)計(jì)階段,需要進(jìn)一步確定詳細(xì)的關(guān)聯(lián)關(guān)系、依賴關(guān)系和聚合關(guān)系等定義關(guān)系不同對象之間的可能連接在有些情況下,關(guān)聯(lián)關(guān)系本身也可能具有屬性,可以使用“關(guān)聯(lián)類”將這種關(guān)系建模定義關(guān)聯(lián)類舉例:選課表Schedule與開始課程CourseOffering33

問題域部分的設(shè)計(jì)要對OOA結(jié)果按實(shí)現(xiàn)條件進(jìn)行補(bǔ)充與調(diào)整。即,要繼續(xù)運(yùn)用OOA的方法,包括概念、表示法及一部分策略。

問題域部分的設(shè)計(jì)問題域部分人機(jī)交互部分?jǐn)?shù)據(jù)管理部分構(gòu)件部署部分控制驅(qū)動(dòng)部分將OOA模型搬到OOD作為OOD的基礎(chǔ)OOA模型按實(shí)現(xiàn)條件(編程語言,網(wǎng)絡(luò)與操作系統(tǒng),復(fù)用支持等)進(jìn)行必要的調(diào)整。

不但要根據(jù)實(shí)現(xiàn)條件進(jìn)行OOD設(shè)計(jì),而且由于需求變化或新發(fā)現(xiàn)了錯(cuò)誤,也要對OOA的結(jié)果進(jìn)行修改。34(1)為復(fù)用設(shè)計(jì)與編程的類而增加結(jié)構(gòu)如果OOA識(shí)別和定義的類是本次開發(fā)中新定義的,那么需要進(jìn)行編程。如果已存在一些可復(fù)用的類,而且這些類既有分析、設(shè)計(jì)時(shí)的定義,又有源程序,那么,復(fù)用這些類即可提高開發(fā)效率與質(zhì)量??蓮?fù)用的類可能只是與OOA模型中的類相似,而不是完全相同,因此需對二者進(jìn)行修改。目標(biāo):盡可能使復(fù)用成分增多,新開發(fā)的成分減少35不同程度的復(fù)用當(dāng)前所需的類的信息比可復(fù)用類定義的信息= 直接復(fù)用< 通過繼承復(fù)用> 刪除可復(fù)用類的多余信息≈ 刪除多余信息,通過繼承而復(fù)用36車輛序號(hào)廠商式樣序號(hào)認(rèn)證可復(fù)用的類序號(hào)顏色式樣出廠年月序號(hào)認(rèn)證車輛問題域中的類步驟:(1)把要復(fù)用的類加到問題域,(2)標(biāo)以“復(fù)用”,劃掉(或標(biāo)出)不用的屬性與操作(3)建立從復(fù)用類到問題域原有的類之間的泛化關(guān)系(4)由于問題域的類繼承了“復(fù)用”類的特征,所以有些屬性和操作不需要了——?jiǎng)澋簟?復(fù)用)(復(fù)用)車輛序號(hào)廠商式樣序號(hào)認(rèn)證可復(fù)用的類第四種情況的的具體處理:可復(fù)用類定義的信息

當(dāng)前所需的類的信息37把需要頻繁交換信息的對象,盡量地放在一臺(tái)處理機(jī)上。增加屬性或類,以保存中間結(jié)果提高或降低系統(tǒng)的并發(fā)度,可能要人為地增加或減少主動(dòng)對象。合并通訊頻繁的類流速控制器指定流速當(dāng)前流速……流速調(diào)節(jié)流速探測……流速調(diào)節(jié)器指定流速……流速調(diào)節(jié)……流速探測器當(dāng)前流速……流速探測取當(dāng)前流速……合并前合并后(2)提高性能38用聚合關(guān)系描述復(fù)雜類。。。。幀顯示幀顯示背景前景*111顯示顯示39為編程方便增加底層成分——細(xì)化對象的分類例:將幾何圖形分成多邊形、橢圓、扇形等特殊類幾何圖形繪圖多邊形扇形橢圓繪圖繪圖繪圖40(3)增加一般類以建立共同協(xié)議增加根類:將所有的具有相似協(xié)議的類組織在一起 提供通用的協(xié)議

例如:提供創(chuàng)建、刪除、復(fù)制等服務(wù)增加其他一般類:提供局部通用的協(xié)議 例如:提供永久存儲(chǔ)及恢復(fù)功能41(4)按編程語言調(diào)整繼承起因:OOA強(qiáng)調(diào)如實(shí)地反映問題域,OOD考慮實(shí)現(xiàn)問題, 所用語言不支持多繼承,甚至不支持繼承多繼承模式示例狹義菱形廣義菱形42BACBAC因?yàn)榫酆虾头夯遣煌母拍?,這種方法并不是通用的(按定義)。在大多數(shù)情況下,需要考慮形成多繼承的原因,將本來在特殊類中顯式定義的信息離出來,作為部分對象,以原來的一般類作為整體對象。

把多繼承調(diào)整為單繼承

43方法1:采用聚合公司人員雇主職員雇主職員公司人員身份雇主身份職員身份0..21創(chuàng)建“雇主”對象創(chuàng)建“職員”對象創(chuàng)建“雇主職員”對象44公司人員雇主身份職員身份10..1身份0..11公司人員雇主職員雇主職員45方法2:壓平公司人員顧主職員顧主職員問題:有什么缺點(diǎn)?顧主信息職員信息問題:改成繼承?46方法3:不支持泛化顧主職員顧主職員問題:有什么缺點(diǎn)?47對多態(tài)性的調(diào)整48供貨商客戶0..*1..*供需合同賣方買方…….11供貨商客戶0..*1..*把多對多關(guān)聯(lián)轉(zhuǎn)化為一對多關(guān)聯(lián)(5)對復(fù)雜關(guān)聯(lián)的轉(zhuǎn)化并決定關(guān)聯(lián)的實(shí)現(xiàn)方式49項(xiàng)目人員語言把多元關(guān)聯(lián)轉(zhuǎn)化為二元關(guān)聯(lián)語言項(xiàng)目人員任務(wù)項(xiàng)項(xiàng)目名人員語言……11..**11..*1..*公司雇員*1..*工作薪水把關(guān)聯(lián)類轉(zhuǎn)化為二元關(guān)聯(lián)*1..*工作薪水公司雇員1151對關(guān)聯(lián)進(jìn)行調(diào)整后,要考慮關(guān)聯(lián)的實(shí)現(xiàn)方式。(1)聚合決定在整體類中指出部分類時(shí),是用部分類直接作為整體類中的屬性的數(shù)據(jù)類型,還是把部分類用作指針或?qū)ο髽?biāo)識(shí)的基類型,再用這樣的指針或?qū)ο髽?biāo)示定義整體類的屬性。如果是組合,最好用第1種方式,否則就需要在程序中保證整體對象與部分對象的生命周期的一致性。ClassAClassB{Aa;//組合

A*a;//聚合,B的對象管理A的對象——組合……voidcombination()……}(2)關(guān)聯(lián)通常,通過在對象中設(shè)立指針或?qū)ο髽?biāo)識(shí)以指向或記錄另一端的對象的方法,來實(shí)現(xiàn)關(guān)聯(lián)。

(1)如果是單向關(guān)聯(lián),就在源端的類中設(shè)立屬性,用來標(biāo)記另一端的類將來創(chuàng)建的對象

(2)如果是雙向關(guān)聯(lián),就在兩端類中各設(shè)立屬性,用來標(biāo)記對方將來創(chuàng)建的對象。

(3)如果關(guān)聯(lián)中對方類的多重性是1,那么可在本方設(shè)立一個(gè)指向?qū)Ψ綄ο蟮闹羔?,或設(shè)立一個(gè)記錄對方對象引用的屬性。

(4)如果對方類的多重性大于1,那么可在本方設(shè)立一個(gè)指向?qū)Ψ綄ο蟮闹羔樇匣蛞眉稀?/p>

(5)若關(guān)聯(lián)的某端有角色名,最好把其作為另一端類的屬性名,以訪問與角色名相鄰的類。Provider1oldest1..*0..1ConsumerProvider*toProviderproviderSet*headstructproviderSet{Providerp;structproviderSet*next;}Consumeroldest……53(6)調(diào)整與完善屬性按照語法:[可見性]屬性名[‘:’類型][‘=’初始值]

對屬性的定義進(jìn)行完善。每一個(gè)屬性或者包含單個(gè)值,或者包含作為一個(gè)整體的密切相關(guān)的一組值

若要給出對屬性的性質(zhì)的約束,如“工齡<60”或“0≤英語成績≤100”等,也要看語言是否對其直接支持,否則要在算法上考慮如何實(shí)現(xiàn)。

為了維護(hù)數(shù)據(jù)的完整性,必須要考慮需要一起更新的多個(gè)相關(guān)聯(lián)的數(shù)據(jù)值。特別是,當(dāng)基本的數(shù)據(jù)發(fā)生變化時(shí),需要更新導(dǎo)出屬性的值。通過下列方法可以做到這一點(diǎn):

1)顯式的代碼在更新基本對象屬性的操作中插入更新導(dǎo)出屬性的代碼,使得基本屬性與導(dǎo)出屬性的值同步。

2)批處理性的重計(jì)算當(dāng)基本數(shù)據(jù)以批處理的方式改變時(shí),可能在所有的基本數(shù)值改變之后,再重新計(jì)算所有的導(dǎo)出屬性的值。

3)觸發(fā)器凡是依賴基本屬性的屬性,都必須將它自己向基本屬性注冊。當(dāng)基本屬性的值被更新時(shí),由專門設(shè)置的觸發(fā)器更新導(dǎo)出屬性的值?;緦傩宰员韺?dǎo)出屬性導(dǎo)出屬性導(dǎo)出屬性55(7)構(gòu)造和優(yōu)化算法

對于需要設(shè)計(jì)的操作,要從如下幾方面進(jìn)行詳細(xì)地定義:(1)按照操作格式:[可見性]操作名[‘(’參數(shù)列表‘)’][‘:’返回類型]

完善操作的定義。(2)從問題域的角度,根據(jù)其責(zé)任,考慮實(shí)現(xiàn)操作的算法,即對象是怎樣提供操作的。(3)若操作有前后置條件或不變式,考慮編程語言是否予以支持。若不支持,在操作的方法中要予以實(shí)現(xiàn)。(4)建議進(jìn)一步地分析特定類的對象相關(guān)的所有交互圖,找出其所有與之相關(guān)的消息。一個(gè)對象所要響應(yīng)的每個(gè)消息都要由該對象的操作處理,其中的一個(gè)操作也可能要使用其他操作。如果類擁有狀態(tài)圖,還可根據(jù)內(nèi)部轉(zhuǎn)換以及外部轉(zhuǎn)換上的動(dòng)作,設(shè)計(jì)算法的詳細(xì)邏輯??捎米匀徽Z言或進(jìn)行了一定結(jié)構(gòu)化的自然語言描述算法,也可以使用程序框圖或活動(dòng)圖描述算法。在算法中還要考慮對例外和特殊情況的處理。如考慮對輸入錯(cuò)誤、來自中間件或其它軟硬件的錯(cuò)誤的消息以及其它例外情況的處理。在系統(tǒng)較為復(fù)雜或需要處理大批量的數(shù)據(jù)的情況下,若系統(tǒng)在性能上有要求,就要對系統(tǒng)的體系結(jié)構(gòu)和算法進(jìn)行優(yōu)化。56(8)決定對象間的可訪問性(M)

從類A的對象到類B的對象有4種訪問性

屬性可見性:B是A的一個(gè)屬性(關(guān)聯(lián)、聚合)

classA {…;Bb;…}

參數(shù)可見性:B的對象是A的一個(gè)方法的參數(shù)(依賴)

A.amethod(Bb)//間接地找到一個(gè)對象,并賦給b。

局部聲明可見性:B的對象是在A的一個(gè)方法中聲明的一個(gè)局部變量(依賴)

classA::amethod {…;Bb;…}

全局可見性:B的對象在某種程度上全局可見(依賴) 聲明B的全局實(shí)例變量對于后三種情況而言,從類A到類B間存在著依賴關(guān)系,在程序運(yùn)行期間A的對象與B的對象存在著臨時(shí)性的連接(臨時(shí)鏈),而第一種情況中的鏈?zhǔn)怯蓮念怉到類B間的關(guān)聯(lián)實(shí)例化而來的。57(9)定義對象實(shí)例

在邏輯上,一個(gè)類是對一組對象的抽象描述。在物理上,一個(gè)類所創(chuàng)建的各對象,

——要么在內(nèi)存中(用一個(gè)變量記錄對象的標(biāo)識(shí));

——要么在外存中(把對象保存在一個(gè)文件中或一個(gè)數(shù)據(jù)庫表中)

根據(jù)不同的實(shí)現(xiàn)條件和實(shí)現(xiàn)策略,可以按如下的方式定義對象:(1)用相應(yīng)的類定義內(nèi)存中的全局性對象,包括靜態(tài)聲明和動(dòng)態(tài)創(chuàng)建兩種方式??梢砸淮吾槍σ粋€(gè)對象定義一個(gè)變量,也可以成批地定義對象。例如,可以定義一個(gè)數(shù)組,它的每個(gè)元素是一個(gè)對象變量,以此來成批地定義對象。ClassAClassB{Aa[10];A*a[10];……}58

(2)當(dāng)系統(tǒng)需要通過從外存讀取數(shù)據(jù)來創(chuàng)建一個(gè)對象時(shí),先創(chuàng)建該對象,再從外存中讀取這個(gè)對象數(shù)據(jù),把數(shù)據(jù)賦值給對象的相應(yīng)屬性。

按照一定的策略,內(nèi)存中的永久對象要保存到外存中,請參看數(shù)據(jù)管理部分。無論那種方式,都需要在OOD文檔中加以說明。按如下格式在類描述模板的定義對象部分進(jìn)行描述: 處理機(jī):<節(jié)點(diǎn)名>{,<節(jié)點(diǎn)名>}; 內(nèi)存對象:{<名稱>[(n元數(shù)組)][<文字描述>]}; 外存對象:{<名稱>[<文字描述>]};對象屬性1…屬性n外存內(nèi)存59(10)其它在OOD的問題域部分應(yīng)該根據(jù)具體問題考慮使用設(shè)計(jì)模式。在OOD的問題域部分,還有一些其它需要考慮的問題:考慮加入進(jìn)行輸入數(shù)據(jù)驗(yàn)證這樣的類;考慮加入對來自中間件或其它軟硬件的錯(cuò)誤進(jìn)行處理的類;考慮加入對其它例外情況進(jìn)行處理的類?!?/p>

有些作法是在OOD階段不把讀寫屬性的操作放在類中,而認(rèn)為這是一種約定,編程人員能理解。有些作法也不把諸如創(chuàng)建和復(fù)制對象這樣的操作放在OOD模型中。

注意:包容器/集合類(如JAVA的Vector,Hashtable),是已經(jīng)預(yù)定義的類庫的一部分,一般不在類圖中重新定義,可進(jìn)行引用或繼承。不要錯(cuò)把包容器/集合類中方法(如JAVA的find),在其他類中重新定義,可進(jìn)行引用或繼承。60控制接口部分問題域部分?jǐn)?shù)據(jù)管理部分人機(jī)交互部分

OSF/Motif人機(jī)交互部分

X-Window人機(jī)交互部分

MS-Windows

把人機(jī)交互部分作為系統(tǒng)中一個(gè)獨(dú)立的組成部分,進(jìn)行分析和設(shè)計(jì),有利于隔離界面,支持系統(tǒng)的變化對問題域部分的影響.

什么是人機(jī)交互部分人機(jī)交互部分的設(shè)計(jì)人機(jī)交互部分的需求分析對使用系統(tǒng)的人進(jìn)行分析——以便設(shè)計(jì)出適合其特點(diǎn)的交互方式和界面表現(xiàn)形式;對人和機(jī)器的交互過程進(jìn)行分析——核心問題是人如何命令系統(tǒng),以及系統(tǒng)如何向人提交信息。1、分析與系統(tǒng)交互的人——人員參與者人對界面的需求,不僅在于人機(jī)交互的內(nèi)容,而且在于他們對界面表現(xiàn)形式、風(fēng)格等方面的愛好。

——前者是客觀需求*,對誰都一樣;后者是主觀需求,因人而異。(1)列舉所有的人員參與者(2)調(diào)查研究(3)區(qū)分人員類型(4)統(tǒng)計(jì)(或估算)各類人員的比例(5)了解使用者的主觀需求(6)

按照一定的準(zhǔn)則進(jìn)行折中與均衡

2、對人和機(jī)器的交互過程進(jìn)行分析

——從usecase分析人機(jī)交互usecase的構(gòu)成參與者的行為和系統(tǒng)行為按時(shí)序出現(xiàn),形成交叉排列的段落。每個(gè)段落至少含有一個(gè)輸入語句或輸出語句;有若干純屬參與者自身或系統(tǒng)自身的行為陳述;可能包含一些控制語句或括號(hào)。抽取方法:刪除所有與輸入、輸出無關(guān)的語句和不再包含任何內(nèi)容的控制語句與括號(hào),剩下的就是對一個(gè)參與者(人)使用一項(xiàng)系統(tǒng)功能時(shí)的人機(jī)交互描述。63收款員收款(usecase)輸入開始本次收款的命令;作好收款準(zhǔn)備,應(yīng)收款總數(shù)置為0,輸出提示信息;for

顧客選購的每種商品do

輸入商品編號(hào);

if

此種商品多于一件then

輸入商品數(shù)量

endif;檢索商品名稱及單價(jià);貨架商品數(shù)減去售出數(shù);if

貨架商品數(shù)低于下限then

通知供貨員請求上貨endif;計(jì)算本種商品總價(jià)并打印編號(hào)、名稱、數(shù)量、單價(jià)、總價(jià);總價(jià)累加到應(yīng)收款總數(shù);endfor;打印應(yīng)收款總數(shù);輸入顧客交來的款數(shù);計(jì)算應(yīng)找回的款數(shù),打印以上兩個(gè)數(shù)目,收款數(shù)計(jì)入賬冊。(a)一個(gè)usecase的例子

從usecase提取人機(jī)交互描述收款員收款(人機(jī)交互)輸入開始本次收款的命令;輸出提示信息;for

顧客選購的每種商品輸入商品編號(hào);

if

此種商品多于一件then

輸入商品數(shù)量

endif;打印商品編號(hào)、名稱、數(shù)量、單價(jià)、總價(jià);endfor;打印應(yīng)收款總數(shù)輸入顧客交來的款數(shù)打印交款數(shù)及找回款數(shù);(b)人機(jī)交互描述人機(jī)界面的設(shè)計(jì)準(zhǔn)則易學(xué)、易用、操作方便盡量保持一致性及時(shí)提供有意義的反饋使用戶的注意力集中在當(dāng)前的任務(wù)上而不是界面上*盡量減少用戶的記憶具有語境敏感的幫助功能減少重復(fù)的輸入和操作*對用戶的操作具有容錯(cuò)性,如UNDO防止災(zāi)難性的錯(cuò)誤*其它:如藝術(shù)性、趣味性、風(fēng)格、視感等65一、輸入與輸出設(shè)計(jì)(1)輸入的細(xì)化①輸入步驟的細(xì)化②輸入設(shè)備的選擇③輸入信息表現(xiàn)形式的選擇(命令,數(shù)據(jù))(2)輸出的細(xì)化①輸出步驟的細(xì)化②輸出設(shè)備的選擇③輸出信息表現(xiàn)形式的選擇人機(jī)界面的OO設(shè)計(jì)66二、命令的組織不受歡迎的命令組織方式:(1)一條命令含有大量的參數(shù)和任選項(xiàng)(2)系統(tǒng)有大量命令,不加任何組織和引導(dǎo)基本命令:使用一項(xiàng)獨(dú)立的系統(tǒng)功能的命令——提取后的用況命令步:在執(zhí)行一條基本命令的交互過程中所包含的具體輸入步驟。高層命令:如果一條命令是在另一條命令的引導(dǎo)下被選用的,則后者稱作前者的高層命令。命令的組織措施——分解與組合(1)分解:將一條含有許多參數(shù)和選項(xiàng)的命令分解為若干命令步(2)組合:將基本命令組織成高層命令,從高層命令引向基本命令67(a)線性結(jié)構(gòu)(b)樹型結(jié)構(gòu)(c)半序網(wǎng)狀結(jié)構(gòu)(d)一般網(wǎng)狀結(jié)構(gòu)基本命令及其命令步的結(jié)構(gòu)68高層命令及其結(jié)構(gòu)按功能組織:如文件下有:創(chuàng)建、打開、關(guān)閉、打印、刪除等。按子系統(tǒng)組織:如文本編輯子系統(tǒng)、編譯自系統(tǒng)。69兩層命令之間的輸出信息結(jié)構(gòu)反饋信息處理結(jié)果提示信息反饋信息處理結(jié)果處理結(jié)果提示信息提示信息處理結(jié)果提示信息提示信息70反饋信息:需較長時(shí)間執(zhí)行命令*。處理結(jié)果,可能不需要。提示信息:對下一步可輸入的命令的提示。71在建立命令樹時(shí),應(yīng)遵循如下策略:把使用最頻繁的命令放在前面,按照用戶的工作步驟進(jìn)行排列。在命令中發(fā)現(xiàn)整體-部分模式,以幫助對命令的組織與分塊。每層命令的個(gè)數(shù)應(yīng)遵循7+2原則,命令的層次深度盡量要控制在三層以內(nèi)。72

1、選擇界面支持系統(tǒng)(窗口系統(tǒng)、圖形用戶界面、可視化編程環(huán)境)2、設(shè)計(jì)報(bào)表及報(bào)告.對要生成的報(bào)表和報(bào)告格式等進(jìn)行設(shè)計(jì)。每一種報(bào)表或報(bào)告應(yīng)對應(yīng)于一個(gè)類。

3、設(shè)計(jì)諸如安全/登錄、設(shè)置和業(yè)務(wù)功能之類的窗口。

每一種窗口對應(yīng)于一個(gè)類。4、在窗口中,按照命令的邏輯層次,部署所需要的元素,如菜單、工作區(qū)和對話框等。窗口中的部

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論