上課內(nèi)容第5章oo開發(fā)1講概述_第1頁
上課內(nèi)容第5章oo開發(fā)1講概述_第2頁
上課內(nèi)容第5章oo開發(fā)1講概述_第3頁
上課內(nèi)容第5章oo開發(fā)1講概述_第4頁
上課內(nèi)容第5章oo開發(fā)1講概述_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

付費下載

下載本文檔

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

文檔簡介

2023/11/22上海大學(xué)計算機學(xué)院1面向?qū)ο箝_發(fā)

什么是OOOO需求分析OO系統(tǒng)設(shè)計OO對象設(shè)計

OO程序設(shè)計2023/11/22上海大學(xué)計算機學(xué)院2什么是OO(Object-Oriented)

傳統(tǒng)方法(面向過程、面向數(shù)據(jù)結(jié)構(gòu))功能與數(shù)據(jù)的分離,模塊為基本構(gòu)造單元自頂向下的功能分解構(gòu)造控制層次(模塊間的調(diào)用)效率、生產(chǎn)率、重用性、可維護性和可擴展性等問題面向?qū)ο蠓椒?960‘s:Simula-67提出對象(object)的概念1980年:Smalltalk-80。引入對象、對象類、方法、實例等概念及術(shù)語,采用了動態(tài)聯(lián)編及單繼承機制,體現(xiàn)了面向?qū)ο蠓椒ǖ脑S多重要概念,對面向?qū)ο蠓椒▽W(xué)的形成和發(fā)展起了重大作用1980’s--:OOA、OOD、OMT,Effil、C++、Java+Coad和Yourdon:面向?qū)ο?對象+類+繼承+消息通信2023/11/22上海大學(xué)計算機學(xué)院3類和對象(Class-Object)類和對象為基本構(gòu)造單元對象表示一個物理/概念/軟件的實體LinkedListTruckChemicalProcess2023/11/22上海大學(xué)計算機學(xué)院4類和對象對象有狀態(tài)、行為和標(biāo)識:Triangle(5,20)(10,30)(25,28)DrawMoveContain(aPoint)三角形_1:Triangle(30,18)(35,28)(40,18)DrawMoveContain(aPoint)三角形_2:Triangle(16,5)(25,11)(30,8)DrawMoveContain(aPoint)三角形_3132(5,20)(10,30)(25,28)(30,18)(35,28)(40,18)(16,5)(25,11)(30,8)2023/11/22上海大學(xué)計算機學(xué)院5類和對象類是一組具有相同屬性和相同行為的對象的集合。類可以視為對象模板,可用來產(chǎn)生對象。132(5,20)(10,30)(25,28)(30,18)(35,28)(40,18)(16,5)(25,11)(30,8)TrianglePoint1Point2Point3DrawMoveContain(aPoint)三角形類類名屬性操作2023/11/22上海大學(xué)計算機學(xué)院6OO中類和對象的特性

