面向?qū)ο蠹夹g(shù)課件_第1頁
面向?qū)ο蠹夹g(shù)課件_第2頁
面向?qū)ο蠹夹g(shù)課件_第3頁
面向?qū)ο蠹夹g(shù)課件_第4頁
面向?qū)ο蠹夹g(shù)課件_第5頁
已閱讀5頁,還剩191頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

面向?qū)ο蟮脑O(shè)計(jì)概而言之,面向?qū)ο蟮脑O(shè)計(jì)(OOD)就是運(yùn)用面向?qū)ο蠓椒ㄟM(jìn)行系統(tǒng)設(shè)計(jì);但不同時(shí)期有不同內(nèi)容及特點(diǎn)。

一、早期的OOD(八十年代至九十年代初):歷史:從OOP發(fā)展到OODG.Booch1982年發(fā)表“Object-OrientedDesign”,首次稱“面向?qū)ο蟮脑O(shè)計(jì)”。1986年發(fā)表“Object-OrientedDevelopment”較完整地闡述了OOD思想。兩個(gè)術(shù)語都用OOD作為縮寫,內(nèi)容上也沒有根本區(qū)別R.J.Abbott1983年提出正文分析方法,用規(guī)範(fàn)的英語描述對(duì)一個(gè)問題的解釋,然後從描述中提取對(duì)象及其特徵。例:名詞——對(duì)象,動(dòng)詞——操作。被後來的許多OOD方法所採用。1986年後,相繼出現(xiàn)了一批(早期的)OOD方法早期的OOD方法Booch86——Object-OrientedDevelopment

面向?qū)ο蟮拈_發(fā)GOOD——GeneralObject-OrientedDevelopment

通用面向?qū)ο蟮拈_發(fā)HOOD——HierarchicalObject-OrientedDesign

層次式面向?qū)ο蟮脑O(shè)計(jì)OOSD——Object-OrientedStructuredDesign

面向?qū)ο蟮慕Y(jié)構(gòu)設(shè)計(jì)……1、不是基於OOA的大多基於結(jié)構(gòu)化分析結(jié)果(數(shù)據(jù)流圖)2、是OO編程方法的延伸多數(shù)方法與編程語言有關(guān),特別受Ada影響很大3、不是純OO的對(duì)某些OO概念(如繼承)缺少支持,攙雜一些非OO概念(如數(shù)據(jù)流、包、模組等)4、不是只針對(duì)軟體生命週期的設(shè)計(jì)階段OOD中的“D”——指的是Design或Development多少涉及分析問題(如識(shí)別問題域的對(duì)象),但很不徹底——早期的OOD可看作現(xiàn)今OOA&D方法的雛形早期OOD的特點(diǎn):二、現(xiàn)今(90年代)的OOD背景:從結(jié)構(gòu)化分析文檔識(shí)別OOD的對(duì)象並非良策,識(shí)別對(duì)象的關(guān)鍵問題在於用OO方法進(jìn)行系統(tǒng)分析。OO方法從設(shè)計(jì)發(fā)展到分析,出現(xiàn)OOA方法。OOA和OOD構(gòu)成完整的OOA&D方法體系。OOD基於OOA,識(shí)別對(duì)象由OOA完成,OOD的主要定義對(duì)象如何實(shí)現(xiàn)。定義:面向?qū)ο蟮脑O(shè)計(jì)(OOD)就在是OOA模型基礎(chǔ)上運(yùn)用面向?qū)ο蠓椒ㄟM(jìn)行系統(tǒng)設(shè)計(jì),目標(biāo)是產(chǎn)生一個(gè)符合具體實(shí)現(xiàn)條件的OOD模型。特點(diǎn):1.以面向?qū)ο蟮姆治鰹榛A(chǔ),一般不依賴結(jié)構(gòu)化分析。2.與相應(yīng)的OOA方法共同構(gòu)成一種OOA&D方法體系。OOA和OOD採用一致的概念與原則,但屬於軟體生命週期的不同階段,有不同的目標(biāo)及策略。3.較全面地體現(xiàn)面向?qū)ο蠓椒ǖ母拍钆c原則。4.大多數(shù)方法獨(dú)立於編程語言,通過面向?qū)ο蟮姆治雠c設(shè)計(jì)所得到的系統(tǒng)模型可以由不同的編程語言實(shí)現(xiàn)。有多種OOA&D方法:Booch方法Coad-Yourdon方法Firesmith方法Jacobson方法(OOSE)Martin-Odell方法Rumbaugh方法(OMT)Wirfs-Brock方法……本課重點(diǎn)講授Coad/Yourdon方法,加以適當(dāng)改進(jìn)Coad/Yourdon方法:概念:對(duì)象、類、屬性、服務(wù)、整體-部分結(jié)構(gòu)、一般-特殊結(jié)構(gòu)、實(shí)例連接、消息連接、主題。原則:抽象、封裝、繼承、關(guān)聯(lián)、消息通訊、通用的組織方法、粒度控制、行為分類。識(shí)別類及對(duì)象識(shí)別結(jié)構(gòu)識(shí)別主題定義屬性定義服務(wù)OOA過程——五個(gè)活動(dòng)對(duì)象層結(jié)構(gòu)層主題層屬性層服務(wù)層OOA模型——五個(gè)層次人機(jī)交互部分(HIC)問題域部分(PDC)任務(wù)管理部分(TMC)數(shù)據(jù)管理部分(DMC)對(duì)象層結(jié)構(gòu)層主題層屬性層服務(wù)層OOD模型——五個(gè)層次,四個(gè)部分OOD過程 針對(duì)四個(gè)部分,進(jìn)行四個(gè)相應(yīng)的活動(dòng)設(shè)計(jì)問題域部分設(shè)計(jì)人機(jī)交互部分的設(shè)計(jì)任務(wù)管理部分設(shè)計(jì)數(shù)據(jù)管理部分上述每個(gè)活動(dòng)都包含與OOA相同的五個(gè)活動(dòng)——識(shí)別類及對(duì)象、識(shí)別結(jié)構(gòu)、識(shí)別主題、定義屬性、定義服務(wù)。1、提高軟體生產(chǎn)率開發(fā)階段:提高20%,維護(hù)階段提高更多。原因:設(shè)計(jì)的投入在編程、測試時(shí)得到回報(bào)OO方法使系統(tǒng)更易於理解分析文檔、設(shè)計(jì)文檔、根源程式對(duì)應(yīng)良好功能變化引起的全局性修改較少OOD結(jié)果的複用2、提高品質(zhì)現(xiàn)今的品質(zhì)觀點(diǎn):不僅是事後通過測試排除錯(cuò)誤,而是著眼與軟體開發(fā)過程的每個(gè)環(huán)節(jié),從分析、設(shè)計(jì)階段開始品質(zhì)保證。高質(zhì)量不只是沒有錯(cuò)誤,而是好用、易用、可移植、易維護(hù),用戶由衷地滿意。三、OOD的根本目標(biāo):3、加強(qiáng)可維護(hù)性需求是不斷變化的(儘管可階段性地“凍結(jié)”)因素:客戶業(yè)務(wù)、競爭形式、技術(shù)發(fā)展、規(guī)章制度……——要求設(shè)計(jì)結(jié)果對(duì)變化有彈性設(shè)計(jì)如何適應(yīng)不可預(yù)見的變化?——把易變部分和較穩(wěn)定的部分隔離,將變化的影響限制在局部易變性:服務(wù)>介面>屬性>類1、OOA與OOD的分工——兩種不同的觀點(diǎn)做什麼怎麼做問題域與系統(tǒng)責(zé)任與實(shí)現(xiàn)有關(guān)的因素分析設(shè)計(jì)第一種觀點(diǎn)分析設(shè)計(jì)第二種觀點(diǎn)第二種觀點(diǎn)的理由:(1)在各種分析/設(shè)計(jì)方法中“做什麼”和“怎麼做”實(shí)際上沒有嚴(yán)格的劃分”。(2)過分強(qiáng)調(diào)“分析不考慮怎麼做”將使某些必須在OOA考慮的問題得不到完整的認(rèn)識(shí)。(3)由於OO方法表示形式的一致,不存在把細(xì)化工作留給設(shè)計(jì)人員的必然理由。(4)避免重複地認(rèn)識(shí)同一事物,並有利於分析結(jié)果的複用。關(guān)鍵問題:對(duì)象的特徵細(xì)節(jié)(如屬性的數(shù)據(jù)類型和服務(wù)流程圖),是在分析時(shí)定義還是在設(shè)計(jì)時(shí)定義?例:Rumbaugh方法(OMT)

和Coad/Yourdon方法四、OOA與OOD的關(guān)係2、一致的概念與表示法前端——OOA 可以全部用OO概念建模;後端——OOP 可以全部用OOPL支持的OO概念編程。OOD是承前啟後中間環(huán)節(jié)——使用與OOA和OOP一致的概念建立完整的、可實(shí)現(xiàn)的設(shè)計(jì)模型。3、不同的目標(biāo)、內(nèi)容和抽象層次內(nèi)容與目標(biāo):OOA——主要內(nèi)容是研究問題域和用戶需求,運(yùn)用面向?qū)ο蟮挠^點(diǎn)和原則發(fā)現(xiàn)問題域中與系統(tǒng)責(zé)任有關(guān)的對(duì)象,以及對(duì)象的特徵和相互關(guān)係。目標(biāo)是建立一個(gè)直接映射問題域,符合用戶需求的OOA模型。OOD——主要內(nèi)容是以O(shè)OA模型為基礎(chǔ),按照實(shí)現(xiàn)的要求進(jìn)行設(shè)計(jì)決策,包括全局性的決策和局部細(xì)節(jié)的設(shè)計(jì)。目標(biāo)是產(chǎn)生一個(gè)滿足用戶需求,並且完全可實(shí)現(xiàn)的OOD模型。全局性設(shè)計(jì)決策:體系結(jié)構(gòu)、分佈方案、併發(fā)控制、人機(jī)交互、數(shù)據(jù)管理等。OOD方法應(yīng)支持用戶以O(shè)O概念表達(dá)對(duì)這些問題的設(shè)計(jì)。局部細(xì)節(jié)的設(shè)計(jì):對(duì)每個(gè)對(duì)象類的每個(gè)屬性和每個(gè)服務(wù)給出詳細(xì)的定義。抽象層次:OOA模型、OOD模型、根源程式 都是對(duì)現(xiàn)實(shí)世界的抽象——忽略了與系統(tǒng)責(zé)任無關(guān)的事物及特徵。三者又都是對(duì)電腦概念的抽象:根源程式忽略了與電腦硬體有關(guān)的細(xì)節(jié),OOD模型忽略了根源程式的許多細(xì)節(jié),OOA模型進(jìn)一步忽略了與實(shí)現(xiàn)條件有關(guān)的設(shè)計(jì)決策。從對(duì)電腦概念的抽象而言,OOD模型的抽象級(jí)別低於OOA模型而高於根源程式。概念:運(yùn)用與OOA部分相同的概念 ——沒有增加新概念對(duì)象、類、屬性、服務(wù)(操作)、封裝、繼承、消息、關(guān)聯(lián)、聚合、多態(tài)、主動(dòng)對(duì)象等表示法:採用與OOA一致的表示法分析設(shè)計(jì)數(shù)據(jù)流圖(DFD)模組結(jié)構(gòu)圖(MSD)實(shí)體-關(guān)係圖(ERD)傳統(tǒng)方法分析與設(shè)計(jì)之間的鴻溝使分析與設(shè)計(jì)之間不存在鴻溝OOAOOD一致的概念一致的表示法類圖類圖面向?qū)ο蟮姆治雠c設(shè)計(jì)之間不存在鴻溝第二章 OOD方法概貌基本按Coad/Yourdon方法講授,做適當(dāng)?shù)母倪M(jìn)和補(bǔ)充新增的組成部分,隔離實(shí)現(xiàn)條件OOD——按實(shí)現(xiàn)條件對(duì)OOA模型進(jìn)行調(diào)整,並補(bǔ)充幾個(gè)新的組成部分(也是由對(duì)象構(gòu)成)與實(shí)現(xiàn)有關(guān)的因素:圖形用戶介面系統(tǒng)硬體、操作系統(tǒng)及網(wǎng)路數(shù)據(jù)管理系統(tǒng)其他——編程語言、可複用構(gòu)件庫……按實(shí)現(xiàn)條件調(diào)整OOA模型

