面向對象分析與設計設計上第八章到第十章_第1頁
面向對象分析與設計設計上第八章到第十章_第2頁
面向對象分析與設計設計上第八章到第十章_第3頁
面向對象分析與設計設計上第八章到第十章_第4頁
面向對象分析與設計設計上第八章到第十章_第5頁
已閱讀5頁,還剩52頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

面向對象分析與設計設計上第八章到第十章8.1什么是面向對象設計第8章面向對象的設計(OOD)概述OOA與OOD的關系:1、從OOA到OOD不是轉換;

——是調整和增補問題域部分OOA模型將OOA模型搬到OOD;進行必要的調整,作為OOD模型的問題域部分;人機交互部分數據口部分任務管理部分增補其它四個部分,成為完整的OOD模型。構件部署第2頁,共57頁,2024年2月25日,星期天OOA與OOD的關系:1、從OOA到OOD不是轉換;

——是調整和增補問題域部分OOA模型將OOA模型搬到OOD;進行必要的調整,作為OOD模型的問題域部分;人機交互部分數據口部分任務管理部分增補其它四個部分,成為完整的OOD模型。構件部署第3頁,共57頁,2024年2月25日,星期天2、采用一致的概念和表示法——不存在分析與設計之間的鴻溝3、有不同的側重點和不同的策略

OOA主要針對問題域,識別有關的對象以及它們之間的關系,產生一個映射問題域,滿足用戶需求,獨立于實現的OOA模型。

OOD主要解決與實現有關的問題,基于OOA模型,針對具體的軟、硬件條件(如機器、網絡、OS、GUI、DBMS等)產生一個可實現的OOD模型。4、OOA與OOD可適合不同的生命周期模型——瀑布模型、螺旋模型、增量模型、噴泉模型第4頁,共57頁,2024年2月25日,星期天分析(OOA)設計(OOD)編程(OOP)演化集成測試編程(OOP)設計(OOD)分析(OOA)測試維護瀑布模型噴泉模型不同過程模型中的OOD第5頁,共57頁,2024年2月25日,星期天新增的組成部分,隔離實現條件OOD——按實現條件對OOA模型進行調整,并補充幾個新的組成部分(也是由對象構成)與實現有關的因素:圖形用戶界面系統硬件、操作系統及網絡數據管理系統其他——編程語言、可復用構件庫……按實現條件調整OOA模型

實現條件

實現條件基本思想:盡可能隔離實現條件對系統的影響——提供獨立的接口對不可隔離的因素,按實現條件調整OOA模型

實現條件第6頁,共57頁,2024年2月25日,星期天做什么怎么做問題域與系統責任與實現有關的因素分析設計第一種觀點分析設計第二種觀點第二種觀點的理由:(1)在各種分析/設計方法中“做什么”和“怎么做”實際上沒有嚴格的劃分”。(2)過分強調“分析不考慮怎么做”將使某些必須在OOA考慮的問題得不到完整的認識。(3)由于OO方法表示形式的一致,不存在把細化工作留給設計人員的必然理由。(4)避免重復地認識同一事物,并有利于分析結果的復用。關鍵問題:對象的特征細節(jié)(如屬性的數據類型和服務流程圖),是在分析時定義還是在設計時定義?兩種不同的觀點第7頁,共57頁,2024年2月25日,星期天OOD模型——從兩個側面來描述8.2 OOD模型和過程從另一側面觀察OOD模型每個部分如何用OO概念表達——采用OOA的概念及模型組織方式從一個側面觀察OOD模型包括幾個主要部分——一個核心部分加幾個外圍部分在輔助模型中要增加分別用于描述構件模型和部署模型的構件圖和部署圖第8頁,共57頁,2024年2月25日,星期天OOD過程:設計OOD模型的五個部分問題域部分的設計人機交互部分的設計控制流管理部分的設計數據管理部分的設計構件部署設計前4項不強調次序每個部分均采用與OOA一致的概念、表示法及活動,但具有自己獨特的策略。進行構件部署設計要在其前面四個部分完成后進行。