個體性:每個對象具有唯一標(biāo)識抽象性:考慮本質(zhì)特性,忽略次要的、非本質(zhì)的特性聚類性:對象歸類,子類歸父類封裝性:隱藏實現(xiàn)細節(jié),對象依賴接口相互作用持久性:對象的可串化性,保存對象的歷史狀態(tài)繼承性和多態(tài)性:子類共享父類的屬性與操作;同一操作的不同行為2023/11/22上海大學(xué)計算機學(xué)院7消息與方法(Message&Method)面向?qū)ο?對象+類+繼承+消息通信消息是一個對象與另一個對象的通信單元,是要求某個對象執(zhí)行某個操作的規(guī)格說明。接受消息的對象消息名消息要求的參數(shù)(0..N個)消息接收對象調(diào)用消息名指定的方法,并將形式參數(shù)與參數(shù)表中相應(yīng)的值結(jié)合起來。MyCircle.Show(“Green”)2023/11/22上海大學(xué)計算機學(xué)院8繼承(Inheritance

子類能自動地共享父類(超類)的屬性和方法單繼承/多繼承繼承的傳遞性2023/11/22上海大學(xué)計算機學(xué)院9多態(tài)(Polymorphism

單一接口不同實現(xiàn)ManufacturerAManufacturerBManufacturerC2023/11/22上海大學(xué)計算機學(xué)院10繼承與多態(tài)示例ShapeLineColorLineTypeMoveComputerAreaRectangleLeftBottomRightTopMoveComputerAreaCircleRadiusMoveComputerAreaTrianglePoint1Point2Point3MoveComputerArea2023/11/22上海大學(xué)計算機學(xué)院11OO需求分析需求分析:理解、表達和驗證OOA:識別問題域的對象,分析對象間的關(guān)系,建立問題域模型OOA種類Wirfs-Brock的責(zé)任驅(qū)動分析方法:CRC(類-責(zé)任-協(xié)作)卡進行系統(tǒng)建模。JamesRumbaugh的OMT(對象建模技術(shù)):建立系統(tǒng)的對象模型、動態(tài)模型和功能模型。GradyBooch的Booch-93方法IvarJacobson的OOSE(面向?qū)ο筌浖こ?:強調(diào)以UseCase分析系統(tǒng)的實際操作入手,逐步展開系統(tǒng)分析過程。Coad與Yourdon的OOA(面向?qū)ο蠓治觯喊凑罩黝}、類和對象、結(jié)構(gòu)、屬性、服務(wù)等5個層次建立問題域模型2023/11/22上海大學(xué)計算機學(xué)院12OO需求分析:OMT產(chǎn)生需求建立模型用戶開發(fā)者管理者用戶會談領(lǐng)域知識經(jīng)驗對象模型動態(tài)模型功能模型需求陳述三種模型對象模型(靜態(tài)結(jié)構(gòu))動態(tài)模型(交互次序)功能模型(數(shù)據(jù)交換)2023/11/22上海大學(xué)計算機學(xué)院13對象模型描述對象/類以及對象/類之間的聯(lián)系對象模型的五個層次(Coad的OOA/OOD)主題(SubjectLayer)類-對象(Class-&-ObjectLayer)結(jié)構(gòu)(StructureLayer)屬性(AttributeLayer)方法(ServiceLayer)建立對象模型找類-對象:選擇與篩選應(yīng)用領(lǐng)域的類-對象準(zhǔn)備數(shù)據(jù)字典:描述類-對象找對象間的關(guān)聯(lián)找對象屬性用繼承組織和簡化對象類:提取和共享相似類和對象的公共特性迭代提煉模型2023/11/22上海大學(xué)計算機學(xué)院14對象模型:示例ATM系統(tǒng)需求 某銀行擬開發(fā)一個自動取款機(ATM)系統(tǒng),它是由一個自動取款機、中央計算機、分行計算機及柜員終端組成的網(wǎng)絡(luò)系統(tǒng)。ATM和中央計算機由總行投資購買??傂袚碛卸嗯_ATM,分別設(shè)在全市各主要街道上。分行負責(zé)提供分行計算機和柜員終端。柜員終端設(shè)在分行營業(yè)廳及下屬的各營業(yè)所內(nèi)。該系統(tǒng)的軟件開發(fā)成本由各分行分攤。 銀行柜員使用柜員終端處理儲戶提交的儲蓄事務(wù)。儲戶可以用現(xiàn)金或支票向自己的某個帳戶內(nèi)存款或開新帳戶。儲戶也可以從自己的帳戶取款?!?

找類-對象銀行、自動取款機、系統(tǒng)、中央計算機、分行計算機、柜員終端、網(wǎng)絡(luò)、總行、市、街道、分行、營業(yè)廳、營業(yè)所、柜員、軟件、成本、儲戶、事務(wù)、現(xiàn)金、支票、帳戶、自動取款機、中央計算機、分行計算機、柜員終端、總行、分行、、柜員、軟件、儲戶、事務(wù)、帳戶、篩選(去除冗余、無關(guān)、籠統(tǒng)、屬性、操作等)2023/11/22上海大學(xué)計算機學(xué)院15對象模型:示例(續(xù)1)找對象間的關(guān)聯(lián)提取動詞短語自動取款機、中央計算機、分行計算機及柜員終端組成網(wǎng)絡(luò)總行擁有多臺ATMATM設(shè)在全市各主要街道上柜員使用柜員終端處理儲戶提交的儲蓄事務(wù)分行負責(zé)提供分行計算機和柜員終端……隱含關(guān)聯(lián)總行由多個分行組成總行擁有中央計算機分行保管帳戶……領(lǐng)域知識分行雇傭柜員……2023/11/22上海大學(xué)計算機學(xué)院16對象模型:示例(續(xù)2)總行自動取款機中央計算機分行儲戶帳戶分行計算機柜員終端柜員柜員事務(wù)1+1..*1..*1..*1..*1..*擁有通信雇傭保管擁有組成通信通信擁有輸入修改1..*1..*2023/11/22上海大學(xué)計算機學(xué)院17對象模型:示例(續(xù)3)用繼承組織和簡化對象類輸入站自動取款機柜員終端確定屬性儲戶姓名地址2023/11/22上海大學(xué)計算機學(xué)院18動態(tài)模型描述事件在什么時候、以何種時序發(fā)生事件跟蹤圖和狀態(tài)圖建立動態(tài)模型編寫腳本設(shè)計用戶界面畫事件跟蹤圖和狀態(tài)圖審查動態(tài)模型2023/11/22上海大學(xué)計算機學(xué)院19動態(tài)模型(續(xù)1)編寫腳本ATM正常情況腳本1,ATM請求儲戶插入磁卡,儲戶插入磁卡2,ATM讀卡3,ATM要求儲戶輸入密碼;儲戶輸入密碼1234564,ATM請求總行驗證卡號和密碼;總行要求8號分行核對儲戶密碼,然后通知ATM說明該卡有效5,ATM要求儲戶選擇事務(wù)類型(取款、轉(zhuǎn)帳、查詢、修改密碼等);儲戶選擇“取款”6,ATM要求儲戶輸入取款額;儲戶輸入1000……2023/11/22上海大學(xué)計算機學(xué)院20動態(tài)模型(續(xù)2)畫事件跟蹤圖:儲戶:ATM:總行:分行插卡要求密碼輸入密碼驗證用戶帳戶有效驗證用戶帳戶有效2023/11/22上海大學(xué)計算機學(xué)院21動態(tài)模型(續(xù)3)狀態(tài)圖主屏Do:顯示主屏Do:要求密碼插卡Do:驗證帳戶輸入密碼帳戶有效Do:要求類型取消Do:顯示取消信息取消取消退卡Do:退卡拿走卡輸入類型ATM類部分狀態(tài)圖2023/11/22上海大學(xué)計算機學(xué)院22功能模型

指明系統(tǒng)應(yīng)該“做什么”,表示數(shù)據(jù)之間的依賴關(guān)系和有關(guān)的處理功能。數(shù)據(jù)流圖(DFD:DataFlowDiagram)儲戶驗證密碼密碼帳號檢查帳戶帳戶帳號更新帳戶余額事務(wù)類型,金額ATM系統(tǒng)部分DFD2023/11/22上海大學(xué)計算機學(xué)院23OO系統(tǒng)設(shè)計OO系統(tǒng)設(shè)計任務(wù)OO系統(tǒng)設(shè)計原則OO系統(tǒng)劃分2023/11/22上海大學(xué)計算機學(xué)院24OO系統(tǒng)設(shè)計任務(wù)系統(tǒng)分解成子系統(tǒng)識別問題中固有的并發(fā)性對象間不存在交互,可根據(jù)狀態(tài)圖劃分控制線將子系統(tǒng)分配給處理器和任務(wù)選擇數(shù)據(jù)存儲管理方法處理對全局資源的訪問處理器、磁盤、數(shù)據(jù)庫、邏輯名稱等,避免沖突選擇軟件控制機制子程序、事件驅(qū)動、并發(fā)型系統(tǒng)處理邊界條件初始化、終止條件、失敗處理設(shè)置平衡的優(yōu)先級在所希望的但不一致的目標(biāo)中選擇一個目標(biāo)2023/11/22上海大學(xué)計算機學(xué)院25OO設(shè)計原則模塊化:對象和類層次抽象:過程抽象和數(shù)據(jù)抽象信息隱蔽:接口與實現(xiàn)的分離,私有變量和私有方法弱耦合:減少對象間的關(guān)聯(lián)強內(nèi)聚:服務(wù)內(nèi)聚、類內(nèi)聚、一般-特殊內(nèi)聚可重用:類庫、組件、設(shè)計模式、體系結(jié)構(gòu)模式其它原則:開閉原則、Demeter原則等2023/11/22上海大學(xué)計算機學(xué)院26OO系統(tǒng)劃分子系統(tǒng)是類、關(guān)聯(lián)、操作、事件和約束的一個相關(guān)集合,通常由它提供的服務(wù)來識別。分層封閉式開放式分塊其他風(fēng)格的劃分應(yīng)用程序包人機對話控制窗口圖形屏幕圖形點陣圖形仿真程序操作系統(tǒng)2023/11/22上海大學(xué)計算機學(xué)院27對象設(shè)計精化對象的屬性和操作,精化對象模型。強調(diào)計算機概念。組合三種模型,獲取類的操作將動態(tài)模型中的事件、動作、活動與功能模型中的處理轉(zhuǎn)換成操作,加入到對象類。設(shè)計實現(xiàn)操作的算法選擇有效算法(如,選擇表的查找算法)選擇數(shù)據(jù)結(jié)構(gòu)增加必要的內(nèi)部類和內(nèi)部操作優(yōu)化數(shù)據(jù)的訪問實現(xiàn)外部交互式控制子程序、事件驅(qū)動、并發(fā)型調(diào)整類結(jié)構(gòu)以提高繼承性設(shè)計關(guān)聯(lián)確定對象的精確表示將類屬性的類型具體化把類和關(guān)聯(lián)封裝成模塊將類集成為包,確定類或包的屬性與操作的對外可見性,2023/11/22上海大學(xué)計算機學(xué)院28優(yōu)化數(shù)據(jù)的訪問為提高訪問效率增加冗余關(guān)聯(lián)調(diào)整執(zhí)行次序為避免重復(fù)計算而保留派生屬性Speaklanguage*CompanyPersonSkillemployHasskill***ClassBoxlocationAttributetext*ClassBoxlocationAttributeListregionAttributeText/location*2023/11/22上海大學(xué)計算機學(xué)院29調(diào)整類結(jié)構(gòu)以提高繼承性從各組類中抽取公共行為重新修正類和操作用委派替換繼承l(wèi)istaddremovefirstlaststackpushpoplistaddremovefirstlaststackpushpop2023/11/22上海大學(xué)計算機學(xué)院30設(shè)計關(guān)聯(lián)分析關(guān)聯(lián)的遍歷單向關(guān)聯(lián)雙向關(guān)聯(lián)把關(guān)聯(lián)作為獨特的對象實現(xiàn)WorkforPersonCompany*WorkforCompany*Personemployer1Workfor*PersonemployerCompanyemployeesSetelements*2Person3CompanyWorkForPersoncompany*2023/11/22上海大學(xué)計算機學(xué)院31OO程序設(shè)計OO程序設(shè)計風(fēng)格語言選擇Demeter法則2023/11/22上海大學(xué)計算機學(xué)院32OO程序設(shè)計風(fēng)格良好的程序設(shè)計風(fēng)格對保證軟件質(zhì)量很重要傳統(tǒng)的程序設(shè)計風(fēng)格OO程序設(shè)計風(fēng)格可重用性方法高內(nèi)聚:一個方法完成一個功能保持方法的一致性策略與實現(xiàn)分開全面覆蓋(組合條件、異常處理)盡量不用全局變量可擴充性封裝實現(xiàn)策略避免遍歷多條鏈避免使用多分支語句精心設(shè)計公有方法健壯性防止出錯參數(shù)合法性避免先定義的限制條件先測試后優(yōu)化2023/11/22上海大學(xué)計算機學(xué)院33語言選擇多重繼承類庫效率強類型和弱類型內(nèi)存管理封裝參數(shù)化類斷言與約束數(shù)據(jù)持久性2023/11/22上海大學(xué)計算機學(xué)院34Demeter法則又叫最少知識原則(LeastKnowledgePrinciple)只與你直接的朋友交談不要跟陌生人說話每個軟件單位對其他單位都只有最少的知識,而且局限于那些與本單位相關(guān)的軟件單位某人朋友陌生人某人朋友陌生人朋友圈Callforwording2023/11/22上海大學(xué)計算機學(xué)院35Demeter法則:示例Someone+Operation1()Friend+Operation2()So

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論