實(shí)現(xiàn)條件

實(shí)現(xiàn)條件基本思想:盡可能隔離實(shí)現(xiàn)條件對(duì)系統(tǒng)的影響——提供獨(dú)立的介面對(duì)不可隔離的因素,按實(shí)現(xiàn)條件調(diào)整OOA模型

實(shí)現(xiàn)條件OOD模型——從兩個(gè)側(cè)面來描述人機(jī)交互部分?jǐn)?shù)據(jù)介面部分控制介面部分問題域部分從一個(gè)側(cè)面觀察OOD模型包括幾個(gè)主要部分——一個(gè)核心部分加幾個(gè)週邊部分交互圖主題圖類圖詳細(xì)說明從另一側(cè)面觀察OOD模型每個(gè)部分如何用OO概念表達(dá)——採用OOA的概念及模型組織方式OOA與OOD的關(guān)係:1、從OOA到OOD不是轉(zhuǎn)換,不是細(xì)化;

——是調(diào)整和增補(bǔ)問題域部分OOA模型將OOA模型搬到OOD;進(jìn)行必要的調(diào)整,作為OOD模型的問題域部分;人機(jī)交互部分?jǐn)?shù)據(jù)介面部分控制介面部分增補(bǔ)其他三個(gè)部分,成為完整的OOD模型。2、採用一致的概念和表示法——不存在分析與設(shè)計(jì)之間的鴻溝3、有不同的側(cè)重點(diǎn)和不同的策略

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

OOD主要解決與實(shí)現(xiàn)有關(guān)的問題,基於OOA模型,針對(duì)具體的軟、硬體條件(如機(jī)器、網(wǎng)路、OS、GUI、DBMS等)產(chǎn)生一個(gè)可實(shí)現(xiàn)的OOD模型。4、OOA與OOD可適合不同的生命週期模型——瀑布模型、螺旋模型、增量模型、噴泉模型OOA與OOD之間可以順序進(jìn)行,也可交叉進(jìn)行OOD過程:逐個(gè)設(shè)計(jì)OOD模型的四個(gè)部分問題域部分的設(shè)計(jì)人機(jī)交互部分的設(shè)計(jì)控制介面部分的設(shè)計(jì)數(shù)據(jù)介面部分的設(shè)計(jì)不強(qiáng)調(diào)次序每個(gè)部分均採用與OOA一致的概念、表示法及活動(dòng),但具有自己獨(dú)特的策略。一、什麼是問題域部分?對(duì)OOA結(jié)果按實(shí)現(xiàn)條件進(jìn)行補(bǔ)充與調(diào)整就是問題域部分。不是傳統(tǒng)方法的“轉(zhuǎn)換”,不存在鴻溝。主要不是細(xì)化,但OOA未完成的細(xì)節(jié)定義要在OOD完成。是對(duì)OOA模型的補(bǔ)充與調(diào)整第三章 問題域部分(PDC)的設(shè)計(jì)二、為什麼需要問題域部分的設(shè)計(jì)?在OOA階段只考慮問題域和系統(tǒng)責(zé)任,OOD則要考慮與具體實(shí)現(xiàn)有關(guān)的問題,需要對(duì)OOA結(jié)果的補(bǔ)充與調(diào)整;使反映問題域本質(zhì)的總體框架和組織結(jié)構(gòu)長期穩(wěn)定,而細(xì)節(jié)可變;穩(wěn)定部分(PDC)與可變部分(其他部分)分開,使系統(tǒng)從容地適應(yīng)變化;有利於同一個(gè)分析用於不同的設(shè)計(jì)與實(shí)現(xiàn);支持系統(tǒng)族和相似系統(tǒng)的分析設(shè)計(jì)及編程結(jié)果複用;使一個(gè)成功的系統(tǒng)具有超出其生存期的可擴(kuò)展性。三、如何進(jìn)行問題域部分的設(shè)計(jì)?1、繼續(xù)運(yùn)用OOA的方法——概念、表示法及一部分策略2、使用OOA結(jié)果,並加以修改——需求的變化,新發(fā)現(xiàn)的錯(cuò)誤3、使用OOA結(jié)果,並進(jìn)行補(bǔ)充與調(diào)整(本節(jié)的重點(diǎn))(1)為複用設(shè)計(jì)與編程的類而增加結(jié)構(gòu)(2)增加一般類以建立共同協(xié)議(3)按編程語言調(diào)整繼承(4)提高性能(5)為數(shù)據(jù)存儲(chǔ)管理增補(bǔ)屬性與服務(wù)(6)為編程方便增加底層成分(1)為複用設(shè)計(jì)與編程的類而增加結(jié)構(gòu)OOA識(shí)別和定義的類是本次開發(fā)中新定義的,需要進(jìn)行編程。如果已存在一些可複用的類,而且這些類既有分析、設(shè)計(jì)時(shí)的定義,又有根源程式,那麼,複用這些類即可提高開發(fā)效率與品質(zhì)。可複用的類可能只是與OOA模型中的類相似,而不是完全相同,因此需對(duì)二者進(jìn)行修改。目標(biāo):盡可能使複用成分增多,新開發(fā)的成分減少不同程度的複用當(dāng)前所需的類的資訊比可複用類定義的資訊= 直接複用< 通過繼承複用> 刪除可複用類的多餘資訊≈ 刪除多餘資訊,通過繼承而複用對(duì)第四種情況的做法:把要複用的類加到PDC,標(biāo)以“OTS”記號(hào),或者中文“複用”劃掉(或標(biāo)出)不用的屬性與服務(wù)建立從複用類到PDC原有的類之間的一般-特殊關(guān)係由於PDC的類繼承了OTS類的特徵,所以有些屬性和服務(wù)不需要了——?jiǎng)澋?。修改PDC原有類的結(jié)構(gòu)和連接,必要時(shí)移到OTS類例:車輛序號(hào)顏色式樣出廠年月序號(hào)認(rèn)證PDC的類(OTS)車輛序號(hào)廠商式樣序號(hào)認(rèn)證可複用的類(2)增加一般類以建立共同協(xié)議增加根類:將所有的類組織在一起 提供全系統(tǒng)通用的協(xié)議

例:提供創(chuàng)建、刪除、複製等服務(wù)增加其他一般類:提供局部通用的協(xié)議 例:提供永久存儲(chǔ)及恢復(fù)功能

Object(複用)

B

CE

A屬性服務(wù)DF1,m1屬性服務(wù)屬性服務(wù)屬性服務(wù)屬性服務(wù)屬性服務(wù)例:(3)按編程語言調(diào)整繼承起因:OOA強(qiáng)調(diào)如實(shí)地反映問題域,OOD考慮實(shí)現(xiàn)問題, 所用語言不支持多繼承,甚至不支持繼承多繼承模式狹義菱形廣義菱形方法1:採用整體部分結(jié)構(gòu)公司人員顧主職員顧主職員公司人員身份顧主身份職員身份1,21問題:道理何在?方法2:採用實(shí)例連接公司人員顧主職員顧主職員公司人員身份顧主身份職員身份1,21問題:與方法1有何區(qū)別?方法3:壓平公司人員顧主職員顧主職員問題:有什麼缺點(diǎn)?(4)提高性能*增加屬性*合併通訊頻繁的類流速調(diào)節(jié)器指定流速……流速調(diào)節(jié)……流速探測器當(dāng)前流速……流速探測取當(dāng)前流速……流速控制器指定流速當(dāng)前流速……流速調(diào)節(jié)流速探測……合併前合併後*增加低層成分幀顯示背景前景110,m0,1顯示顯示(5)為數(shù)據(jù)存儲(chǔ)管理增補(bǔ)屬性與服務(wù)在數(shù)據(jù)介面部分設(shè)計(jì)仲介紹(6)為編程方便增加底層成分——細(xì)化對(duì)象的分類例:將幾何圖形分成多邊形、橢圓、扇形等特殊類幾何圖形多邊形扇形橢圓一、什麼是人機(jī)交互部分系統(tǒng)中負(fù)責(zé)人機(jī)交互的部分(由一些對(duì)象類構(gòu)成)OOA和OOD都要考慮人機(jī)交互,但目的不同

OOA:通過人機(jī)介面反映需求(原型開發(fā))

OOD:設(shè)計(jì)人機(jī)交互的細(xì)節(jié)人機(jī)交互部分既取決於需求,又與GUI密切相關(guān)

HIC的設(shè)計(jì)可以與OOA同時(shí)進(jìn)行,但要互相分離

——為了隔離實(shí)現(xiàn)條件的影響第四章 人機(jī)交互部分(HIC)的設(shè)計(jì)二、為什麼需要人機(jī)交互部分為了隔離GUI的變化對(duì)問題域部分的影響人機(jī)介面是系統(tǒng)中一個(gè)比較獨(dú)立的部分集中表現(xiàn): 人如何向系統(tǒng)下達(dá)命令 系統(tǒng)如何向人提交資訊三、如何設(shè)計(jì)人機(jī)交互部分 研究使用系統(tǒng)的人 設(shè)計(jì)人機(jī)交互命令 用對(duì)象表示介面成分1、研究使用系統(tǒng)的人,建立任務(wù)腳本 類別、身份、水準(zhǔn)…...

目的、任務(wù)、習(xí)慣、感情、關(guān)鍵性要求……

任務(wù)腳本

——描述用戶如何通過與系統(tǒng)交互而進(jìn)行工作2、設(shè)計(jì)人機(jī)交互命令(1)學(xué)習(xí)、研究廣泛流行的人機(jī)介面, 熟悉大家習(xí)慣的命令方式及介面風(fēng)格 例:

Windows Motif VB、VC、Delphi Web …...(2)設(shè)計(jì)高層命令 什麼是高層命令(以TurboC為例)?