第9頁,共57頁,2024年2月25日,星期天對OOA結果按實現條件進行補充與調整就是問題域部分。進行問題域部分設計,要繼續(xù)運用OOA的方法,包括概念、表示法及一部分策略。不但要根據實現條件進行OOD設計,而且由于需求變化或新發(fā)現了錯誤,也要對OOA的結果進行修改。本章的重點是對OOA結果進行補充與調整,要強調的是這部分工作主要不是細化,但OOA未完成的細節(jié)定義要在OOD完成。第9章 問題域部分的設計將OOA模型搬到OOD作為OOD的基礎人機交互部分數據管理部分任務管理部分問題域部分OOA模型按實現條件(編程語言,網絡與操作系統,復用支持等)進行必要的調整。第10頁,共57頁,2024年2月25日,星期天(1)為復用設計與編程的類而增加結構(2)增加一般類以建立共同協議(3)按編程語言調整繼承(4)提高性能(5)為數據存儲管理增補屬性與服務(6)為編程方便增加底層成分(7)決定關系的實現方式(8)對例外的處理(9)編程語言限制了可用的屬性類型(10)構造或優(yōu)化算法(11)調整服務(12)決定對象間的可訪問性(13)考慮采用設計模式(14)其它第11頁,共57頁,2024年2月25日,星期天(1)為復用設計與編程的類而增加結構OOA識別和定義的類是本次開發(fā)中新定義的,需要進行編程。如果已存在一些可復用的類,而且這些類既有分析、設計時的定義,又有源程序,那么,復用這些類即可提高開發(fā)效率與質量??蓮陀玫念惪赡苤皇桥cOOA模型中的類相似,而不是完全相同,因此需對二者進行修改。目標:盡可能使復用成分增多,新開發(fā)的成分減少第12頁,共57頁,2024年2月25日,星期天不同程度的復用當前所需的類的信息比可復用類定義的信息= 直接復用< 通過繼承復用> 刪除可復用類的多余信息≈ 刪除多余信息,通過繼承而復用第13頁,共57頁,2024年2月25日,星期天第四種情況的做法:把要復用的類加到問題域,標以“復用”劃掉(或標出)不用的屬性與服務建立從復用類到問題域原有的類之間的泛化關系由于問題域的類繼承了“復用”類的特征,所以有些屬性和服務不需要了——劃掉。修改問題域原有類的結構和連接,必要時移到“復用”類第14頁,共57頁,2024年2月25日,星期天例:序號顏色式樣出廠年月序號認證車輛序號廠商式樣序號認證可復用的類車輛問題域中的類(復用)車輛序號廠商式樣序號認證可復用的類第15頁,共57頁,2024年2月25日,星期天(2)增加一般類以建立共同協議增加根類:將所有的具有相似協議的類組織在一起 提供通用的協議

例:提供創(chuàng)建、刪除、復制等服務增加其他一般類:提供局部通用的協議 例:提供永久存儲及恢復功能第16頁,共57頁,2024年2月25日,星期天對相似的操作的處理有時在若干類中定義了相同的操作,就能夠從共同的超類中繼承它們。然而,在不同類中的操作經常是相似的,而不是相同的。這時需要對操作原型做小的修改,使得操作就可以相互相匹配,即不僅操作的名字和特征標記必須相匹配,而且它們應該都具有相同的語義含義。調整繼承的策略

