信息系統(tǒng)分析與設(shè)計(jì)-第5章_第1頁
信息系統(tǒng)分析與設(shè)計(jì)-第5章_第2頁
信息系統(tǒng)分析與設(shè)計(jì)-第5章_第3頁
信息系統(tǒng)分析與設(shè)計(jì)-第5章_第4頁
信息系統(tǒng)分析與設(shè)計(jì)-第5章_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、面向?qū)ο蟮南到y(tǒng)分析與設(shè)計(jì),面向?qū)ο蟮姆治雠c設(shè)計(jì)方法,面向?qū)ο笫墙?0年來國內(nèi)外IT行業(yè)最為關(guān)注的技術(shù)之一,面向?qū)ο蠹夹g(shù)是一種按照人們對(duì)現(xiàn)實(shí)世界習(xí)慣的認(rèn)識(shí)論和思維方式來研究和模擬客觀世界的方法學(xué)。 它將現(xiàn)實(shí)世界中的任何事物都視為“對(duì)象”,將客觀世界看成是由許多不同種類的對(duì)象構(gòu)成的,每一個(gè)對(duì)象都有自己的內(nèi)部狀態(tài)和運(yùn)動(dòng)規(guī)律,不同對(duì)象之間的相互聯(lián)系和相互作用就構(gòu)成了完整的客觀世界。,面向?qū)ο蟮姆椒ǜ拍钆c思想,所謂面向?qū)ο蠹夹g(shù),顧名思義,就是以對(duì)象觀點(diǎn)來分析現(xiàn)實(shí)世界中的問題。從普通人認(rèn)識(shí)世界的觀點(diǎn)出發(fā),把事物歸類、綜合,提取共性并加以描述。在面向?qū)ο蟮南到y(tǒng)中,世界被看成是獨(dú)立對(duì)象的集合,對(duì)象之間通過過程

2、(在面向?qū)ο笮g(shù)語中稱之為“消息”)相互通信。 面向?qū)ο蠓椒ㄊ且环N運(yùn)用對(duì)象、類、繼承、封裝、聚合、消息傳送和多態(tài)性等概念來構(gòu)造系統(tǒng)的軟件開發(fā)方法。,OO方法的產(chǎn)生和發(fā)展,結(jié)構(gòu)化生命周期法難以控制、處理和適應(yīng)變化的矛盾,因此產(chǎn)生了原型化方法來進(jìn)行彌補(bǔ),原型化方法又需要有快速原型生成工具來支持。這兩種方法都是從一般系統(tǒng)工程的角度采用計(jì)算機(jī)語言來描述、處理自然世界,這樣必然造成系統(tǒng)分析、設(shè)計(jì)與其事物管理的差距,使管理信息系統(tǒng)在應(yīng)用上產(chǎn)生了許多困難和矛盾。 在20世紀(jì)80年代初期產(chǎn)生了面向?qū)ο蟮脑O(shè)計(jì)方法(OOP),面向?qū)ο笤O(shè)計(jì)方法既吸取了以前開發(fā)方法的優(yōu)點(diǎn),同時(shí)又正視和順應(yīng)了現(xiàn)實(shí)世界由物質(zhì)和意識(shí)兩部分組

3、成,是近20年來發(fā)展起來的基于問題對(duì)象的一種自底向上的系統(tǒng)開發(fā)方法。 面向?qū)ο蟮乃枷胧紫瘸霈F(xiàn)在程序設(shè)計(jì)的語言中,產(chǎn)生了面向?qū)ο蟮某绦蛟O(shè)計(jì)方法(Object-Oriented Programming, OOP),并進(jìn)而產(chǎn)生面向?qū)ο蠹夹g(shù)和方法。 一般認(rèn)為,面向?qū)ο蟮母拍钇鹪从?0世紀(jì)70年代挪威的K.Nyguarded等人開發(fā)的模擬離散事件的程序設(shè)計(jì)語言Simula67。 但真正的面向?qū)ο笤O(shè)計(jì)(OOP)還是來源于Alan Keyz主持設(shè)計(jì)的Smalltalk語言。 由Xerox Learning Research Group所研制的Smalltalk-80系統(tǒng),則是較全面地體現(xiàn)了面向?qū)ο蟪绦蛟O(shè)計(jì)語