A)對(duì)應(yīng)著系統(tǒng)的一項(xiàng)大的功能(或操作步驟)的命令 例:Edit,Compiler,Run B)當(dāng)命令分為多個(gè)層次時(shí),位於最上層的命令 例:Edit,Debug C)若干功能接近的小命令的總稱 例:File,Options

做法:

*從需求出發(fā)發(fā)現(xiàn)各種命令——考察活動(dòng)者和usecase *從對(duì)象(特別是主動(dòng)對(duì)象)的服務(wù)出發(fā)發(fā)現(xiàn)各種命令

*符合A、B條件的作為高層命令

*剩下的按C的原則進(jìn)行組合——如果太多,再組合 方式: 主菜單條,圖符,菜單屏面關(guān)鍵問題:*適當(dāng)?shù)拿?/p>

反映命令提供的功能,符合流行的習(xí)慣 *合理的順序 按用戶工作順序,按使用頻繁度,按功能類似性*適當(dāng)?shù)膶挾扰c深度 深度不超過3,寬度不超過7±2(3)設(shè)計(jì)細(xì)化的命令 按任務(wù)腳本,將每一條高層命令細(xì)化為一系列滿 足用戶交互要求的底層命令評(píng)價(jià)準(zhǔn)則*一致性——術(shù)語、風(fēng)格、步驟、活動(dòng)的一致*減少操作步驟,包括減少鍵盤及滑鼠操作*容錯(cuò)性*減少人腦記憶至理名言:介面設(shè)計(jì)是給機(jī)器編程,不是給人編程!

*減少重複輸入*及時(shí)回饋*趣味性、外觀與感受……(4)設(shè)計(jì)詳細(xì)的交互(5)設(shè)計(jì)HIC的類

——用面向?qū)ο蟮母拍钆c表示法表達(dá)所有的介面成分

1)以窗口作為基本的類

2)以窗口的部件作為窗口的部分對(duì)象類, 與窗口類形成整體-部分結(jié)構(gòu) 例:菜單,工作區(qū),對(duì)話框…… 3)發(fā)現(xiàn)窗口與部件的共性,定義較一般的窗口類和 部件類,形成一般-特殊結(jié)構(gòu)

4)用屬性表示窗口或部件的靜態(tài)特徵 如:尺寸、位置、顏色、選項(xiàng)等

5)用服務(wù)表示窗口或部件的動(dòng)態(tài)特徵 如:選中、移動(dòng)、滾屏等

6)建立與系統(tǒng)內(nèi)部其他對(duì)象之間的消息連接介面對(duì)象服務(wù)往往要請(qǐng)求系統(tǒng)內(nèi)部其他對(duì)象的服務(wù)一、什麼是任務(wù)管理部分任務(wù)(task)——進(jìn)程(process)的別稱有多個(gè)任務(wù)(進(jìn)程)併發(fā)執(zhí)行的系統(tǒng)稱作多任務(wù)系統(tǒng)或併發(fā)系統(tǒng)任務(wù)管理部分——是OOD模型的組成部分之一,用來定義和表示併發(fā)系統(tǒng)中的每個(gè)任務(wù)。用主動(dòng)對(duì)象表示每個(gè)任務(wù)所有的主動(dòng)對(duì)象類構(gòu)成任務(wù)管理部分第五章 任務(wù)管理部分(DMC)的設(shè)計(jì)二、為什麼需要任務(wù)管理部分併發(fā)行為是現(xiàn)實(shí)中固有的當(dāng)前大量的系統(tǒng)都是併發(fā)系統(tǒng)(多任務(wù)系統(tǒng)),例如:設(shè)備與電腦併發(fā)工作的系統(tǒng)有多個(gè)窗口進(jìn)行人機(jī)交互的系統(tǒng)多用戶系統(tǒng)多個(gè)子系統(tǒng)併發(fā)工作的系統(tǒng)單處理機(jī)上的多任務(wù)系統(tǒng)多處理機(jī)系統(tǒng)……多任務(wù)的設(shè)置描述問題域固有的併發(fā)行為表達(dá)實(shí)現(xiàn)所需的設(shè)計(jì)決策為了隔離硬體、操作系統(tǒng)、網(wǎng)路的變化對(duì)整個(gè)系統(tǒng)的影響1)OOA定義的主動(dòng)對(duì)象主動(dòng)對(duì)象類的每個(gè)對(duì)象事例都是一個(gè)任務(wù)2)系統(tǒng)的併發(fā)需求所要求的多任務(wù)要求多項(xiàng)工作同時(shí)進(jìn)行,則每一項(xiàng)工作就是一個(gè)任務(wù)3)系統(tǒng)分佈方案所要求的多任務(wù)每一個(gè)分佈站點(diǎn)至少有一個(gè)任務(wù)(主動(dòng)對(duì)象)4)為提高性能而增設(shè)的任務(wù)高優(yōu)先任務(wù),低優(yōu)先任務(wù),關(guān)鍵任務(wù)5)為實(shí)現(xiàn)方便設(shè)立的任務(wù)例:負(fù)責(zé)處理機(jī)之間通訊的任務(wù)6)為協(xié)調(diào)多任務(wù)的執(zhí)行設(shè)立的任務(wù)三、如何設(shè)計(jì)TMC1、識(shí)別每個(gè)任務(wù)C/Y方法著眼於:事件驅(qū)動(dòng)的任務(wù)時(shí)鐘驅(qū)動(dòng)的任務(wù)優(yōu)先任務(wù)關(guān)鍵任務(wù)協(xié)調(diào)者任務(wù)2、審查與篩選去掉不必要的任務(wù)多餘的併發(fā)性意味著執(zhí)行效率的損失每個(gè)任務(wù)應(yīng)該有以上列舉的理由之一不要人為地增加任務(wù)3、任務(wù)的表示與分類用主動(dòng)對(duì)象表示每個(gè)任務(wù)用主動(dòng)對(duì)象類描述每一類任務(wù)用主動(dòng)對(duì)象的主動(dòng)服務(wù)描述任務(wù)的功能原有的主動(dòng)對(duì)象原有的普通對(duì)象標(biāo)為主動(dòng)對(duì)象新定義的主動(dòng)對(duì)象@類名屬性

……@服務(wù)

……數(shù)據(jù)管理部分是OOD模型中負(fù)責(zé)在特定的數(shù)據(jù)管理系統(tǒng)中存儲(chǔ)和檢索對(duì)象的組成部分。問題範(fàn)圍:對(duì)象在永久性存儲(chǔ)介質(zhì)上的存儲(chǔ)只存儲(chǔ)對(duì)象的屬性部分可能只有一部分對(duì)象需要長久存儲(chǔ)第六章 數(shù)據(jù)管理部分(TMC)的設(shè)計(jì)一、什麼是數(shù)據(jù)管理部分不同的數(shù)據(jù)管理系統(tǒng):檔系統(tǒng)、R-DBMS、OO-DBMS——對(duì)數(shù)據(jù)管理部分的設(shè)計(jì)有不同的影響為了隔離數(shù)據(jù)管理系統(tǒng)對(duì)其他部分的影響使選用不同的數(shù)據(jù)管理系統(tǒng)時(shí),問題域部分基本相同二、為什麼需要數(shù)據(jù)管理部分三、如何設(shè)計(jì)數(shù)據(jù)管理部分1、選擇數(shù)據(jù)管理系統(tǒng) 檔系統(tǒng),R-DBMS,OO-DBMS(以下僅針對(duì)R-DBMS)2、數(shù)據(jù)存放設(shè)計(jì)

——每個(gè)類使用一個(gè)資料庫表

1)列出每個(gè)類的所有屬性(包括繼承來的屬性)

2)規(guī)範(fàn)化——一般按第三範(fàn)式,按時(shí)間與空間權(quán)衡

3)定義資料庫的表 列:規(guī)範(fàn)化之後的一個(gè)屬性 行:一個(gè)對(duì)象實(shí)例3、設(shè)計(jì)數(shù)據(jù)管理部分的類並修改問題域部分——兩種方案方案1:問題域部分:每個(gè)類的對(duì)象自己存儲(chǔ)自己數(shù)據(jù)管理部分:設(shè)立一個(gè)對(duì)象,提供兩個(gè)服務(wù)——(1)通知問題域部分的對(duì)象自己存儲(chǔ)自己(2)檢索被存儲(chǔ)的對(duì)象為了存儲(chǔ)自己,對(duì)象要知道什麼?本類對(duì)象的屬性數(shù)據(jù)結(jié)構(gòu)本類對(duì)象對(duì)應(yīng)哪個(gè)資料庫表對(duì)象實(shí)例對(duì)應(yīng)資料庫表的哪一行方案2:數(shù)據(jù)管理部分設(shè)立一個(gè)對(duì)象,負(fù)責(zé)問題域部分所有對(duì)象的存儲(chǔ)與檢索問題域部分的對(duì)象通過消息使用數(shù)據(jù)管理部分對(duì)象的服務(wù)為了存儲(chǔ)各個(gè)類的對(duì)象,DMC的對(duì)象要知道什麼?每個(gè)要求存儲(chǔ)、檢索的類的屬性數(shù)據(jù)結(jié)構(gòu)每個(gè)要求存儲(chǔ)、檢索的類的對(duì)象存放在哪個(gè)資料庫表當(dāng)前要求存儲(chǔ)或檢索的對(duì)象屬於哪個(gè)類,對(duì)應(yīng)資料庫表的哪一行關(guān)於面向?qū)ο蟮馁Y料庫管理系統(tǒng)(OO-DBMS)三種做法:在R-DBMS之上增加OO功能對(duì)OOPL增加永久對(duì)象功能全新的設(shè)計(jì)對(duì)照E-R模型的存儲(chǔ),理解對(duì)象存儲(chǔ)

對(duì)象的屬性部分相當(dāng)於E-R模型中的一個(gè)實(shí)體當(dāng)使用OO-DBMS時(shí),不需要上述工作