1.若有些操作比其他操作具有更少的參數,要加入所沒有的參數,但在這些操作的方法中忽略新加入的參數。---缺點:對消息規(guī)約,有些麻煩。(慎用)2.若在一個類中不需要父類中定義的操作,就在該類中把它聲明為一個無操作的方法。(慎用)選讀第17頁,共57頁,2024年2月25日,星期天(3)按編程語言調整繼承起因:OOA強調如實地反映問題域,OOD考慮實現問題, 所用語言不支持多繼承,甚至不支持繼承多繼承模式狹義菱形廣義菱形第18頁,共57頁,2024年2月25日,星期天BACBAC因為聚合和泛化是不同的概念,這種方法并不是通用的(按定義)。在大多數情況下,需要考慮形成多繼承的原因,將本來在特殊類中顯式定義的信息離出來,作為部分對象,以原來的一般類作為整體對象。

把多繼承調整為單繼承

第19頁,共57頁,2024年2月25日,星期天方法1:采用關聯公司人員顧主職員顧主職員公司人員身份顧主身份職員身份0..21第20頁,共57頁,2024年2月25日,星期天公司人員身份顧主身份職員身份10..10..11第21頁,共57頁,2024年2月25日,星期天方法2:壓平公司人員顧主職員顧主職員問題:有什么缺點?第22頁,共57頁,2024年2月25日,星期天公司人員顧主職員顧主職員顧主信息職員信息第23頁,共57頁,2024年2月25日,星期天方法3:取消泛化顧主職員顧主職員問題:有什么缺點?第24頁,共57頁,2024年2月25日,星期天對多態(tài)性的調整第25頁,共57頁,2024年2月25日,星期天把需要頻繁交換信息的對象,盡量地放在一臺處理機上。增加屬性或類,以保存中間結果提高或降低系統的并發(fā)度,可能要人為地增加或減少主動對象。合并通訊頻繁的類流速調節(jié)器指定流速……流速調節(jié)……流速探測器當前流速……流速探測取當前流速……流速控制器指定流速當前流速……流速調節(jié)流速探測……合并前合并后(4)提高性能第26頁,共57頁,2024年2月25日,星期天用聚合關系描述復雜類幀顯示背景前景*111顯示顯示第27頁,共57頁,2024年2月25日,星期天為編程方便增加底層成分——細化對象的分類例:將幾何圖形分成多邊形、橢圓、扇形等特殊類幾何圖形多邊形扇形橢圓第28頁,共57頁,2024年2月25日,星期天供貨商客戶0..*1..*供需合同賣方買方…….11供貨商客戶0..*1..*把多對多關聯轉化為一對多關聯(5)對復雜關聯的轉化并決定關聯的實現方式第29頁,共57頁,2024年2月25日,星期天項目人員語言語言項目人員任務項項目名人員語言……11..**11..*1..*把多元關聯轉化為二元關聯第30頁,共57頁,2024年2月25日,星期天公司雇員*1..*工作薪水*1..*工作薪水公司雇員11把關聯類轉化為二元關聯第31頁,共57頁,2024年2月25日,星期天對關聯進行調整后,要考慮關聯的實現方式。(1)聚合決定在整體類中指出部分類時,是用部分類直接作為整體類中的屬性的數據類型,還是把部分類用作指針或對象標識的基類型,再用這樣的指針或對象標示定義整體類的屬性。如果是組合,最好用第1種方式,否則就需要在程序中保證整體對象與部分對象的生命周期的一致性。(2)關聯通常,通過在對象中設立指針或對象標識以指向或記錄另一端的對象的方法,來實現關聯。如果是單向關聯,就在源端的類中設立屬性,用來標記另一端的類將來創(chuàng)建的對象如果是雙向關聯,就在兩端類中各設立屬性,用來標記對方將來創(chuàng)建的對象。如果關聯中對方類的多重性是1,那么可在本方設立一個指向對方對象的指針,或設立一個記錄對方對象引用的屬性。如果對方類的多重性大于1,那么可在本方設立一個指向對方對象的指針集合或引用集合。若關聯的某端有角色名,最好把其作為另一端類的屬性名,以訪問與角色名相鄰的類。