4、言的特征,標(biāo)志面向?qū)ο蟪绦蛟O(shè)計(jì)方法得到比較完善實(shí)現(xiàn),從而興起了面向?qū)ο笱芯康母叱薄?面向?qū)ο蟮幕靖拍?對(duì)象 面向?qū)ο蠓椒ň褪且詫?duì)象為中心、以對(duì)象為出發(fā)點(diǎn)的方法,所以對(duì)象的概念相當(dāng)重要。在應(yīng)用領(lǐng)域中有意義的、與所要解決的問題有關(guān)系的任何人或事物(即我們說的實(shí)體)都可以作為對(duì)象,它既可以是具體的物理實(shí)體的抽象,也可以是人為的概念,或者是任何有明確邊界和意義的事物或東西。 在面向?qū)ο蠓椒ㄖ校瑢?duì)象是一組數(shù)據(jù)(屬性)和施加于這些數(shù)據(jù)上的一組操作代碼(操作)構(gòu)成的獨(dú)立類體。換言之,對(duì)象是一個(gè)有著各種特殊屬性(數(shù)據(jù))和行為方式(方法)的邏輯實(shí)體。對(duì)象是一個(gè)封閉體,它向外界提供一組接口界面,外界通過這些接口

5、與對(duì)象進(jìn)行交互,這樣對(duì)象就具有較強(qiáng)的獨(dú)立性、自治性和模塊性,從而為軟件的重用奠定了堅(jiān)實(shí)的基礎(chǔ)。 從傳統(tǒng)的結(jié)構(gòu)化編程觀點(diǎn)來看,數(shù)據(jù)和處理它們的代碼(操作過程)是兩個(gè)不同的獨(dú)立實(shí)體,它們之間的正確聯(lián)系、選擇與匹配需要應(yīng)用系統(tǒng)的設(shè)計(jì)者時(shí)刻考慮、操心和進(jìn)行統(tǒng)一。而在OO中,一個(gè)對(duì)象則是由私有數(shù)據(jù)和其上的一組操作代碼組成的一個(gè)統(tǒng)一體。,消息,對(duì)象通過對(duì)外提供服務(wù)發(fā)揮自身作用,對(duì)象之間的相互服務(wù)是通過消息來連接實(shí)現(xiàn)的。 消息是為了實(shí)現(xiàn)某一功能而要求某個(gè)對(duì)象執(zhí)行其中某個(gè)功能操作的規(guī)格說明。它一般含有下述信息:提供服務(wù)的對(duì)象標(biāo)識(shí)、服務(wù)標(biāo)識(shí)、輸入信息和響應(yīng)信息。對(duì)象接收消息,根據(jù)消息及消息參數(shù)調(diào)用自己的服務(wù),處

6、理并予以響應(yīng),從而實(shí)現(xiàn)系統(tǒng)功能。 消息是對(duì)象之間相互作用和相互協(xié)作的一種機(jī)制,更通俗地講,OOP中的術(shù)語“消息”只不過是現(xiàn)實(shí)世界中的“請(qǐng)求”、“命令”等日常生活用語的同義詞。,方法,“方法”對(duì)應(yīng)于對(duì)象的能力,它是實(shí)現(xiàn)對(duì)象所具有的功能操作代碼段,是響應(yīng)消息的“方法”。在C十中,方法即是類中定義的成員函數(shù),它只不過是該類對(duì)象所能執(zhí)行的操作的算法實(shí)現(xiàn)。 方法與消息是一一對(duì)應(yīng)的,每當(dāng)對(duì)象收到一個(gè)消息,它除了能用其“智能化”的選擇機(jī)制知道和決定應(yīng)該去做什么(what to do)外,還要知道和決定該怎樣做(how to do)。而方法正是與對(duì)象相連決定怎么做的操作執(zhí)行代碼。所以方法是實(shí)現(xiàn)每條消息具體功能