面向?qū)ο蟮姆治鲫P(guān)於軟體工程的補(bǔ)充知識(shí)軟體危機(jī)硬體性能提高,價(jià)格則下降,應(yīng)用領(lǐng)域迅速擴(kuò)大;要求電腦做的事越來越多,也越來越複雜;這使電腦軟體的功能、規(guī)模及複雜性與日俱增。軟體的複雜性達(dá)到了它的開發(fā)者難以控制的程度。大系統(tǒng)的複雜性是小程式無法比擬的。當(dāng)幾十個(gè)人開發(fā)一個(gè)大型軟體系統(tǒng)時(shí),沒有任何人能對(duì)它從全局到細(xì)節(jié)都瞭若指掌。各部分的問題錯(cuò)縱複雜,相互影響,不可避免地隱藏大量錯(cuò)誤,並且沒有可靠的方法能徹底發(fā)現(xiàn)和排除這些錯(cuò)誤。這種情況導(dǎo)致了嚴(yán)重的後果——軟體可靠性下降;開發(fā)效率低下;維護(hù)極為困難。這使軟體開發(fā)者陷入困境,人們稱之為“軟體危機(jī)”。尋求擺脫危機(jī)的出路:程式設(shè)計(jì)方法學(xué)的研究——著眼於程式本身,研究怎樣才能寫出高質(zhì)量的程式。如結(jié)構(gòu)化程式設(shè)計(jì)方法。軟體工程學(xué)的研究——著眼於軟體生產(chǎn)的全過程(編程只是其中的一個(gè)階段),研究用工程學(xué)的方法來開發(fā)軟體。其他——如併發(fā)程式設(shè)計(jì)、數(shù)據(jù)結(jié)構(gòu)與演算法、以及編程語言等方面的研究。軟體工程:軟體工程的基本思想,就是用工程學(xué)的方法進(jìn)行軟體的開發(fā)與維護(hù),並對(duì)軟體生產(chǎn)過程進(jìn)行工程化的管理。在此之前,軟體的生產(chǎn)方式是手工作坊式的。程式員像是一些個(gè)體的手工勞動(dòng)者,程式設(shè)計(jì)被當(dāng)作一種藝術(shù)創(chuàng)造,而不當(dāng)作是一項(xiàng)工程。這種生產(chǎn)方式只能適應(yīng)較小的程式,不能適應(yīng)大型軟體開發(fā)。和其他行業(yè)的道理一樣,當(dāng)軟體的規(guī)模和複雜性達(dá)到一定程度時(shí),即使有大量熟練的程式員也難以勝任它的開發(fā)任務(wù)。需要用工程的方法來進(jìn)行軟體生產(chǎn),這就是軟體工程。軟體生命週期(軟體工程理論所揭示的一項(xiàng)規(guī)律)一個(gè)軟體總是要經(jīng)歷從誕生到死亡的過程,其間需要經(jīng)過需求分析、設(shè)計(jì)、編碼、測試、維護(hù)等一系列生存階段。需求分析——分析用戶需求,研究問題域,搞清楚應(yīng)該建立一個(gè)什麼樣的系統(tǒng)才能滿足用戶的需求。設(shè)計(jì)——分為概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)。概要設(shè)計(jì)是以需求分析的結(jié)果為依據(jù)定義系統(tǒng)的主要構(gòu)成成分和它們之間的關(guān)係。詳細(xì)設(shè)計(jì)是定義每個(gè)系統(tǒng)成分內(nèi)部的構(gòu)造細(xì)節(jié)。編程——按設(shè)計(jì)的要求來編寫程式,並通過調(diào)試使之能夠運(yùn)行。測試——通過一系列測試用例來檢驗(yàn)程式正確性,看它是否能達(dá)到預(yù)期的要求。維護(hù)——在系統(tǒng)交付使用之後,根據(jù)使用中發(fā)現(xiàn)的錯(cuò)誤或用戶的需求變化,對(duì)軟體進(jìn)行修改。軟體工程的主要內(nèi)容包括:針對(duì)軟體生命週期全過程及其每個(gè)具體階段的工程方法、技術(shù)細(xì)則、文檔規(guī)範(fàn)、技術(shù)支持、管理制度、人員織組以及品質(zhì)保證體系等。每個(gè)軟體開發(fā)者必須按工程的統(tǒng)一要求行事,不能隨意地自由發(fā)揮。每個(gè)開發(fā)階段都要產(chǎn)生健全的、符合工程規(guī)範(fàn)的文檔。軟體產(chǎn)品是這些文檔的總合,而不僅僅是程式。實(shí)行軟體工程的主要意義:提高軟體產(chǎn)品的品質(zhì)提高了軟體生產(chǎn)率軟體工程的推行從根本上改變了軟體生產(chǎn)中無章可循、各行其是的混亂局面,並為軟體開發(fā)從手工生產(chǎn)轉(zhuǎn)向工業(yè)化生產(chǎn)奠定了基礎(chǔ)。軟體開發(fā)方法:軟體工程所採用的方法不是唯一的。自軟體工程出現(xiàn)以來,人們已經(jīng)提出了多種軟體開發(fā)方法,例如:功能分解法、數(shù)據(jù)流法(結(jié)構(gòu)化方法)、快速原型法、資訊模型法、面向?qū)ο蠓椒?。軟體過程模型描述軟體開發(fā)過程的各項(xiàng)活動(dòng)、角色、產(chǎn)品及其相互關(guān)係的模型。例如:瀑布模型、螺旋模型、增量模型和噴泉模型等。不同的軟體開發(fā)方法和軟體開發(fā)模型要求有不同的工程體系。從歷史看,使用最多的是結(jié)構(gòu)化方法和瀑布模型;代表當(dāng)前技術(shù)主流的是面向?qū)ο蠓椒ê蛧娙P?。分析設(shè)計(jì)編程測試維護(hù)瀑布模型:強(qiáng)調(diào)嚴(yán)格的階段劃分和前後次序先做完OOA再進(jìn)行OODOOAOOD噴泉模型:各個(gè)階段之間沒有嚴(yán)格的界限,其活動(dòng)可以交疊和回溯。演化集成測試編程設(shè)計(jì)分析OOAOOD有些工作既可在OOA中進(jìn)行,也可在OOD中進(jìn)行。各階段概念和表示法的一致為採用這種模型提供了條件。面向?qū)ο蟮姆治觯∣OA),就是運(yùn)用面向?qū)ο蠓椒ㄟM(jìn)行系統(tǒng)分析。OOA是分析,是軟體生命週期的一個(gè)階段,具有一般分析方法共同具有的內(nèi)容、目標(biāo)及策略;但強(qiáng)調(diào)運(yùn)用面向?qū)ο蠓椒ㄟM(jìn)行分析,用面向?qū)ο蟮母拍詈捅硎痉ū磉_(dá)分析結(jié)果?;救蝿?wù)是:運(yùn)用面向?qū)ο蠓椒?,?duì)問題域和系統(tǒng)責(zé)任進(jìn)行分析和理解,找出描述問題域及系統(tǒng)責(zé)任所需的對(duì)象,定義對(duì)象的屬性、服務(wù)以及它們之間的關(guān)係。目標(biāo)是建立一個(gè)符合問題域、滿足用戶需求的OOA模型。2.1什麼是面向?qū)ο蟮姆治觯?/p>

2.2分析面臨的主要問題1、問題域和系統(tǒng)責(zé)任複雜性日益增長問題域(problemdomain):被開發(fā)系統(tǒng)的應(yīng)用領(lǐng)域,即在現(xiàn)實(shí)世界中由這個(gè)系統(tǒng)進(jìn)行處理的業(yè)務(wù)範(fàn)圍。系統(tǒng)責(zé)任(systemresponsibilities):所開發(fā)的系統(tǒng)應(yīng)該具備的職能。困難所在:分析人員,多半不是問題域的專家;問題域?qū)<叶喟氩皇擒涹w專家;系統(tǒng)所面臨的問題域比以往更為廣闊和複雜,系統(tǒng)比以往更為龐大。硬體性能提高價(jià)格的下降;編程效率不斷提高。對(duì)需求分析的壓力比其他開發(fā)階段更為巨大。2、交流問題軟體工程是非?!懊嫦蛉说摹?,是一項(xiàng)思維活動(dòng)、思想交流和人為因素十分密集的工作?!づc用戶和領(lǐng)域?qū)<业慕涣鳌し治鋈藛T之間的交流·與用戶和領(lǐng)域?qū)<业脑俳涣鳌づc設(shè)計(jì)人員的交流·與管理人員的交流如果分析所產(chǎn)生的文檔使分析員以外的其他人員都很難讀懂,那就很不利於交流。這會(huì)使彼此的思想不易溝通,並容易隱藏許多錯(cuò)誤。3、需求的不斷變化引起需求變化的因素用戶客觀原因,主觀原因競爭因素經(jīng)費(fèi)技術(shù)因素軟體開發(fā)者必須以合作的態(tài)度滿足用戶需求易變部分和穩(wěn)定部分:功能:最易變外部介面:很易變屬性:較易變對(duì)象:較穩(wěn)定4、軟體複用的要求複用級(jí)別提高——分析結(jié)果複用一個(gè)分析模型中的可複用部分用於多個(gè)系統(tǒng)一個(gè)分析模型在多種條件下實(shí)現(xiàn)對(duì)分析提出了更高的要求2.2分析方法綜述功能分解法(functiondecomposition)

功能分解=功能+子功能+功能介面以系統(tǒng)需要提供的功能為中心來組織系統(tǒng)。首先定義各種功能,然後把功能分解為子功能,同時(shí)定義功能之間的介面。對(duì)較大的子功能進(jìn)一步分解,直到可給出明確的定義。根據(jù)功能/子功能的需要設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)。優(yōu)點(diǎn)與缺點(diǎn):直接地反映用戶的需求,所以工作很容易開始。不能直接地映射問題域,很難檢驗(yàn)分析結(jié)果的正確性。對(duì)需求變化的適應(yīng)能力很差。局部的錯(cuò)誤和局部的修改很容易產(chǎn)生全局性的影響。

功能

功能

功能

系統(tǒng)子功能子功能子功能子功能分解分解分解……………………工作過程:一層層地進(jìn)行功能分解功能模組功能模組功能模組功能模組功能模組功能模組功能模組功能模組功能模組功能模組得到的系統(tǒng)模型:由模組及其介面構(gòu)成數(shù)據(jù)流法(dataflowapproach)

數(shù)據(jù)流法=數(shù)據(jù)流+數(shù)據(jù)處理(加工)+數(shù)據(jù)存儲(chǔ)+端點(diǎn)+處理說明+數(shù)據(jù)字典又稱作結(jié)構(gòu)化分析?;静呗允歉檾?shù)據(jù)流,即研究問題域中數(shù)據(jù)如何流動(dòng)以及在各個(gè)環(huán)節(jié)上進(jìn)行何種處理,從而發(fā)現(xiàn)數(shù)據(jù)流和加工。問題域被映射為數(shù)據(jù)流圖(DFD),並用處理說明和數(shù)據(jù)字典進(jìn)行詳細(xì)說明。優(yōu)點(diǎn)與缺點(diǎn):有嚴(yán)格的法則,較強(qiáng)調(diào)研究問題域。仍然是間接映射;與結(jié)構(gòu)化設(shè)計(jì)的表示法不一致,而且沒有一種嚴(yán)格的、可操作的轉(zhuǎn)換規(guī)則。因此從分析到設(shè)計(jì)的過渡比較困難;大系統(tǒng)數(shù)據(jù)流和加工的數(shù)量常常多到難以控制的程度,引起分析文檔的膨脹。數(shù)據(jù)流加工數(shù)據(jù)存儲(chǔ)端點(diǎn)處理說明————————————————————————數(shù)據(jù)詞典————————————————————————資訊建模法(informationmodeling)資訊建模=實(shí)體(對(duì)象)+屬性+關(guān)係+父類型/子類型+關(guān)聯(lián)對(duì)象由實(shí)體-關(guān)係法(E-R方法)發(fā)展而來。與資料庫設(shè)計(jì)有很深的淵源。核心概念是實(shí)體和關(guān)係。實(shí)體描述問題域的事物,含有屬性;關(guān)係描述事物之間在數(shù)據(jù)方面的聯(lián)繫,也可以帶有屬性。發(fā)展之後的方法也把實(shí)體稱作對(duì)象,並使用了類型和子類型的概念,作為實(shí)體(對(duì)象)的抽象描述。有人也把它列入面向?qū)ο蠓椒ǎ幸韵虏顒e:1.強(qiáng)調(diào)的重點(diǎn)是資訊建模和狀態(tài)建模,而不是對(duì)象建模。2.沒有把對(duì)實(shí)體屬性的操作封裝到實(shí)體對(duì)象中。3.只有屬性的繼承,不支持服務(wù)(操作)的繼承。4.沒有採用消息通訊。面向?qū)ο蟮姆治雒嫦驅(qū)ο螅綄?duì)象,類+結(jié)構(gòu)與連接+繼承+封裝+消息通訊是對(duì)問題域中事物的完整映射,包括事物的數(shù)據(jù)特徵和行為特徵。如實(shí)地反映了問題域中事物之間的各種關(guān)係,包括分類結(jié)構(gòu)、組裝結(jié)構(gòu)、靜態(tài)聯(lián)繫和動(dòng)態(tài)聯(lián)繫。採用封裝、繼承、消息通訊等原則,使問題域的複雜性得到控制。不同的分析方法——對(duì)現(xiàn)實(shí)世界(問題域)的不同映射