第32頁,共57頁,2024年2月25日,星期天(6)調整與完善屬性按照語法:[可見性]屬性名[‘:’類型][‘=’初始值]對屬性的定義進行完善。每一個屬性或者包含單個值,或者包含作為一個整體的密切相關的一組值

若要給出對屬性的性質的約束,如“工齡<60”或“0≤英語成績≤100”等,也要看語言是否對其直接支持,否則要在算法上考慮如何實現。第33頁,共57頁,2024年2月25日,星期天

為了維護數據的完整性,必須要考慮需要一起更新的多個相關聯的數據值。特別是,當基本的數據發(fā)生變化時,必須更新導出的屬性。通過下列方法可以做到這一點:

1)顯式的代碼因為每一個導出屬性是根據一個或多個基本對象屬性定義的,更新導出屬性的一種方法是,在更新基本對象屬性的操作中插入更新導出屬性的代碼。這種附加的代碼將明確地更新依賴基本對象屬性的導出屬性,使得基本屬性與導出屬性的值同步。

2)批處理性的重計算當基本數據以批處理的方式改變時,可能在所有的基本數值改變之后,再重新計算所有的導出屬性的值。

3)觸發(fā)器凡是依賴基本屬性的屬性,都必須將它自己向基本屬性注冊。當基本屬性的值被更新時,由專門設置的觸發(fā)器更新導出屬性的值。第34頁,共57頁,2024年2月25日,星期天(7)構造和優(yōu)化算法

對于需要設計的操作,要從如下幾方面進行詳細地定義:(1)按照定義操作的格式:[可見性]操作名[‘(’參數列表‘)’][‘:’返回類型]完善操作的定義。(2)從問題域的角度,根據其責任,考慮實現操作的算法,即對象是怎樣提供操作的。(3)若操作有前后置條件或不變式,考慮編程語言是否予以支持。若不支持,在操作的方法中要予以實現。(4)建議進一步地分析特定類的對象相關的所有交互圖,找出其所有與之相關的消息。一個對象所要響應的每個消息都要由該對象的操作處理,其中的一個操作也可能要使用其他操作。如果類擁有狀態(tài)圖,還可根據內部轉換以及外部轉換上的動作,設計算法的詳細邏輯??捎米匀徽Z言或進行了一定結構化的自然語言描述算法,也可以使用程序框圖或活動圖描述算法。在算法中還要考慮對例外和特殊情況的處理。如考慮對輸入錯誤、來自中間件或其它軟硬件的錯誤的消息以及其它例外情況的處理。

在系統較為復雜或需要處理大批量的數據的情況下,若系統在性能上有要求,就要對系統的體系結構和算法進行優(yōu)化。第35頁,共57頁,2024年2月25日,星期天(8)決定對象間的可訪問性(M)

從類A的對象到類B的對象有4種訪問性 屬性可見性:B是A的一個屬性(關聯、聚合)

classA {…;Bb;…}

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

A.amethod(Bb)//間接地找到一個對象,并賦給b。 局部聲明可見性:B的對象是在A的一個方法中聲明的一個局部變量(依賴)

classA::amethod {…;Bb;…}

全局可見性:B的對象在某種程度上全局可見(依賴) 聲明B的全局實例變量對于后三種情況而言,從類A到類B間存在著依賴關系,在程序運行期間A的對象與B的對象存在著臨時性的連接(臨時鏈),而第一種情況中的鏈是由從類A到類B間的關聯實例化而來的。第36頁,共57頁,2024年2月25日,星期天(9)定義對象實例

在邏輯上,一個類是對一組對象的抽象描述。在物理上,一個類所創(chuàng)建的各對象,要么在內存中,要么在外存中。在內存中創(chuàng)建的一個對象,用一個變量記錄它的標識。在外存中的對象,可能保存在一個文件中,也可能保存在一個數據庫表中。在OOD中,根據不同的實現條件和實現策略,可以按如下的方式定義對象:(1)用相應的類定義內存中的全局性對象,包括靜態(tài)聲明和動態(tài)創(chuàng)建兩種方式??梢砸淮吾槍σ粋€對象定義一個變量,也可以成批地定義對象。例如,可以定義一個數組,它的每個元素是一個對象變量,以此來成批地定義對象。(2)當系統需要通過從外存讀取數據來創(chuàng)建一個對象時