7、的手段。,類,在面向?qū)ο蟮能浖夹g(shù)中,類可以定義為由數(shù)據(jù)結(jié)構(gòu)及相關(guān)操作所形成的集合,或所有相似對(duì)象的狀態(tài)變量和行為構(gòu)成的模板。 類是對(duì)一組對(duì)象的抽象歸納與概括,更確切地說,類是對(duì)一組具有相同數(shù)據(jù)成員和相同操作成員的對(duì)象的定義或說明。而每個(gè)對(duì)象都是某個(gè)類的一個(gè)具體實(shí)例。 在OOP中,每個(gè)對(duì)象由一個(gè)類來定義或說明,類可以看作生產(chǎn)具有相同屬性和行為方式對(duì)象的模板。與成語“物以類聚,人以群分”的意思一樣,“類”就是具有相似性質(zhì)的事物的同類特征的集中。在面向?qū)ο笙到y(tǒng)中,我們一般就是根據(jù)對(duì)象的相似性(包括相似的存儲(chǔ)特征和相似的操作特征)來組織類的。簡(jiǎn)而言之,按照對(duì)象的相似性,我們把對(duì)象分成一些類和子類,將

8、相似對(duì)象的集合即稱為“類”。對(duì) c十程序員而言,類實(shí)際只是一種對(duì)象類型、它描述屬于該類型的具有相同結(jié)構(gòu)和功能的對(duì)象的一般性質(zhì)。,繼承,繼承是對(duì)象類間的一種相關(guān)關(guān)系,指對(duì)象繼承它所在類的結(jié)構(gòu)、操作和約束,也指一個(gè)類繼承另外一個(gè)類的結(jié)構(gòu)、操作和約束。繼承體現(xiàn)了一種共享機(jī)制。 繼承機(jī)制既是一個(gè)對(duì)象類獲得另一對(duì)象類特征的過程,也是一個(gè)以分層分級(jí)結(jié)構(gòu)組織、構(gòu)造和重用類的工具。它是解決客觀對(duì)象“相似但又不同”的妙法。 繼承機(jī)制具有能清晰體現(xiàn)相似類間的層次結(jié)構(gòu)關(guān)系;能減小代碼和數(shù)據(jù)的重復(fù)冗余度,大大增強(qiáng)程序的重用性;能通過增強(qiáng)一致性來減少模塊間的接口和界面,大大增強(qiáng)程序的易維護(hù)性等特點(diǎn)。 如果沒有繼承概念的

9、支持,則OOP中所有的類就象一盤各自為陣、彼此獨(dú)立的散沙,每次軟件開發(fā)都要從“一無所有”開始。,封裝,封裝(encapsulation)即信息隱藏。它保證軟件部件具有較好的模塊性,可以說封裝是所有主流信息系統(tǒng)方法學(xué)中的共同特征,它對(duì)于提高軟件清晰度和可維護(hù)性,以及軟件的分工有重要的意義。我們從兩個(gè)方面來理解封裝的含義。 (1)當(dāng)設(shè)計(jì)一個(gè)程序的總體結(jié)構(gòu)時(shí),程序的每個(gè)成分應(yīng)該封裝或隱藏為一個(gè)獨(dú)立的模塊,定義每一模塊時(shí)應(yīng)主要考慮其實(shí)現(xiàn)的功能,而盡可能少地顯露其內(nèi)部處理邏輯。 (2)封裝表現(xiàn)在對(duì)象概念上。對(duì)象是一個(gè)很好的封裝體,它把數(shù)據(jù)和服務(wù)封裝于一個(gè)內(nèi)在的整體。對(duì)象向外提供某種界面(接口),可能包括