資訊建模法

面向?qū)ο蠓椒üδ?子功能功能介面功能分解法數(shù)據(jù)流加工

結(jié)構(gòu)化方法分析方法如何適應(yīng)面臨的挑戰(zhàn)?1.是否有利於對(duì)問題及系統(tǒng)責(zé)任的理解要求分析方法採用與問題域一致的概念、術(shù)語及系統(tǒng)成分,產(chǎn)生一個(gè)較好地映射問題域、準(zhǔn)確反映系統(tǒng)責(zé)任的系統(tǒng)模型。2.是否有利於人員之間交流要求分析方法使用與問題域一致的概念及術(shù)語,盡可能體現(xiàn)人類的日常思維方式,使各類人員具有共同語言。3.對(duì)需求變化的適應(yīng)性要求分析方法把系統(tǒng)中最容易變化的因素隔離起來,並使系統(tǒng)的各個(gè)單元之間介面盡可能少。即把需求變化所引起的影響局部化。4.是否支持軟體複用系統(tǒng)模型的基本成分具有完整性(能完整地對(duì)應(yīng)問題域中的事物)和獨(dú)立性(與其它成分介面儘量少)。分析方法的比較功能分解法數(shù)據(jù)流法資訊建模法OOA對(duì)問題域和系統(tǒng)責(zé)任的理解改進(jìn)交流適應(yīng)變化支持複用差差差最差差差較差較差較好較好略好略好好好好好OOA的主要優(yōu)點(diǎn)有利於對(duì)問題的理解,使系統(tǒng)的複雜性得到控制採用與問題域一致的概念、術(shù)語及系統(tǒng)成分,使系統(tǒng)能較好地映射問題域,準(zhǔn)確反映系統(tǒng)責(zé)任。有利於各類人員之間的交流使用與問題域一致的概念及術(shù)語,體現(xiàn)人類的日常思維方式,從而使各類人員具有一種比較易懂的共同語言。對(duì)需求變化的適應(yīng)性按封裝原則把系統(tǒng)中最容易變化的因素隔離起來,系統(tǒng)的各個(gè)單元成分之間介面很少,把需求變化所引起的影響局部化。封裝、繼承、聚合等原則,對(duì)象的完整性、獨(dú)立性以及與問題域的良好對(duì)應(yīng),使面向?qū)ο蠓椒ǚ浅S欣盾涹w複用。支持軟體複用貫穿軟體生命週期全過程的一致性從OOA開始使用與問題域一致的概念、辭彙、原則及表示法,這種一致性保持到設(shè)計(jì)、編程、測試、維護(hù)等各個(gè)階段,這對(duì)於整個(gè)軟體生命週期的各種開發(fā)、維護(hù)及管理活動(dòng)都具有重要的意義。實(shí)用性僅僅數(shù)年以前,面向?qū)ο蟮能涹w開發(fā)還被許多人看作一種理論研究或未來的新技術(shù),現(xiàn)在已經(jīng)無可置疑地成為一種實(shí)用技術(shù)。國外情況,國內(nèi)情況。有利於用戶參與中國的國情——用戶更希望參與應(yīng)用系統(tǒng)的開發(fā)對(duì)用戶而言,學(xué)習(xí)OO方法的困難要比其他方法少得多。——先進(jìn)不等於難學(xué)難用Berard方法Booch方法Coad-Yourdon方法Firesmith方法Jacobson方法(OOSE)Martin-Odell方法Rumbaugh方法(OMT)Seidewitz-Stark方法Shlaer-Mellor方法Wirfs-Brock方法……不同的OOA&D方法方法的異同體現(xiàn)於:概念表示法系統(tǒng)模型開發(fā)過程可用性技術(shù)支持1、概念多種OOA方法在概念方面的差別體現(xiàn)在:概念的取捨不同;同一術(shù)語的概念定義不同(往往是措詞不同而涵義相近);對(duì)同一概念使用的術(shù)語不同。有些OOA方法不同程度地採用了一些非OO方法的概念,這是衡量該方法是不是純OO的重要因素。2、原則對(duì)於面向?qū)ο蠓椒ㄋ岢脑瓌t,各種OOA方法遵從的程度有所不同,例如有的方法不體現(xiàn)數(shù)據(jù)與操作的封裝,有的方法不支持操作的繼承。4.OOA模型

OOA模型即通過面向?qū)ο蟮姆治鏊⒌南到y(tǒng)邏輯模型,它以基本表示法的圖形符號(hào)為圖元,表達(dá)OOA階段所認(rèn)識(shí)的系統(tǒng)成分及彼此之間的關(guān)係,在系統(tǒng)的全局範(fàn)圍內(nèi)構(gòu)成完整的圖形表示。各種OOA方法所產(chǎn)生的OOA模型從整體形態(tài)、結(jié)構(gòu)框架到具體內(nèi)容都有較大的差異。3.表示法及詳細(xì)說明規(guī)範(fàn)

各種OOA方法都提出了一套表示OO概念並體現(xiàn)OO原則的圖形表示法。此外規(guī)定一套建立詳細(xì)說明的文檔規(guī)範(fàn)。各種方法的差別體現(xiàn)了採用的概念與原則的不同。對(duì)相同的概念,各種方法採用的表示符號(hào)也不盡相同。過程模型對(duì)象層結(jié)構(gòu)層主題層屬性層服務(wù)層不同的方法,不同的OOA模型Coad-Yourdon方法

動(dòng)態(tài)模型靜態(tài)模型邏輯模型物理模型Booch方法Shlaer-Mellor方法資訊模型狀態(tài)模型Rumbaugh方法(OMT)對(duì)象模型動(dòng)態(tài)模型功能模型5.過程

各種OOA方法都要規(guī)定進(jìn)行分析工作的具體步驟,指出每個(gè)步驟應(yīng)該做什麼及如何做,並給出一些策略與啟發(fā)(告訴使用者對(duì)各種情況應(yīng)該怎樣處理以及從哪些方面去思考有助於實(shí)現(xiàn)自己的目標(biāo))。各種OOA方法在概念和模型方面的差別都將在其過程中反映出來。過程的詳簡也各有差異。6.技術(shù)支持

一種OOA方法最終能否被廣泛採用,要看是否能提供必要的技術(shù)支持。最重要的技術(shù)支持包括:CASE工具、技術(shù)資料(包括書籍)、培訓(xùn)計(jì)畫等。抽象對(duì)象,類屬性服務(wù)封裝繼承消息關(guān)聯(lián)聚合多態(tài)主動(dòng)對(duì)象類屬性服務(wù)一般-特殊結(jié)構(gòu)消息連接實(shí)例連接整體-部分結(jié)構(gòu)多態(tài)性表示主動(dòng)對(duì)象類主題抽象分類行為分析封裝繼承消息通信關(guān)聯(lián)聚合粒度控制建模元素基本概念原則第三章本課講授的OOA方法概貌1、概念與表示法類名普通對(duì)象主動(dòng)對(duì)象(a)類(b)屬性與服務(wù)一般類特殊類特殊類(c)一般-特殊結(jié)構(gòu)整體對(duì)象類mn部分對(duì)象類(d)整體-部分結(jié)構(gòu)類類mn(e)實(shí)例連接發(fā)送者接收者(f)消息連接

編號(hào)主題名壓縮方式編號(hào)主題名類名

······半展開方式編號(hào)編號(hào)編號(hào)編號(hào)展開方式(g)主題的三種表示方式表示法@類名(控制線程內(nèi))(控制線程間)類名普通對(duì)象主動(dòng)對(duì)象@類名@服務(wù)

...屬性...

服務(wù)

