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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

實現(xiàn)條件

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

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

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

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

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

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

Object(複用)

B

CE

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

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

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

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

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

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

任務(wù)腳本

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

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

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

做法:

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

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

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

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

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

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

1)以窗口作為基本的類

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

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

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

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

……@服務(wù)

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

——每個類使用一個資料庫表

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

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

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

對象的屬性部分相當於E-R模型中的一個實體當使用OO-DBMS時,不需要上述工作

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

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

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

功能

功能

功能

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

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

資訊建模法

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

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

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

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

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

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

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

編號主題名壓縮方式編號主題名類名

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

...屬性...

服務(wù)

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

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

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

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

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

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

*是否可通過繼承得到?

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

*規(guī)範化問題

*對象標識

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

*文字解釋

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

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

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

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

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

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

銷售計價入帳商品目錄檢索種類增刪@上級系統(tǒng)介面帳冊目錄@消息收發(fā)查賬報帳價格更新種類增刪編號名稱單價架上數(shù)量下限售出補充價格更新缺貨登記表缺貨登記供貨開始日期結(jié)束日期*單價計量單位計價方式*售出*補充*價格更新類(及其對象)之間的四種關(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)——實例連接(instanceconnection)動態(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),它是一個以類為結(jié)點,以繼承關(guān)係為邊的連通的有向圖。同義詞:分類結(jié)構(gòu)(classificationstructure)6.1 一般-特殊結(jié)構(gòu)作用:簡化了對對象的認識、定義和理解。表示法人員股東職員顧客股東職員例:●對繼承的屬性或服務(wù)重新定義

×拒絕繼承

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

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

······

······?公司人員姓名身份證號

······股東股份

······

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

······股東姓名身份證號股份

······

······職員姓名身份證號工資

······

······公司人員姓名身份證號

······

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

······

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

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

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

飛機飛行高度

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

······×

汽車發(fā)動機載重量速度······運輸······運輸工具發(fā)動機載重量速度

······

飛機飛行高度

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

······汽車············運輸工具發(fā)動機載重量速度

······

飛機飛行高度

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

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

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

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

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

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

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

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

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

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

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

輸入商品編號;

if此種商品多於一件then

輸入商品數(shù)量

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

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

通知供貨員請求上貨

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

溫馨提示

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

評論

0/150

提交評論