10、一組數(shù)據(jù)(屬性)和一組操作(服務(wù)),而把內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)(如函數(shù)體)隱藏起來,外部需要該對(duì)象時(shí),只需要了解它的界面就可以,即只能通過特定方式才能使用對(duì)象的屬性或?qū)ο?。這樣既提供了服務(wù),又保護(hù)自己不輕易受外界的影響。,多態(tài)性,多態(tài)性(polymorphism)指相同的操作(或函數(shù),過程)可作用于多種類型的對(duì)象并獲得不同的結(jié)果。在面向?qū)ο蠓椒ㄖ?,可給不同類型的對(duì)象發(fā)送相同的消息,而不同的對(duì)象分別做出不同的處理。例如給整數(shù)對(duì)象和復(fù)數(shù)對(duì)象定義不同的數(shù)據(jù)結(jié)構(gòu)和加法運(yùn)算,但可以給它們發(fā)送相同的消息“做加法運(yùn)算”,整數(shù)對(duì)象接收此消息后做整數(shù)加法運(yùn)算,復(fù)數(shù)對(duì)象則做復(fù)數(shù)加法運(yùn)算,產(chǎn)生不同的結(jié)果。多態(tài)性增強(qiáng)了軟件的

11、靈活性、重用性、可理解性。,面向?qū)ο蟮乃枷?按設(shè)計(jì)思想來分,傳統(tǒng)的軟件系統(tǒng)開發(fā)可分為自頂向下和自底向上兩種。流行的結(jié)構(gòu)化方法采用自頂向下的設(shè)計(jì)思想。但是,面向?qū)ο蠓椒炔皇亲皂斚蛳路椒ㄒ膊皇亲缘紫蛏戏椒?。盡管它兼有這兩者的一些特點(diǎn)。 一方面,面向?qū)ο蠓椒ü膭?lì)人們從問題的基本的、簡(jiǎn)單的方面入手,用對(duì)象來考慮如何描述問題的解決,然后抽象并確定類,得到具有一般性的解決問題的方法,這正是自底向上的本質(zhì); 另一方面,面向?qū)ο蟮姆椒ㄓ忠笕藗兠嫦蚰繕?biāo),考慮為達(dá)到這一目標(biāo)如何建立這些基本的對(duì)象,這正體現(xiàn)了自頂向下的思想。 面向?qū)ο蠓椒◤囊婚_始就強(qiáng)調(diào)結(jié)構(gòu)與代碼的共享與重用 。它與傳統(tǒng)的結(jié)構(gòu)化設(shè)計(jì)思想比起來,有

12、著明顯的優(yōu)點(diǎn)。 代碼的可重用性好:隨著開發(fā)平臺(tái)以及應(yīng)用要求越來越復(fù)雜,應(yīng)用程序的規(guī)模變得越來越龐大,代碼重用成了提高程序設(shè)計(jì)效率的關(guān)鍵。 可維護(hù)性和可擴(kuò)充性好:用傳統(tǒng)的面向過程語言開發(fā)出來的軟件很難維護(hù),是長(zhǎng)期困擾人們的一個(gè)嚴(yán)重問題,也是軟件危機(jī)的突出表現(xiàn) 穩(wěn)定性好: 結(jié)構(gòu)化程序設(shè)計(jì)也存在模塊的獨(dú)立性,因此結(jié)構(gòu)化軟件也有一定的穩(wěn)定性。但結(jié)構(gòu)化設(shè)計(jì)是通過過程(函數(shù)、子程序)的概念來實(shí)現(xiàn)的 。,對(duì)象模型技術(shù),模型是為了在構(gòu)造事物前理解事物而對(duì)事物作出的一種抽象,它忽略事物的非本質(zhì)內(nèi)容。 對(duì)象模型技術(shù)(Object Modeling Technique,OMT)是建立系統(tǒng)模型的方法學(xué),它由三種模型組

13、成。對(duì)象模型表示系統(tǒng)的靜態(tài)的、結(jié)構(gòu)化的數(shù)據(jù),描述一個(gè)根據(jù)對(duì)象和相對(duì)實(shí)體關(guān)系的系統(tǒng)的靜態(tài)結(jié)構(gòu);動(dòng)態(tài)模型表示系統(tǒng)的動(dòng)態(tài)的、行為的控制方式,是根據(jù)事件和狀態(tài)描述系統(tǒng)的控制結(jié)構(gòu);功能模型則表示了系統(tǒng)的轉(zhuǎn)換功能,是根據(jù)屬性值和功能來描述系統(tǒng)的計(jì)算結(jié)構(gòu)。軟件過程是三方面的結(jié)合:使用數(shù)據(jù)結(jié)構(gòu)(對(duì)象模型),按時(shí)間調(diào)整操作順序(動(dòng)態(tài)模型)和轉(zhuǎn)換屬性值(功能模型)。,對(duì)象模型,對(duì)象模型描述了系統(tǒng)中對(duì)象結(jié)構(gòu),包括對(duì)象的標(biāo)識(shí)、與其他對(duì)象的關(guān)系、屬性和操作。對(duì)象模型提供了動(dòng)態(tài)模型和功能模型都適用的基本框架,對(duì)象是現(xiàn)實(shí)世界劃分事件的單元,是模型中的組成成分。 對(duì)象模型用包含對(duì)象類的對(duì)象圖來表示。類按層次排列,并共享公共結(jié)