...屬性...2、OOA的主要原則(1)抽象過程抽象任何一個(gè)完成確定功能的操作序列,其使用者都可把它看作一個(gè)單一的實(shí)體,儘管實(shí)際上它可能是由一系列更低級(jí)的操作完成的。數(shù)據(jù)抽象根據(jù)施加於數(shù)據(jù)之上的操作來定義數(shù)據(jù)類型,並限定數(shù)據(jù)的值只能由這些操作來修改和觀察。(2)封裝(3)繼承(4)分類把具有相同屬性和服務(wù)的對(duì)象劃分為一類,用類作為這些對(duì)象的抽象描述。(5)聚合(6)關(guān)聯(lián)(7)消息通信即要求對(duì)象之間只能通過消息進(jìn)行通訊,而不允許在對(duì)象之外直接地存取對(duì)象內(nèi)部的屬性。(8)粒度控制引入主題(subject)的概念,使模型具有大小不同的粒度層次,以利於控制複雜性。(9)行為分析關(guān)係層特徵層對(duì)象層基本模型(類圖)交互圖主題圖詳細(xì)說明給出所有與問題域和系統(tǒng)責(zé)任有關(guān)的對(duì)象,用對(duì)象類表示定義每個(gè)對(duì)象類的屬性與服務(wù)通過結(jié)構(gòu)與連接描述對(duì)象之間的關(guān)係對(duì)模型中的所有元素進(jìn)行詳細(xì)說明對(duì)關(guān)係密切的類打包,幫助理解類圖一幅交互圖表現(xiàn)完成某一項(xiàng)特定功能的一組對(duì)象之間的詳細(xì)交互。每一項(xiàng)功能用一個(gè)usecase描述3、OOA模型4、OOA過程發(fā)現(xiàn)對(duì)象定義屬性與服務(wù)建立結(jié)構(gòu)與連接劃分主題建立交互圖詳細(xì)說明定義USECASE原型開發(fā)定義usecase(輔助模型,可選)用usecase對(duì)用戶需求進(jìn)行規(guī)範(fàn)化描述。建立類圖(基本模型)*發(fā)現(xiàn)對(duì)象、定義對(duì)象類*識(shí)別對(duì)象的內(nèi)部特徵*識(shí)別對(duì)象的外部關(guān)係劃分主題,建立主題圖(輔助模型,可選)建立交互圖(輔助模型,可選)對(duì)照usecase,描述一組對(duì)象進(jìn)行協(xié)作時(shí)的交互情況和消息的時(shí)序關(guān)係。原型開發(fā)結(jié)合其他活動(dòng)反復(fù)進(jìn)行建立詳細(xì)說明對(duì)模型中的成分進(jìn)行規(guī)範(fàn)的定義和文字說明。可以集中進(jìn)行,也可分散在各個(gè)活動(dòng)中。5、OOA與生命週期其他階段的關(guān)係OOA與OOD可適合不同的生命週期模型分析設(shè)計(jì)編程測試維護(hù)瀑布模型:強(qiáng)調(diào)嚴(yán)格的階段劃分和前後次序先做完OOA再進(jìn)行OODOOAOOD噴泉模型:各個(gè)階段之間沒有嚴(yán)格的界限,其活動(dòng)可以交疊和回溯。演化集成測試編程設(shè)計(jì)分析OOAOOD有些工作既可在OOA中進(jìn)行,也可在OOD中進(jìn)行。各階段概念和表示法的一致為採用這種模型提供了條件。OOAOODOOP最好OOAOOD用非OO語言編程可以從OO獲益非OO的分析與設(shè)計(jì)OODOOP沒有多大意義從分析、設(shè)計(jì)到編程概念:對(duì)象、主動(dòng)對(duì)象以及它們的類對(duì)象:是系統(tǒng)中用來描述客觀事物的一個(gè)實(shí)體,它是構(gòu)成系統(tǒng)的一個(gè)基本單位。一個(gè)對(duì)象由一組屬性和對(duì)這組屬性進(jìn)行操作的一組服務(wù)構(gòu)成。類:具有相同屬性和服務(wù)的一組對(duì)象的集合,它為屬於該類的全部對(duì)象提供了統(tǒng)一的抽象描述,其內(nèi)部包括屬性和服務(wù)兩個(gè)主要部分。類和對(duì)象的關(guān)係——範(fàn)本與實(shí)例主動(dòng)對(duì)象(activeobject):至少有一個(gè)服務(wù)不需要接收消息就能主動(dòng)執(zhí)行的對(duì)象,用於描述具有主動(dòng)行為的事物。主動(dòng)對(duì)象的類叫做主動(dòng)類。從事物的主動(dòng)行為認(rèn)識(shí)主動(dòng)對(duì)象;從系統(tǒng)的執(zhí)行認(rèn)識(shí)主動(dòng)對(duì)象。第四章發(fā)現(xiàn)對(duì)象,建立對(duì)象類類名普通對(duì)象主動(dòng)對(duì)象@類名表示法:在OOA模型中,用類描述屬於它的全部對(duì)象實(shí)例,用類符號(hào)來表示。在尚未確定是不是主動(dòng)對(duì)象之前,暫時(shí)用普通對(duì)象的類符號(hào)表示。研究用戶需求,明確系統(tǒng)責(zé)任閱讀:閱讀一切與用戶需求有關(guān)的書面材料交流:與用戶交流,澄清疑點(diǎn),糾正用戶不切實(shí)的要求或不確切的表達(dá)調(diào)查:到現(xiàn)場調(diào)查(只限於澄清需求)記錄、整理:產(chǎn)生一份符合工程規(guī)範(fàn)、確切表達(dá)系統(tǒng)責(zé)任的需求文檔研究問題域親臨現(xiàn)場調(diào)查,掌握第一手資料聽取問題域?qū)<业囊娊忾喿x與問題域有關(guān)的材料借鑒相同或類似問題域已有的系統(tǒng)開發(fā)經(jīng)驗(yàn)及文檔確定系統(tǒng)邊界系統(tǒng)邊界:系統(tǒng)與外部世界的界限活動(dòng)者:在系統(tǒng)邊界以外,與系統(tǒng)進(jìn)行交互的事物

——人員、設(shè)備、外系統(tǒng)活動(dòng)者(人員)活動(dòng)者(設(shè)備)活動(dòng)者(外系統(tǒng))系統(tǒng)邊界系統(tǒng)、系統(tǒng)邊界及活動(dòng)者對(duì)象對(duì)象對(duì)象對(duì)象對(duì)象系統(tǒng)對(duì)象認(rèn)識(shí)系統(tǒng)邊界與活動(dòng)者,對(duì)發(fā)現(xiàn)主動(dòng)對(duì)象、定義usecase有重要意義。策略與啟發(fā)(1)考慮問題域:人員組織物品設(shè)備事件表格結(jié)構(gòu)...(2)考慮系統(tǒng)邊界:人員設(shè)備外系統(tǒng)從不同的角度考慮人員和設(shè)備(3)考慮系統(tǒng)責(zé)任:

檢查每一項(xiàng)功能需求是否有相應(yīng)的對(duì)象提供,發(fā)現(xiàn)新的對(duì)象審查與篩選(1)捨棄無用的對(duì)象通過屬性判斷:是否通過屬性記錄了某些有用的資訊?通過服務(wù)判斷:是否通過服務(wù)提供了某些有用的功能?二者都不是——無用(2)對(duì)象的精簡只有一個(gè)屬性的對(duì)象只有一個(gè)服務(wù)的對(duì)象班級(jí)…………班主任姓名11班級(jí)班主任姓名…………輸出設(shè)備…………格式轉(zhuǎn)換器檔格式轉(zhuǎn)換輸出設(shè)備……檔格式轉(zhuǎn)換……(3)與實(shí)現(xiàn)條件有關(guān)的對(duì)象例如:與圖形用戶介面(GUI)系統(tǒng)、數(shù)據(jù)管理系統(tǒng)、硬體及操作系統(tǒng)有關(guān)的對(duì)象——推遲到OOD考慮識(shí)別主動(dòng)對(duì)象(1)考慮問題域和系統(tǒng)責(zé)任 哪些對(duì)象需呈現(xiàn)主動(dòng)行為?(2)從需求考慮系統(tǒng)的執(zhí)行情況 是否需要併發(fā)執(zhí)行? 控制線程的起點(diǎn)在哪個(gè)對(duì)象?(3)考慮系統(tǒng)邊界 哪些對(duì)象與活動(dòng)者交互?如果一個(gè)交互是由活動(dòng)者發(fā)起的,第一個(gè)處理該交互的對(duì)象是主動(dòng)對(duì)象在分析階段不能完全確定對(duì)象分類(1)異常情況的檢查和調(diào)整*類的屬性或服務(wù)不適合全部對(duì)象實(shí)例例:“汽車”類的“乘客限量”屬性問題:分類不夠詳細(xì)——進(jìn)一步劃分特殊類*屬性及服務(wù)相同的類經(jīng)過抽象,差別很大的事物可能只保留相同的特徵——考慮能否合併為一個(gè)類*屬性及服務(wù)相似的類——考慮能否提升出一個(gè)一般類*同一事物的重複描述例:“職員”和“工作證”——取消其中一個(gè)(2)類的命名*使用名詞,避免無意義的符號(hào)*反映個(gè)體而不是群體*適合該類及其特殊類的全部對(duì)象實(shí)例*使用問題域通用、規(guī)範(fàn)的辭彙*在中國:可用中、英文雙重命名(3)建立類圖的對(duì)象層*用類符號(hào)表示每個(gè)對(duì)象類*填寫類描述範(fàn)本*發(fā)現(xiàn)的屬性與服務(wù)、結(jié)構(gòu)與連接可以隨時(shí)加到類符號(hào)中屬性——實(shí)例屬性、類屬性,服務(wù)——主動(dòng)服務(wù)、被動(dòng)服務(wù)表示法:類名普通對(duì)象主動(dòng)對(duì)象屬性1······屬性n服務(wù)1······服務(wù)m@類名屬性1······屬性n服務(wù)1······@服務(wù)m第五章定義屬性與服務(wù)概念:定義屬性(1)策略與啟發(fā)*按常識(shí)這個(gè)對(duì)象應(yīng)該有哪些屬性?*在當(dāng)前的問題域中,對(duì)象應(yīng)該有哪些屬性?*根據(jù)系統(tǒng)責(zé)任,這個(gè)對(duì)象應(yīng)具有哪些屬性?*建立這個(gè)對(duì)象是為了保存和管理哪些資訊?*對(duì)象為了完成其功能,需要增設(shè)哪些屬性?*對(duì)象是否需要通過專設(shè)的屬性區(qū)別其狀態(tài)?*用什麼屬性表示整體-部分結(jié)構(gòu)和實(shí)例連接?(2)審查與篩選

*是否體現(xiàn)了以系統(tǒng)責(zé)任為目標(biāo)的抽象 (例:書的重量)?

*是否描述對(duì)象本身的特徵 (例:課程—電話號(hào)碼)?

*是否破壞“原子性” (例:通信地址)?

*是否可通過繼承得到?

*是否可從其他屬性直接導(dǎo)出?(3)推遲到OOD考慮的問題

*規(guī)範(fàn)化問題

*對(duì)象標(biāo)識(shí)

*性能問題(4)屬性的命名與定位 命名:原則與類的命名相同 定位:針對(duì)所描述的對(duì)象,適合全部對(duì)象實(shí)例(5)屬性的詳細(xì)說明

*文字解釋

*數(shù)據(jù)類型

*實(shí)現(xiàn)要求及其它定義服務(wù)問題討論:什麼是對(duì)象的狀態(tài)?關(guān)於對(duì)象狀態(tài)的不同解釋狀態(tài)=屬性只是一個(gè)別名,沒有更多的意義狀態(tài)=屬性值沒錯(cuò),但沒有必要辨別這麼多狀態(tài)