,先創(chuàng)建該對象,再從外存中讀取這個對象數據,把數據賦值給對象的相應屬性。按照一定的策略,內存中的永久對象要保存到外存中,請參看數據管理部分。無論那種方式,都需要在在OOD文檔中加以說明。按如下格式在類描述模板的定義對象部分進行描述: 處理機:<節(jié)點名>{,<節(jié)點名>}; 內存對象:{<名稱>[(n元數組)][<文字描述>]}; 外存對象:{<名稱>[<文字描述>]};第37頁,共57頁,2024年2月25日,星期天(10)其它在OOD的問題域部分應該根據具體問題考慮使用設計模式。在OOD的問題域部分,根據情況,還有一些其它需要考慮的問題。例如,考慮加入進行輸入數據驗證這樣的類;考慮對來自中間件或其它軟硬件的錯誤進行處理的類,以及對其它例外情況進行處理的類。有些作法是在OOD階段不把這樣的讀寫屬性的操作放在類中,而認為這是一種約定,編程人員能理解。有些作法也不把諸如創(chuàng)建和復制對象這樣的操作放在OOD模型中。

注意:包容器/集合類(如JAVA的Vector,Hashtable),是已經預定義的類庫的一部分,一般不在類圖中重新定義,可進行引用或繼承。不要錯把包容器/集合類中方法(如JAVA的find),在其他類中重新定義,可進行引用或繼承。第38頁,共57頁,2024年2月25日,星期天10.1什么是人機交互部分第10章 人機交互部分的設計第39頁,共57頁,2024年2月25日,星期天控制接口部分問題域部分數據管理部分人機交互部分

OSF/Motif人機交互部分

X-Window人機交互部分

MS-Windows把人機交互部分作為系統中一個獨立的組成部分,進行分析和設計,有利于隔離界面支持系統的變化對問題域部分的影響10.1什么是人機交互部分第10章 人機交互部分的設計第40頁,共57頁,2024年2月25日,星期天10.2人機交互部分的需求分析對使用系統的人進行分析——以便設計出適合其特點的交互方式和界面表現形式;對人和機器的交互過程進行分析——核心問題是人如何命令系統,以及系統如何向人提交信息。1、分析與系統交互的人——人員參與者人對界面的需求,不僅在于人機交互的內容,而且在于他們對界面表現形式、風格等方面的愛好。——前者是客觀需求,對誰都一樣;后者是主觀需求,因人而異。(1)列舉所有的人員參與者(2)調查研究(3)區(qū)分人員類型(4)統計(或估算)各類人員的比例(5)了解使用者的主觀需求

(6)按照一定的準則進行折中與均衡

第41頁,共57頁,2024年2月25日,星期天2、從usecase分析人機交互usecase的構成參與者的行為和系統行為按時序交替出現,左右分明。形成交叉排列的段落。每個段落至少含有一個輸入語句或輸出語句;有若干純屬參與者自身或系統自身的行為陳述;可能包含一些控制語句或括號。抽取方法:刪除所有與輸入、輸出無關的語句和不再包含任何內容的控制語句與括號,剩下的就是對一個參與者(人)使用一項系統功能時的人機交互描述。第42頁,共57頁,2024年2月25日,星期天收款員收款(usecase)輸入開始本次收款的命令;作好收款準備,應收款總數置為0,輸出提示信息;for

顧客選購的每種商品do

輸入商品編號;

if

此種商品多于一件then

輸入商品數量

endif;檢索商品名稱及單價;貨架商品數減去售出數;if

貨架商品數低于下限then