14、構(gòu)和行為特征,類與其他類相關(guān)聯(lián)。類定義了每個(gè)對(duì)象實(shí)例所取的屬性值和每個(gè)對(duì)象執(zhí)行的操作。,動(dòng)態(tài)模型,動(dòng)態(tài)模型描述了系統(tǒng)中與時(shí)間和操作序列有關(guān)的內(nèi)容,即標(biāo)志改變的事件、事件序列、定義事件上下文狀態(tài)以及事件和狀態(tài)的組織。動(dòng)態(tài)模型眼于控制,即描述系統(tǒng)中發(fā)生的操作序列。 動(dòng)態(tài)模型用狀態(tài)圖表示。每個(gè)狀態(tài)圖展示了系統(tǒng)中對(duì)象類所允許的狀態(tài)和事件序列。狀態(tài)圖中的動(dòng)作對(duì)應(yīng)于功能模型中的功能,狀態(tài)圖中的事件為對(duì)象模型中對(duì)對(duì)象的操作。,功能模型,功能模型描述了系統(tǒng)與值轉(zhuǎn)換有關(guān)的諸方面內(nèi)容,即功能、映像、約束和功能性依賴。功能模型只著眼于系統(tǒng)做什么,而不考慮如何做、什么時(shí)候做。 功能模型用數(shù)據(jù)流圖表示。數(shù)據(jù)流圖表示根據(jù)

15、輸入值和函數(shù)進(jìn)行的輸出值的計(jì)算與值之間的相關(guān)性,而不考慮功能是否執(zhí)行和什么時(shí)候執(zhí)行。在動(dòng)態(tài)模型中,功能作為動(dòng)作被喚醒,而在對(duì)象模型中則作為對(duì)對(duì)象的操作。,三種模型的聯(lián)系,對(duì)象模型描述了動(dòng)態(tài)模型和功能模型操作的數(shù)據(jù)結(jié)構(gòu)。對(duì)象模型中的操作對(duì)應(yīng)于動(dòng)態(tài)模型中的事件和功能模型中的功能。 動(dòng)態(tài)模型描述對(duì)象的控制結(jié)構(gòu),它展示了依賴于對(duì)象值并導(dǎo)致改變對(duì)象值和喚醒功能的動(dòng)作的決策。 功能模型描述由對(duì)象模型中的操作和動(dòng)態(tài)模型的動(dòng)作喚醒的功能,功能是對(duì)象模型指定的數(shù)據(jù)值上的操作,功能模型給出對(duì)象值上的約束。,面向?qū)ο蟮姆治龇椒?面向?qū)ο蠓治?OOA)是面向?qū)ο?OO)方法的一個(gè)組成部分,它利用面向?qū)ο蟮姆椒ㄟM(jìn)行系統(tǒng)

16、分析,即在明確的用戶需求的基礎(chǔ)上,通過對(duì)問題空間的分析,把問題分解成一些類或?qū)ο?,找出這些對(duì)象的特點(diǎn)(即屬性和服務(wù)),以及對(duì)象間的關(guān)系(一般/特殊,整體/部分關(guān)系),并由此產(chǎn)生一個(gè)規(guī)格說明,建立以對(duì)象為單元的信息系統(tǒng)邏輯模型,為面向?qū)ο笤O(shè)計(jì)(OOD)和面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP)提供指導(dǎo)。 到目前為止,面向?qū)ο蠓治龇椒ㄓ性S多種,有Booch方法(OOD)、Coad和Yourdon方法(OOA&D)、Jacobson方法(OOSE)、Rumbauph方法(OMT)、Wassman-Pircher方法(OOSD)等,這些方法從不同角度進(jìn)行分析,各有特色,但距問題的全面解決還有一定的距離。,OOA的系