《對(duì)象技術(shù)詞典》的另一種定義:對(duì)象或者類的整體行為(例如回應(yīng)消息)的某些規(guī)則所能適應(yīng)的(對(duì)象或類的)狀況、情況、條件、形式或生存週期階段?!獜膶傩灾档牡葍r(jià)類看問題例1:一個(gè)容量為1000的棧,需要區(qū)分幾種狀態(tài)?空半滿滿壓入彈出可執(zhí)行可執(zhí)行可執(zhí)行可執(zhí)行不可執(zhí)行不可執(zhí)行服務(wù)狀態(tài)例2:為“設(shè)備”對(duì)象設(shè)立一個(gè)屬性,名為“狀態(tài)”屬性值:關(guān)閉、待命、運(yùn)行、故障等。在此例中,每一種狀態(tài)是一組使對(duì)象呈現(xiàn)共同行為規(guī)則的屬性值組合。在這裏,“狀態(tài)”是一個(gè)專門設(shè)置的屬性,它的值反映了實(shí)際事物的狀態(tài)。狀態(tài)轉(zhuǎn)換圖(STD)空半滿滿創(chuàng)建彈出<報(bào)錯(cuò)>彈出(已空)壓入壓入(未滿)彈出(未空)壓入(已滿)彈出壓入<報(bào)錯(cuò)>作用:幫助分析對(duì)象的行為、定義對(duì)象的服務(wù)一個(gè)STD一般只針對(duì)一個(gè)(或少數(shù)幾個(gè)對(duì)象),在實(shí)際系統(tǒng)中,無法建立全系統(tǒng)的STD。——不宜作為系統(tǒng)級(jí)的模型對(duì)象行為分類(1)系統(tǒng)行為 例:創(chuàng)建、刪除、複製、轉(zhuǎn)存(2)對(duì)象自身的行為——演算法簡單的服務(wù) 例:讀、寫屬性值(3)對(duì)象自身的行為——演算法複雜的服務(wù) 計(jì)算或監(jiān)控(1)考慮系統(tǒng)責(zé)任有哪些功能要求在並對(duì)象提供?(2)考慮問題域?qū)ο笤趩栴}域?qū)?yīng)的事物有哪些行為?(3)分析對(duì)象狀態(tài)對(duì)象狀態(tài)的轉(zhuǎn)換,是由哪些服務(wù)引起的?(4)追蹤服務(wù)的執(zhí)行路線模擬服務(wù)的執(zhí)行,並在整個(gè)系統(tǒng)中跟蹤策略與啟發(fā)審查對(duì)象的每個(gè)服務(wù)是否真正有用是否直接提供系統(tǒng)責(zé)任所要求的某項(xiàng)功能?或者回應(yīng)其他服務(wù)的請(qǐng)求間接地完成這種功能的某些局部操作?調(diào)整——取消無用的服務(wù)是不是高內(nèi)聚的一個(gè)服務(wù)只完成一項(xiàng)單一的、完整的功能調(diào)整——拆分或合併審查與調(diào)整(1)考慮問題域?qū)ο笮袨槭潜灰l(fā)的,還是主動(dòng)呈現(xiàn)的?(2)與活動(dòng)者交互的對(duì)象服務(wù)認(rèn)識(shí)對(duì)象的主動(dòng)行為操作介面報(bào)警器監(jiān)控操作介面印表機(jī)驅(qū)動(dòng)器(3)完成最外層功能的對(duì)象服務(wù)(4)服務(wù)執(zhí)行路線逆向追蹤操作介面印表機(jī)驅(qū)動(dòng)器命名:動(dòng)詞或動(dòng)賓結(jié)構(gòu)定位:與實(shí)際事物一致例:售貨員——售貨,商品——售出在一般-特殊結(jié)構(gòu)中的位置——適合類的全部對(duì)象實(shí)例服務(wù)的命名和定位*服務(wù)解釋*消息協(xié)議*消息發(fā)送*約束條件*服務(wù)流程圖yesno陳述框。判斷框連線,用於連接各個(gè)框,指出執(zhí)行時(shí)的控制流。入口/出口標(biāo)記,指出服務(wù)的開始或結(jié)束。

問題:分析階段為什麼要給出服務(wù)流程圖?關(guān)於OOA/OOD分工的兩種不同觀點(diǎn);對(duì)一種操作過程的說明,可詳可簡,但更難區(qū)分“做什麼”和“怎麼做”服務(wù)的詳細(xì)說明例題:超級(jí)市場銷售管理系統(tǒng)

超級(jí)市場業(yè)務(wù)管理系統(tǒng)的子系統(tǒng),只負(fù)責(zé)前臺(tái)的銷售管理功能需求:·為顧客選購的商品計(jì)價(jià)、收費(fèi)、列印清單?!び涗浢恳环N商品的編號(hào)、單價(jià)及現(xiàn)有數(shù)量?!椭┴泦T發(fā)現(xiàn)哪些商品將要脫銷,以及時(shí)補(bǔ)充貨源。·隨時(shí)按上級(jí)系統(tǒng)的要求報(bào)告當(dāng)前的款貨數(shù)量、增減商品種類或修改商品定價(jià)。·交接班時(shí)結(jié)算貨款數(shù)目,報(bào)告上級(jí)系統(tǒng)。發(fā)現(xiàn)對(duì)象:收銀機(jī)、供貨員、上級(jí)系統(tǒng)介面、商品、特價(jià)商品、計(jì)量商品、商品一覽表、銷售事件、帳冊(cè)問題:為什麼沒有“收款員”和“經(jīng)理”這兩類對(duì)象?帳冊(cè)商品一覽表銷售事件@上級(jí)系統(tǒng)介面@收銀機(jī)供貨員商品計(jì)量商品特價(jià)商品帳冊(cè)商品一覽表銷售事件@收銀機(jī)供貨員商品計(jì)量商品特價(jià)商品本班收款員開始時(shí)間結(jié)束時(shí)間@登錄售貨結(jié)帳前班結(jié)餘銷售事件表收入累計(jì)上交款本班結(jié)餘

······接班記帳報(bào)帳交班收款人購物清單應(yīng)收款······

銷售計(jì)價(jià)入帳商品目錄檢索種類增刪@上級(jí)系統(tǒng)介面帳冊(cè)目錄@消息收發(fā)查賬報(bào)帳價(jià)格更新種類增刪編號(hào)名稱單價(jià)架上數(shù)量下限售出補(bǔ)充價(jià)格更新缺貨登記表缺貨登記供貨開始日期結(jié)束日期*單價(jià)計(jì)量單位計(jì)價(jià)方式*售出*補(bǔ)充*價(jià)格更新類(及其對(duì)象)之間的四種關(guān)係——兩種結(jié)構(gòu),兩種連接分類關(guān)係、繼承——一般-特殊結(jié)構(gòu)(generalization-specializationstructure)組成關(guān)係、聚合——整體-部分結(jié)構(gòu)(whole-partstructure)靜態(tài)聯(lián)繫、關(guān)聯(lián)——實(shí)例連接(instanceconnection)動(dòng)態(tài)聯(lián)繫、行為依賴——消息連接(messageconnection)這些關(guān)係形成了類圖的關(guān)係層

定義結(jié)構(gòu)與連接概念:一般類、特殊類、繼承、多繼承、多態(tài)、一般-特殊結(jié)構(gòu)、“isakindof”定義:一般-特殊結(jié)構(gòu)是由一組具有一般-特殊關(guān)係(繼承關(guān)係)的類所組成的結(jié)構(gòu),它是一個(gè)以類為結(jié)點(diǎn),以繼承關(guān)係為邊的連通的有向圖。同義詞:分類結(jié)構(gòu)(classificationstructure)6.1 一般-特殊結(jié)構(gòu)作用:簡化了對(duì)對(duì)象的認(rèn)識(shí)、定義和理解。表示法人員股東職員顧客股東職員例:●對(duì)繼承的屬性或服務(wù)重新定義

×拒絕繼承

多態(tài)性的表示符號(hào)一般類特殊類特殊類結(jié)構(gòu)連接符一般類特殊類特殊類

完整的一般-特殊結(jié)構(gòu)如何發(fā)現(xiàn)一般-特殊結(jié)構(gòu)(1)學(xué)習(xí)當(dāng)前領(lǐng)域的分類學(xué)知識(shí)(2)按常識(shí)考慮事物的分類(3)回顧一般類和特殊類的兩種定義(4)考察類的屬性與服務(wù)?公司人員姓名身份證號(hào)股份工資

······

······?公司人員姓名身份證號(hào)

······股東股份

······

······職員工資············

······股東姓名身份證號(hào)股份

······

······職員姓名身份證號(hào)工資

······

······公司人員姓名身份證號(hào)

······

······股東股份············職員工資

······

······?(5)考慮領(lǐng)域範(fàn)圍內(nèi)的複用現(xiàn)鈔收銀機(jī)

ABCDEFXYZ收銀機(jī)ABCXY現(xiàn)鈔收銀機(jī)

DEFZ領(lǐng)域構(gòu)件(1)問題域是否需要這樣的分類?(例:書—善本書)(2)系統(tǒng)責(zé)任是否需要這樣的分類?(例:職員—本市職員)(3)是否符合分類學(xué)的常識(shí)?(用“isakindof”去套)

飛機(jī)飛行高度

······自動(dòng)導(dǎo)航

······×

汽車發(fā)動(dòng)機(jī)載重量速度······運(yùn)輸······運(yùn)輸工具發(fā)動(dòng)機(jī)載重量速度

······

飛機(jī)飛行高度

······自動(dòng)導(dǎo)航

······汽車············運(yùn)輸工具發(fā)動(dòng)機(jī)載重量速度

······

飛機(jī)飛行高度

······自動(dòng)導(dǎo)航

······運(yùn)輸······運(yùn)輸······或?qū)彶榕c調(diào)整(4)是否構(gòu)成了繼承關(guān)係?(確實(shí)繼承了一些屬性或服務(wù))一般-特殊結(jié)構(gòu)的簡化(1)取消沒有特殊性的特殊類(2)增加屬性簡化一般-特殊結(jié)構(gòu)(3)取消用途單一的一般類,減少繼承層次一般類存在的理由:·有兩個(gè)或兩個(gè)上以上的特殊類·需要用它創(chuàng)建對(duì)象實(shí)例·有助於軟體複用概念:整體對(duì)象、部分對(duì)象、聚合、整體-部分結(jié)構(gòu)“apartof”或“hasa”整體-部分關(guān)係是對(duì)象實(shí)例之間的關(guān)係說“對(duì)象a是對(duì)象b的組成部分”——可以說“類A是類B的組成部分”——不妥說“類B和類A之間的整體-部分關(guān)係”,是指它們的對(duì)象實(shí)例存在整體-部分關(guān)係定義:整體-部分結(jié)構(gòu)是把一組具有整體-部分關(guān)係的類組織在一起的結(jié)構(gòu)。它是一個(gè)以類為結(jié)點(diǎn),以整體-部分關(guān)係為邊的連通的有向圖。同義詞:組裝結(jié)構(gòu)(compositionstructure)區(qū)別:緊密、固定的關(guān)係和鬆散、靈活的關(guān)係6.2 整體-部分結(jié)構(gòu)整體對(duì)象類部分對(duì)象類mn連接符:表示法汽車發(fā)動(dòng)機(jī)車輪14,60,10,1例子:多重性:一對(duì)一一對(duì)多多對(duì)多多重性表示:固定的數(shù) 單個(gè)數(shù)不定的數(shù) 數(shù)對(duì)如何發(fā)現(xiàn)整體-部分結(jié)構(gòu)考察:(1)物理上的整體事物和它的組成部分 例:機(jī)器、設(shè)備和它的零部件(2)組織機(jī)構(gòu)和它的下級(jí)組織及部分 例:公司與子公司、部門(3)團(tuán)體(組織)與成員 例:公司與職員(4)一種事物在空間上包容其他事物 例:生產(chǎn)車間與機(jī)器(5)抽象事物的整體與部分 例:學(xué)科與分支學(xué)科、法律與法律條款(6)具體事物和它的某個(gè)抽象方面 例:人員與身份、履歷審查與篩選(1)是否屬於問題域?例:公司職員與家庭(2)是不是系統(tǒng)責(zé)任的需要?例:公司與工會(huì)(3)部分對(duì)象是否有一個(gè)以上的屬性?例:汽車與輪胎(規(guī)格)(4)是否有明顯的整體-部分關(guān)係?例:學(xué)生與課程概念:關(guān)聯(lián)(association)