通知供貨員請求上貨endif;計算本種商品總價并打印編號、名稱、數量、單價、總價;總價累加到應收款總數;endfor;打印應收款總數;輸入顧客交來的款數;計算應找回的款數,打印以上兩個數目,收款數計入賬冊。(a)一個usecase的例子收款員收款(人機交互)輸入開始本次收款的命令;輸出提示信息;for

顧客選購的每種商品輸入商品編號;

if

此種商品多于一件then

輸入商品數量

endif;打印商品編號、名稱、數量、單價、總價;endfor;打印應收款總數輸入顧客交來的款數打印交款數及找回款數;(b)人機交互描述

從usecase提取人機交互描述第43頁,共57頁,2024年2月25日,星期天10.3人機界面的設計準則易學、易用、操作方便盡量保持一致性及時提供有意義的反饋使用戶的注意力集中在當前的任務上而不是界面上盡量減少用戶的記憶具有語境敏感的幫助功能減少重復的輸入和操作對用戶的操作具有容錯性,如UNDO防止災難性的錯誤其它:如藝術性、趣味性、風格、視感等第44頁,共57頁,2024年2月25日,星期天一、輸入與輸出設計(1)輸入的細化①輸入步驟的細化②輸入設備的選擇③輸入信息表現形式的選擇(命令,數據)(2)輸出的細化①輸出步驟的細化②輸出設備的選擇③輸出信息表現形式的選擇9.4人機界面的OO設計第45頁,共57頁,2024年2月25日,星期天二、命令的組織不受歡迎的命令組織方式:(1)一條命令含有大量的參數和任選項(2)系統有大量命令,不加任何組織和引導基本命令:使用一項獨立的系統功能的命令。(提取后的用況)命令步:在執(zhí)行一條基本命令的交互過程中所包含的具體輸入步驟。高層命令:如果一條命令是在另一條命令的引導下被選用的,則后者稱作前者的高層命令。命令的組織措施——分解與組合(1)分解:將一條含有許多參數和選項的命令分解為若干命令步(2)組合:將基本命令組織成高層命令,從高層命令引向基本命令第46頁,共57頁,2024年2月25日,星期天(a)線性結構(b)樹型結構(c)半序網狀結構(d)一般網狀結構基本命令及其命令步的結構第47頁,共57頁,2024年2月25日,星期天高層命令及其結構按功能組織:如文件下有:創(chuàng)建、打開、關閉、打印、刪除等。按子系統組織:如文本編輯子系統、編譯自系統。第48頁,共57頁,2024年2月25日,星期天兩層命令之間的輸出信息結構反饋信息處理結果提示信息反饋信息處理結果處理結果提示信息提示信息處理結果提示信息提示信息第49頁,共57頁,2024年2月25日,星期天反饋信息:需較長時間執(zhí)行命令。處理結果,可能不需要。提示信息:對下一步可輸入的命令的提示。第50頁,共57頁,2024年2月25日,星期天在建立命令樹時,應遵循如下策略:把使用最頻繁的命令放在前面,按照用戶的工作步驟進行排列。在命令中發(fā)現整體-部分模式,以幫助對命令的組織與分塊。每層命令的個數應遵循7+2原則,命令的層次深度盡量要控制在三層以內。第51頁,共57頁,2024年2月25日,星期天

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

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

每一種窗口對應于一個類。4、在窗口中,按照命令的邏輯層次,部署所需要的元素,如菜單、工作區(qū)和對話框等。窗口中的部件元素對應窗口類的部分類,部分類與窗口類形成聚合關系。5.發(fā)現窗口類間的共性以及部件類間的共性,定義較一般的窗口類和部件類,分別形成窗口類間以及部件類間的泛化關系。

6.用類的屬性表示窗口或部件的靜態(tài)特征,如尺寸、位置、顏色和選項等。7.用操作表示窗口或部件的動態(tài)特征,如選中、移動和滾屏等。有

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論