17、統(tǒng)模型,OOA的主要目標(biāo)是利用面向?qū)ο蟮姆椒?,站在?duì)象的角度對(duì)所要研究的問題空間及系統(tǒng)進(jìn)行深刻的理解,正確認(rèn)識(shí)問題空間中的事務(wù)及其事務(wù)之間的關(guān)系,識(shí)別描述問題空間及系統(tǒng)所需的對(duì)象、類,定義對(duì)象及類的屬性與服務(wù),建立與問題空間相映射、相對(duì)應(yīng)的系統(tǒng)對(duì)象模型。 OOA的系統(tǒng)模型包括三大部分,即基本模型、補(bǔ)充模型及系統(tǒng)的詳細(xì)說明。,OOA的系統(tǒng)模型-基本模型,基本模型是以類圖的形式來表達(dá)系統(tǒng)最重要的信息,而類圖則由類、屬性、服務(wù)、泛化特化結(jié)構(gòu)、整體部分結(jié)構(gòu)、實(shí)例連接和消息連接等主要成分所構(gòu)成。這些成分所表達(dá)的模型信息可分為三個(gè)層次,即對(duì)象層、特征層和關(guān)系層。,OOA的系統(tǒng)模型-補(bǔ)充模型,補(bǔ)充模型是基本

18、模型之外的用于幫助理解并延伸基本模型的模型,補(bǔ)充模型由主題圖、使用實(shí)例和交互圖組成。 (1)主題圖是具有較強(qiáng)聯(lián)系的類組織的集合體,它是對(duì)系統(tǒng)類圖的進(jìn)一步抽象,是較高層次上的系統(tǒng)視圖。主題圖描述了系統(tǒng)的主題構(gòu)成,它簡(jiǎn)明直觀,無論是對(duì)開發(fā)者還是對(duì)使用者都有很大幫助。 (2)使用實(shí)例(Use Case)是對(duì)系統(tǒng)功能使用情況的文字描述,每個(gè)使用實(shí)例對(duì)應(yīng)著系統(tǒng)的一個(gè)功能,它描述系統(tǒng)的外實(shí)體與系統(tǒng)之間的信息交互關(guān)系,。 (3)交互圖(Interaction Diagram)是一個(gè)使用實(shí)例與完成相應(yīng)功能的系統(tǒng)成分之間的對(duì)照?qǐng)D,它具體表明了使用實(shí)例中陳述的事件是由系統(tǒng)中的哪個(gè)服務(wù)來響應(yīng)和完成,以及這個(gè)服務(wù)在執(zhí)

19、行過程中又進(jìn)一步用到哪些其它對(duì)象中的服務(wù)。,OOA的系統(tǒng)模型-系統(tǒng)的詳細(xì)說明,系統(tǒng)的詳細(xì)說明 詳細(xì)說明是按照面向?qū)ο蠓椒ǖ囊蟾袷綄?duì)系統(tǒng)模型作出的進(jìn)一步解釋,它主要由類描述模板構(gòu)成。對(duì)于OOA系統(tǒng)模型的每一類,一般都要建立一個(gè)類描述模板。類描述模板的構(gòu)成有:對(duì)整個(gè)類及其對(duì)象的進(jìn)一步說明、對(duì)每個(gè)屬性和服務(wù)的進(jìn)一步說明和其他必要的說明。 OOA的系統(tǒng)模型給出了對(duì)OOA分析結(jié)果的完整表達(dá)和精確描述,在這3個(gè)組成部分中,基本模型是描述表達(dá)OOA的核心,補(bǔ)充模型是對(duì)基本模型的必要補(bǔ)充和輔助說明,而詳細(xì)說明則給出了系統(tǒng)模型中類、對(duì)象、屬性和服務(wù)的詳細(xì)定義與進(jìn)一步解釋。這三個(gè)部分組合起來,構(gòu)成OOA分析文檔