實(shí)例連接(instanceconnection)作用:表示對(duì)象之間的靜態(tài)聯(lián)繫實(shí)現(xiàn)方式:指針、對(duì)象標(biāo)識(shí)集合與整體-部分結(jié)構(gòu)的區(qū)別6.3 實(shí)例連接表示法類1類2mn連接名稱一對(duì)一的連接:111mmn一對(duì)多的連接:多對(duì)多的連接:多重性的表示教師學(xué)生0,m1指導(dǎo)論文教師為學(xué)生指導(dǎo)論文城市0,m0,m有航線(d)城市之間有航線例子如何建立實(shí)例連接(1)認(rèn)識(shí)對(duì)象之間的靜態(tài)聯(lián)繫考慮問題域和系統(tǒng)責(zé)任——哪些類的對(duì)象實(shí)例之間的關(guān)係需要在系統(tǒng)中表達(dá)。(2)分析並表示實(shí)例連接的多重性(3)異常情況處理——多對(duì)多的關(guān)聯(lián)供貨商客戶0,m1,m問題——如何實(shí)現(xiàn)多對(duì)多的關(guān)聯(lián)?供需合同賣方買方…….11處理:(5)命名與定位系統(tǒng)管理員0,m電腦伺服器客戶機(jī)用戶0,11,m1操作使用順序系統(tǒng)中的消息6.4 消息連接(1)消息是向?qū)ο蟀l(fā)出的服務(wù)請(qǐng)求。(2)消息都是同步的。(3)接收者執(zhí)行消息所請(qǐng)求的服務(wù)。(4)發(fā)送者等待消息處理完畢再繼續(xù)執(zhí)行。(5)每個(gè)消息只有唯一的接收者。併發(fā)系統(tǒng)中的消息控制線程內(nèi)部同順序系統(tǒng)控制線程之間情況複雜得多(1)消息有多種用途(2)消息有同步與非同步之分(3)接收者對(duì)消息有不同回應(yīng)方式(4)發(fā)送者對(duì)消息處理結(jié)果有不同期待方式(5)消息的接收者可能不唯一應(yīng)該識(shí)別和表示的主要問題(按重要性排序):(1)對(duì)象之間是否存在著某種消息?(2)這種消息是同一個(gè)控制線程內(nèi)部的還是不同控制線程之間的?(3)每一種消息是從發(fā)送者的哪個(gè)服務(wù)發(fā)出的?是由接收者的哪個(gè)服務(wù)回應(yīng)和處理的?(4)消息是同步的還是非同步的?(5)發(fā)送者是否等待消息的處理結(jié)果?OOA對(duì)消息的表示——消息連接

發(fā)送者(接收者)

接收者(發(fā)送者)@生產(chǎn)者@消費(fèi)者緩衝區(qū)存取發(fā)送者接收者@類A@類B類C類D消息連接的表示法發(fā)送者接收者

發(fā)送者(接收者)

接收者(發(fā)送者)控制線程內(nèi)部:控制線程之間:例:如何建立消息連接 策略————“服務(wù)模擬”和“執(zhí)行路線追蹤”①人為地模擬當(dāng)前對(duì)象服務(wù)的執(zhí)行,考慮:需要其他對(duì)象(或本對(duì)象)提供什麼服務(wù)②向接收者畫出消息連接線③沿著每一種消息追蹤到接收該消息的對(duì)象服務(wù),重複進(jìn)行以上的工作。直到已發(fā)現(xiàn)的全部消息都經(jīng)歷一遍

檢查每個(gè)服務(wù)是否都被執(zhí)行一遍,發(fā)現(xiàn)遺漏的消息或多餘的服務(wù)

例:超級(jí)市場銷售管理系統(tǒng)帳冊(cè)商品一覽表銷售事件@上級(jí)系統(tǒng)介面@收銀機(jī)供貨員商品計(jì)量商品特價(jià)商品本班收款員開始時(shí)間結(jié)束時(shí)間@登錄售貨結(jié)帳前班結(jié)餘銷售事件表收入累計(jì)上交款本班結(jié)餘接班記帳報(bào)帳交班收款人購物清單應(yīng)收款······

銷售計(jì)價(jià)入帳商品目錄檢索種類增刪帳冊(cè)目錄@消息收發(fā)查賬報(bào)帳價(jià)格更新種類增刪編號(hào)名稱單價(jià)架上數(shù)量下限售出補(bǔ)充價(jià)格更新缺貨登記表缺貨登記供貨開始日期結(jié)束日期*單價(jià)計(jì)量單位計(jì)價(jià)方式*售出*補(bǔ)充*價(jià)格更新m1m1概念——主題(subject)把一組有較強(qiáng)聯(lián)繫的類組織在一起而得到的類的集合同義語——類疇(classcategory)——Booch方法類簇(classcluster)——Firesmith方法箱(kit)——Berard方法子系統(tǒng)(subsystem)——Rumbaugh方法(OMT)包(package)——OML……原則——粒度控制——宏觀與微觀7±2規(guī)律作用——指導(dǎo)對(duì)模型的閱讀,指導(dǎo)子系統(tǒng)劃分第七章 劃分主題編號(hào)主題名表示法:半展開方式編號(hào)主題名類名類名

······類名······主題名主題名壓縮方式編號(hào)編號(hào)編號(hào)編號(hào)編號(hào)全展開方式如何劃分主題識(shí)別低層主題每個(gè)一般-特殊結(jié)構(gòu)和每個(gè)整體-部分結(jié)構(gòu)作為一個(gè)主題實(shí)例連接和消息連接密集的類劃分到一個(gè)主題獨(dú)立的類暫時(shí)作為一個(gè)主題例:111111112222允許交叉主題的合併如果低層主題數(shù)量過多,則合併為高層主題依據(jù):低層主題之間——從概念考慮:接近,或具有教強(qiáng)的相關(guān)性從作用考慮:屬於某項(xiàng)大的功能觀察類圖:偶合緊密分佈情況:分佈在同一臺(tái)處理機(jī)組織主題的層次主題合併之後,決定低層主題是保留還是取消每個(gè)主題7±2個(gè)內(nèi)層成分層次不宜太多建立主題圖壓縮方式或半展開方式的主題形成主題圖全展開方式的主題依賴於類圖存在主題的命名主題之間的連線主題的劃分不是唯一的,有一定的隨意性帳冊(cè)商品一覽表銷售事件@收銀機(jī)供貨員商品計(jì)量商品特價(jià)商品本班收款員開始時(shí)間結(jié)束時(shí)間@登錄售貨結(jié)帳前班結(jié)餘銷售事件表收入累計(jì)上交款本班結(jié)餘接班記帳報(bào)帳交班收款人購物清單應(yīng)收款······銷售計(jì)價(jià)入帳商品目錄檢索種類增刪帳冊(cè)目錄@消息收發(fā)查賬報(bào)帳價(jià)格更新種類增刪編號(hào)名稱單價(jià)架上數(shù)量下限售出補(bǔ)充價(jià)格更新缺貨登記表缺貨登記供貨開始日期結(jié)束日期*單價(jià)計(jì)量單位計(jì)價(jià)方式*售出*補(bǔ)充*價(jià)格更新mm11超級(jí)市場銷售管理系統(tǒng)(全展開的主題)111122223333@上級(jí)系統(tǒng)介面例:主題圖1·銷售記錄3·外部介面2·商品資訊壓縮方式(b)半展開方式1·銷售記錄收銀機(jī)帳冊(cè)銷售事件3·外部介面上級(jí)系統(tǒng)介面供貨員2·商品資訊商品一覽表商品特價(jià)商品計(jì)量商品第八章 usecase和交互圖本章的主要概念——系統(tǒng)邊界、活動(dòng)者、usecase、交互圖問題的提出:在系統(tǒng)尚未存在時(shí),如何描繪用戶需要一個(gè)什麼樣的系統(tǒng)?如何規(guī)範(fàn)地定義用戶需求?考慮問題的思路:把系統(tǒng)看作一個(gè)黑箱,看它對(duì)外部的客觀世界發(fā)揮什麼作用,描述它外部可見的行為。系統(tǒng)是由一條邊界包圍起來的未知空間只通過有限的幾個(gè)介面與外部交互系統(tǒng)邊界以外是與系統(tǒng)進(jìn)行交互的活動(dòng)者把內(nèi)外交互情況描述清楚,就確切地定義了系統(tǒng)的需求系統(tǒng)邊界系統(tǒng)邊界:一個(gè)系統(tǒng)所包含的所有系統(tǒng)成分與系統(tǒng)以外各種事物的分界線?;顒?dòng)者(人員)活動(dòng)者(設(shè)備)活動(dòng)者(外系統(tǒng))系統(tǒng)系統(tǒng):被開發(fā)的電腦軟硬體系統(tǒng),不是指現(xiàn)實(shí)系統(tǒng)。對(duì)象對(duì)象對(duì)象對(duì)象對(duì)象對(duì)象系統(tǒng)成分:在OOA和OOD中定義並且在編程時(shí)加以實(shí)現(xiàn)的系統(tǒng)元素——對(duì)象活動(dòng)者:在系統(tǒng)邊界以外,與系統(tǒng)進(jìn)行交互的事物——人員、設(shè)備、外系統(tǒng)系統(tǒng)邊界與活動(dòng)者認(rèn)識(shí)系統(tǒng)邊界和活動(dòng)者對(duì)OOA的意義幫助發(fā)現(xiàn)對(duì)象,特別是主動(dòng)對(duì)象定義usecase定義交互圖如何發(fā)現(xiàn)活動(dòng)者?考慮:人員——系統(tǒng)的直接使用者直接為系統(tǒng)服務(wù)的人員設(shè)備——不與系統(tǒng)相聯(lián)的設(shè)備 X電腦設(shè)備 X外系統(tǒng)——上級(jí)系統(tǒng)子系統(tǒng)其他系統(tǒng)與系統(tǒng)直接相聯(lián)的設(shè)備為系統(tǒng)提供資訊在系統(tǒng)控制下運(yùn)行歷史:Jacobson首先提出。儘管不是OO方法的主要概念,但是對(duì)於確切地描述用戶的功能需求,幫助發(fā)現(xiàn)對(duì)象,並核實(shí)每種功能是否有相應(yīng)的對(duì)象予以滿足,都可起到很好的作用,所以被許多方法採用。定義:usecase是對(duì)一個(gè)活動(dòng)者使用系統(tǒng)的一項(xiàng)功能時(shí)所進(jìn)行的交互過程的一個(gè)文字描述序列。幾點(diǎn)說明:(1)一個(gè)usecase只描述一個(gè)活動(dòng)者對(duì)一項(xiàng)系統(tǒng)功能的使用情況。(2)是一種平鋪直敘的文字描述。(3)陳述活動(dòng)者和系統(tǒng)在交互過程中雙方所做的事。(4)描述彼此為對(duì)方直接地做什麼事,不描述怎麼做(5)描述應(yīng)力求準(zhǔn)確、清晰,允許概括,但不要把雙方的行為混在一起。usecase收款員·收款輸入開始本次收款的命令;作好收款準(zhǔn)備,應(yīng)收款總數(shù)置為0,輸出提示資訊;for顧客選購的每種商品do

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

if此種商品多於一件then

輸入商品數(shù)量

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

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

通知供貨員請(qǐng)求上貨

endif;計(jì)算本種商品總價(jià)並列印編號(hào)、名稱、數(shù)量、單價(jià)、總價(jià);總價(jià)累加到應(yīng)收款總數(shù);endfor;

溫馨提示

  • 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)論