20、的主要內(nèi)容,也是OOA的主要工具,OOA就是根據(jù)這一框架來展開工作的。,OOA分析過程,在一個(gè)系統(tǒng)開發(fā)過程中進(jìn)行了系統(tǒng)業(yè)務(wù)調(diào)查以后,就可以按照面向?qū)ο蟮乃枷雭矸治鰡栴}了。 OOA所強(qiáng)調(diào)的是在系統(tǒng)調(diào)查資料的基礎(chǔ)上,針對(duì)OO方法所需要的素材進(jìn)行歸類分析和整理.OOA強(qiáng)調(diào)如下基本觀點(diǎn): 分析規(guī)格說明的總體框架貫穿結(jié)構(gòu)化方法,如整體和局部,類和成員,對(duì)象和屬性等; 用消息進(jìn)行用戶和系統(tǒng)之間以及系統(tǒng)中實(shí)例之間的相互通訊; OOA大致上遵循如下五個(gè)基本步驟: (以Coad與Yourdon方法討論 ) 1、確定類(class)和對(duì)象(object)。 2、確定結(jié)構(gòu)(structure)。 3、定義主題(su

21、bject)。 4、定義屬性(attribute)。 5、確定服務(wù)(service)。,面向?qū)ο蟮脑O(shè)計(jì)方法,面向?qū)ο笤O(shè)計(jì)(OOD)是對(duì)面向?qū)ο蠓治霎a(chǎn)生的邏輯結(jié)果進(jìn)行設(shè)計(jì),從面向?qū)ο蟮姆治鲛D(zhuǎn)到面向?qū)ο蟮脑O(shè)計(jì)是一個(gè)累進(jìn)的模型擴(kuò)充過程。 面向?qū)ο蠓治龅母鱾€(gè)層次(如對(duì)象、結(jié)構(gòu)、主題、屬性和服務(wù))是對(duì)“問題空間”進(jìn)行了模型化,而面向?qū)ο蟮脑O(shè)計(jì)則需要對(duì)一個(gè)特定的“實(shí)現(xiàn)空間”進(jìn)行模型化,通過抽象、封裝、繼承性、消息通信、通用的組織法則、粒度和行為分類等途徑控制設(shè)計(jì)的復(fù)雜性。 OOD的基本目標(biāo)是改進(jìn)設(shè)計(jì)、增進(jìn)軟件生產(chǎn)效率、提高軟件質(zhì)量以及加強(qiáng)可維護(hù)性。,OOD系統(tǒng)模型,下列面向?qū)ο笤O(shè)計(jì)模型是由Coad和You

22、rdon提出的。該模型由四個(gè)部分和五個(gè)層次組成。 四個(gè)部件對(duì)應(yīng)目標(biāo)系統(tǒng)的四個(gè)子系統(tǒng),在不同的軟件中,這四個(gè)部件的大小和重要程度可能差異較大,可以根據(jù)需要做出進(jìn)一步的合并和分解。 PDC是針對(duì)總體進(jìn)行的設(shè)計(jì)。HIC給出實(shí)現(xiàn)人機(jī)交互需要的對(duì)象。TMC提供協(xié)調(diào)和管理目標(biāo)系統(tǒng)軟件各個(gè)任務(wù)的對(duì)象。DMC定義專用對(duì)象。,OOD設(shè)計(jì),1、問題空間部分的設(shè)計(jì)(PDC) 在面向?qū)ο笤O(shè)計(jì)中,面向?qū)ο蠓治觯∣OA)的結(jié)果恰好符合面向?qū)ο笤O(shè)計(jì)(OOD)的問題空間部分,因此,OOA的結(jié)果就是OOD部分模型中的一個(gè)完整部分。但是,為了解決一些特定設(shè)計(jì)所需要考慮的實(shí)際變化,可能要對(duì)OOA結(jié)果進(jìn)行一些改進(jìn)和增補(bǔ)。 復(fù)用設(shè)計(jì):

23、根據(jù)問題解決的需要,把從類庫或其他來源得到的既存類增加到問題解決方案中去。 把問題論域相關(guān)的類關(guān)聯(lián)起來:在設(shè)計(jì)時(shí),從類庫中引進(jìn)一個(gè)根類,做為包容類,把所有與問題論域有關(guān)的類關(guān)聯(lián)到一起,建立類的層次。把同一問題論域的一些類集合起來,存于類庫中。 加入一般化類以建立類間協(xié)議:有時(shí),某些特殊類要求一組類似的服務(wù)。在這種情況下,應(yīng)加入一個(gè)一般化的類,定義為所有這些特殊類共用的一組服務(wù)名,這些服務(wù)都是虛函數(shù)。在特殊類中定義其實(shí)現(xiàn)。 調(diào)整繼承支持級(jí)別:在OOA階段建立的對(duì)象模型中可能包括有多繼承關(guān)系,但實(shí)現(xiàn)時(shí)使用的程序設(shè)計(jì)語言可能只有單繼承,甚至沒有繼承機(jī)制,這樣就需對(duì)分析的結(jié)果進(jìn)行修改。 改進(jìn)性能:提高

24、執(zhí)行效率和速度是系統(tǒng)設(shè)計(jì)的主要指標(biāo)之一。增加某些屬性到原來的類中,或增加低層的類,以保存暫時(shí)結(jié)果,避免每次都要重復(fù)計(jì)算造成速度損失。 加入較低層的構(gòu)件:在做面向?qū)ο蠓治鰰r(shí),分析員往往專注于較高層的類和對(duì)象,避免考慮太多低層的實(shí)現(xiàn)細(xì)節(jié)。但在做面向?qū)ο笤O(shè)計(jì)時(shí),設(shè)計(jì)師在找出高層的類和對(duì)象時(shí),必須考慮到底需要用到哪些較低層的類和對(duì)象。,2、人機(jī)交互部分的設(shè)計(jì)(HIC),通常在OOA階段給出了所需的屬性和操作,在設(shè)計(jì)階段必須根據(jù)需求把交互的細(xì)節(jié)加入到用戶界面的設(shè)計(jì)中,包括有效的人機(jī)交互所必需的實(shí)際顯式和輸入。如Windows、Pane、Selector等。人機(jī)交互部分的設(shè)計(jì)決策影響到人的感情和精神感受,

25、設(shè)計(jì)HIC的策略由以下幾點(diǎn)構(gòu)成: 用戶分類; 描述人及其任務(wù)的腳本; 設(shè)計(jì)命令層; 設(shè)計(jì)詳細(xì)的交互; 繼續(xù)做原型; 設(shè)計(jì)HIC類; 根據(jù)圖形用戶界面(GUI)進(jìn)行設(shè)計(jì)。,3、任務(wù)管理部分的設(shè)計(jì)(TMC),在OOD中,任務(wù)是指系統(tǒng)為了達(dá)到某一設(shè)定目標(biāo)而進(jìn)行的一連串的數(shù)據(jù)操作(或服務(wù)),若干任務(wù)的并發(fā)執(zhí)行叫做多任務(wù)。任務(wù)能簡(jiǎn)化并發(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)行合理組織與管理。,(1)TMC設(shè)計(jì)策略,識(shí)別事件驅(qū)動(dòng)任務(wù)。 事件驅(qū)動(dòng)任務(wù)是指睡眠任務(wù)(不占用CPU),當(dāng)某個(gè)事件發(fā)生時(shí),任務(wù)被此事件觸發(fā),任務(wù)醒來做相應(yīng)處理,然后又回到睡眠狀態(tài)。 識(shí)別時(shí)鐘驅(qū)動(dòng)任務(wù)。按特定的時(shí)間間隔去觸發(fā)任務(wù)進(jìn)行處理,如某些設(shè)備需要周期性的數(shù)據(jù)采集和控制。 識(shí)別優(yōu)先任務(wù)和關(guān)鍵任務(wù)。把它們分離開來進(jìn)行細(xì)致的設(shè)計(jì)和編碼,保證時(shí)間約束或安全性。 識(shí)別協(xié)調(diào)者。增加一個(gè)任務(wù)來協(xié)調(diào)諸任

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論