OO方法學(xué)引論(10)課件_第1頁(yè)
OO方法學(xué)引論(10)課件_第2頁(yè)
OO方法學(xué)引論(10)課件_第3頁(yè)
OO方法學(xué)引論(10)課件_第4頁(yè)
OO方法學(xué)引論(10)課件_第5頁(yè)
已閱讀5頁(yè),還剩80頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第十八講面向?qū)ο蠓椒▽W(xué)本講的主要內(nèi)容一、面向?qū)ο蠓椒▽W(xué)概述二、面向?qū)ο蟮幕靖拍钊?、面向?qū)ο箝_發(fā)過(guò)程與對(duì)象建模一、面向?qū)ο蠓椒▽W(xué)概述面向過(guò)程方法學(xué)的缺點(diǎn)面向?qū)ο蠓椒▽W(xué)的優(yōu)點(diǎn)噴泉模型僵化的瀑布模型某些類型的系統(tǒng)需求是模糊的項(xiàng)目參與者之間存在通信鴻溝預(yù)先定義的需求可能是過(guò)時(shí)的面向過(guò)程開發(fā)模式的特點(diǎn)過(guò)程性開發(fā)模式側(cè)重建立構(gòu)成問(wèn)題解決的處理流。數(shù)據(jù)抽象、數(shù)據(jù)結(jié)構(gòu)根據(jù)算法步驟的要求開發(fā),它貫穿于過(guò)程,提供過(guò)程所要求操作的信息。系統(tǒng)的狀態(tài)是一組全局變量,這組全局變量保存狀態(tài)的值,把它們從一個(gè)過(guò)程傳送到另一個(gè)過(guò)程。2、面向?qū)ο蠓椒▽W(xué)的優(yōu)點(diǎn)與人類所習(xí)慣的思維方法一致。穩(wěn)定性好,控制變化性客觀世界中,實(shí)體結(jié)構(gòu)相對(duì)穩(wěn)定減弱“語(yǔ)義斷層”,更好的刻畫問(wèn)題域,減少了映射誤差便于復(fù)用可維護(hù)性好,易于理解、測(cè)試、調(diào)試等。消除或減少了軟件開發(fā)各個(gè)階段的鴻溝,適應(yīng)于大型軟件產(chǎn)品的開發(fā)。TendencyforChangewhenUsingOOParadigm(Jacobsonetal.1995)Characteristicofsoftwareproduct/projectProbabilityforchangeObjectsderivedfromtheapplicationLowLong-livedinformationstructuresLowPassiveobject’sattributeMediumSequencesofbehaviorMediumInterfacewiththeoutsideworldHighFunctionalityHighCharacteristicsofOODevelopmentProcessBeconsistencyofterminologyBeconsistencyoftheproblemandthesolutionweredescribedinsameterms:classes,objectsmethods,attributes,andbehaviors.BeconsistencyofperspectiveStaticviewsDynamicviewsRestrictions二、面向?qū)ο蟮母拍畛橄笮?/p>

Abstraction對(duì)象

Object類Class消息

Message繼承性

Inheritance封裝性Encapsulation多態(tài)性Polymorphism重載Overloading面向?qū)ο蠹夹g(shù)什么是面向?qū)ο驝oad和Yourdon給出了一個(gè)定義:“面向?qū)ο?對(duì)象+類+繼承+通信”。如果一個(gè)軟件系統(tǒng)是使用這樣4個(gè)概念設(shè)計(jì)和實(shí)現(xiàn)的,則我們認(rèn)為這個(gè)軟件系統(tǒng)是面向?qū)ο蟮摹R粋€(gè)面向?qū)ο蟮某绦虻拿恳怀煞輵?yīng)是對(duì)象,計(jì)算是通過(guò)新的對(duì)象的建立和對(duì)象之間的通信來(lái)執(zhí)行的。WhatisObject-Oriented?Objectorientationisanapproachtosoftwaredevelopmentthatorganizesboththeproblemanditssolutionasacollectionofdiscreteobjects;Itisakindofrepresentationthatdescribeobject’sdatastructureandbehavior.Itisakindofmodelingtechnology.對(duì)象Object任何事物皆對(duì)象,其形象表示(P200圖)對(duì)象在不同層上的定義定義一(OOD觀):對(duì)象是一組具有相同狀態(tài)的操作的集合定義二(信息模擬觀):對(duì)象是問(wèn)題域中某個(gè)東西的抽象,它反映了系統(tǒng)保存有關(guān)這個(gè)東西的信息或與它交互的能力,即對(duì)象是對(duì)屬性值和操作的封裝。定義三:Object::=<ID,MS,DS,MI> ID,MS,DS,MI分別是對(duì)象的標(biāo)識(shí)、操作集合、數(shù)據(jù)結(jié)構(gòu)和消息名集合操作又稱為方法或服務(wù),它描述了對(duì)象執(zhí)行的功能,若通過(guò)消息傳遞,還可以為其它對(duì)象使用。對(duì)象所能執(zhí)行的操作,即類中所定義的服務(wù)。它是對(duì)操作算法和響應(yīng)消息辦法的描述。BoxRepresentinganObject’sName,Attributes,andBehaviorsOperationMethodServiceReferenceHandleState

ElephantColor:textNumberoftusks:integerWeight:floatHeight:floatMove_to(location)Wash(date)Feed(amount,date,time)在一個(gè)類中,每個(gè)對(duì)象都是類的實(shí)例

(Instance),它們都可使用類中提供的函數(shù)。對(duì)象的狀態(tài)則包含在它的實(shí)例變量,即實(shí)例的屬性中。類Class具有相同結(jié)構(gòu)、操作,并遵守相同約束規(guī)則的對(duì)象聚合成一組,這組對(duì)象集合稱為對(duì)象類,簡(jiǎn)稱類。類層次與類格(Hierarchy,Lattice)子類、派生類父類、基類、超類類是對(duì)象的抽象,對(duì)象是類的實(shí)例Instance類實(shí)例是由類所描述的一個(gè)具體對(duì)象。如類抽象“中國(guó)人”的一個(gè)實(shí)例“王志東”FormingaHierarchyDieselFuelOctane(辛烷值)Cost_per_gallonAmount_remaining()AutoFuelOctane(辛烷值)Cost_per_gallonAmount_remaining()FuelOctaneCost_per_gallonAmount_remaining()DieselFuel

AutoFuel

Abstractclass消息就是某個(gè)操作的規(guī)格說(shuō)明,其組成:接收消息的對(duì)象消息名(消息選擇符)零個(gè)、一個(gè)或多個(gè)變?cè)纾簩?duì)于類Circle的一個(gè)實(shí)例My_Circle,如果使其以綠色在屏幕上顯示,My_Circle.Show(Green

);消息Message消息是一個(gè)對(duì)象與另一個(gè)對(duì)象的通信單元,是要求某個(gè)對(duì)象執(zhí)行類中定義的某個(gè)操作的規(guī)格說(shuō)明。發(fā)送給一個(gè)對(duì)象的消息定義了一個(gè)方法名和一個(gè)參數(shù)表(可能是空的),并指定某一個(gè)對(duì)象。一個(gè)對(duì)象接收的消息則調(diào)用消息中指定的方法,并將形式參數(shù)與參數(shù)表中相應(yīng)的值結(jié)合起來(lái)。類

兩個(gè)四邊形對(duì)象Quadrilateral類的每個(gè)對(duì)象有同樣的一組實(shí)例變量和方法。就這個(gè)意義來(lái)講,類Quadrilateral給我們提供了一個(gè)模板,表示了所有四邊形對(duì)象。類常??煽醋鍪且粋€(gè)抽象數(shù)據(jù)類型(ADT)的實(shí)現(xiàn)。但更合適的是把類看做是某種概念的模型。類的實(shí)現(xiàn)常常使用其它類的實(shí)例,它們提供了該類所需要的服務(wù)。這些實(shí)例應(yīng)當(dāng)受到保護(hù)不被其它對(duì)象存取,包括同一個(gè)類的其它實(shí)例。在四邊形的例子中,定義4個(gè)point類的實(shí)例作為Quadrilateral類的實(shí)例的4個(gè)頂點(diǎn)。這些point對(duì)象不能被其它對(duì)象存取。繼承Inheritance繼承的含義對(duì)象共享所在類的結(jié)構(gòu)、操作和約束等語(yǔ)義特性多層類層次的繼承傳遞性類格的繼承(多重繼承)繼承的作用繼承使所建立的軟件系統(tǒng)具有開放性繼承是信息組織和分類的有效方法提高代碼可重用率和可靠性,降低開發(fā)工作量繼承是使用已存在的定義做為基礎(chǔ)建立新定義的技術(shù)。新類的定義可以是既存類所聲明的數(shù)據(jù)和新類所增加的聲明的組合。新類復(fù)用既存的定義,而不要求修改既存類。既存類可當(dāng)做基類來(lái)引用,則新類相應(yīng)地可當(dāng)做派生類來(lái)引用。使用繼承設(shè)計(jì)一個(gè)新類,可以視為描述一個(gè)新的對(duì)象集,它是既存類所描述對(duì)象集的子集合。這個(gè)新的子集合可以認(rèn)為是既存類的一個(gè)特殊化。Quadrilateral類是Polygon類的特殊化。Quadrilateral是限制為四條邊的多邊形。我們還可以進(jìn)一步地把類Quadrilateral特殊化為Rectangle

。類Quadrilateral的界面可以等同于類Polygon的界面,而Rectangle類的界面又與Quadrilateral類的界面相同。新類的界面還可以被看做是既存類界面的一個(gè)擴(kuò)充界面。例如,從一個(gè)既存的車輛類派生的四輪驅(qū)動(dòng)車類可能不僅是車輛類子集合定義的特殊化,而且還可能在新類的界面中引入新的能力。類的繼承層次在類的繼承層次中,Quadrilateral的實(shí)際參數(shù)可以替換Polygon的形式參數(shù)。類Quadrilateral的界面與類Polygon的界面是相容的Quadrilateral的界面可響應(yīng)Polygon界面的所有消息。類層次的結(jié)構(gòu)繼承人ID:int地址:str教師教師證:int姓名:str學(xué)生學(xué)號(hào):int校名:str大學(xué)生專業(yè):int入學(xué)年月:Date小學(xué)生專業(yè):int入學(xué)年月:Date類層次的結(jié)構(gòu)繼承人ID:int姓名:str學(xué)生學(xué)號(hào):int校名:str大學(xué)生專業(yè):int入學(xué)年月:人學(xué)生大學(xué)生ID:XXXX姓名:XXX學(xué)號(hào):980001校名:合工大專業(yè):計(jì)算機(jī)入學(xué)年月:199809實(shí)例:一位大學(xué)生多態(tài)性與重載多態(tài)性含義把相同的操作施加于不同類型的對(duì)象,獲得不同的行為效果和結(jié)果。在C++中,多態(tài)性是通過(guò)虛函數(shù)(Virtual)實(shí)現(xiàn)的。動(dòng)態(tài)聯(lián)編(Dynamicbinding),滯后聯(lián)編。重載Overloading運(yùn)算符重載:同一運(yùn)算符作用于多種數(shù)據(jù)類型上。函數(shù)名重載:在同一作用域內(nèi)的多個(gè)參數(shù)特征不同的函數(shù)可以使用相同的函數(shù)名字。靜態(tài)聯(lián)編,先前聯(lián)編。動(dòng)態(tài)聯(lián)編的例子打印輸出堆棧S的內(nèi)容:fori=1totopdocaseS[i].type Integer: Print_Integer(S[i].Object); Float: Print_Char(S[i].Object); String: Print_String(S[i].Object); Boolean: Print_Boolean(S[i].Object);利用動(dòng)態(tài)聯(lián)編后,設(shè)計(jì)者不須考慮數(shù)據(jù)的結(jié)構(gòu)合類型:fori=1totopdoPrint(S[i]);三、OO開發(fā)過(guò)程類是分析、設(shè)計(jì)和實(shí)現(xiàn)的基本單元類生存期為利于復(fù)用,軟件部件應(yīng)當(dāng)獨(dú)立于具體的應(yīng)用。類應(yīng)該是一個(gè)較高抽象層次上的完全的概念模型的表示,可以為其他的系統(tǒng)復(fù)用。類的生存期:從定義\設(shè)計(jì)\實(shí)現(xiàn)\復(fù)用…一直到求精和維護(hù)。OO應(yīng)用的一般開發(fā)過(guò)程分析階段(領(lǐng)域分析及應(yīng)用分析)高層設(shè)計(jì)(設(shè)計(jì)應(yīng)用的頂層視圖,類的界面設(shè)計(jì))實(shí)例創(chuàng)建(應(yīng)用域問(wèn)題的最終解決)組裝測(cè)試應(yīng)用維護(hù)(如通過(guò)繼承聯(lián)系,加入新的行為或改變行為方式)。應(yīng)用生存期類生存期OO分析與高層設(shè)計(jì)領(lǐng)域分析參與人員:領(lǐng)域?qū)<液拖到y(tǒng)分析員目的:標(biāo)識(shí)基本概念及領(lǐng)域特征,建立領(lǐng)域模型多種領(lǐng)域分析模型,如Goad的語(yǔ)義數(shù)據(jù)模型。應(yīng)用分析:將領(lǐng)域模型適配于當(dāng)前的應(yīng)用中。對(duì)象建模OMT(如,三視點(diǎn)模型)高層設(shè)計(jì) 設(shè)計(jì)系統(tǒng)結(jié)構(gòu),選擇解決方案,把任務(wù)分配給子系統(tǒng)。面向?qū)ο蠼DP褪且环N思考工具(圖示符號(hào)和組織規(guī)則),幫助我們把知識(shí)(術(shù)語(yǔ)、概念)規(guī)范地表示出來(lái)。OO軟件的開發(fā)所要建立的三種模型:對(duì)象模型:描述系統(tǒng)的數(shù)據(jù)結(jié)構(gòu)動(dòng)態(tài)模型:描述系統(tǒng)的控制結(jié)構(gòu)功能模型:描述系統(tǒng)的功能整個(gè)開發(fā)過(guò)程中,以上模型不斷得以完善OOA,構(gòu)造出完全獨(dú)立于實(shí)現(xiàn)的應(yīng)用域模型OOD,把求解域的結(jié)構(gòu)逐漸加入到模型中OOP,對(duì)應(yīng)用域和求解域的結(jié)構(gòu)進(jìn)行編碼實(shí)現(xiàn),并進(jìn)行測(cè)試驗(yàn)證各種面向?qū)ο蠓椒▽W(xué)Coad/YourdonOOA/OOD方法Booch(基于原型的遞歸/并行模型)RumbaughOMT(多角度刻畫問(wèn)題域)JacbsonOOSE(強(qiáng)調(diào)usecase驅(qū)動(dòng))UML面向?qū)ο蠹夹g(shù)的集大成者對(duì)象模型:定義類及UML符號(hào)(P208)類名是一類對(duì)象的名字類的命名要恰當(dāng)、明確、簡(jiǎn)潔使用標(biāo)準(zhǔn)術(shù)語(yǔ)使用具有明確含義的名詞必要時(shí)使用名詞性短語(yǔ)類名屬性服務(wù)對(duì)象模型:定義屬性及UML描述UML描述屬性的語(yǔ)法格式可見(jiàn)性屬性名:類型名=初值{性質(zhì)串}#姓名:string=“l(fā)iuxiang”{readonly}UML規(guī)定三種可見(jiàn)性(可訪問(wèn)性)+(Public)-(Private)#(Protected)可見(jiàn)性(可訪問(wèn)性)不能默認(rèn)定義{性質(zhì)串}明確列出屬性所有可能的取值或?qū)傩缘男再|(zhì)類的作用域?qū)傩?,即類變量(該類的所有?duì)象共享)C++中的靜態(tài)數(shù)據(jù)成員具有作用域?qū)傩园l(fā)貨單類的類變量“貨單數(shù)”,用于統(tǒng)計(jì)發(fā)貨單的總數(shù),在該類所有對(duì)象中這個(gè)屬性的值都是一樣的。其UML表示為: +貨單數(shù):int對(duì)象模型:定義服務(wù)及UML描述UML描述服務(wù)的語(yǔ)法格式可見(jiàn)性操作名(參數(shù)表):返回值類型{性質(zhì)串}+main(name:str,age:int):int{readonly}UML規(guī)定可見(jiàn)性(可訪問(wèn)性)與屬性相同Public(+)Private(-)Protected(#){性質(zhì)串}用于明確地列出服務(wù)的性質(zhì)對(duì)象模型:定義類之間的關(guān)系關(guān)聯(lián):反映對(duì)象間相互依賴、相互作用的關(guān)系聚集:組合關(guān)系,“整體—部分”泛化(繼承):歸納關(guān)系,“一般—特殊”依賴和細(xì)化1、用UML表示關(guān)聯(lián)普通關(guān)聯(lián)關(guān)聯(lián)的角色限定關(guān)聯(lián)關(guān)聯(lián)類普通關(guān)聯(lián)TeacherComputer

1..

**使用被使用丈夫妻子結(jié)婚關(guān)聯(lián)的角色人限定關(guān)聯(lián)文件名目錄文件關(guān)聯(lián)類按鈕電梯隊(duì)列電梯控制器*42、用UML表示聚集共享聚集組合聚集人課題組*1..

*成員文本框列表框按鈕菜單窗體****包含3、用UML表示泛化(繼承)普通泛化受限泛化多重繼承不相交繼承完全繼承不完全繼承普通泛化船Drive()交通工具{abstract}Drive(){abstract}汽車Drive()驅(qū)動(dòng)車輪驅(qū)動(dòng)螺旋槳受限泛化(繼承)船Drive()交通工具{abstract}Drive(){abstract}汽車Drive()水陸兩用動(dòng)力裝置{多重}4、用UML表示依賴和細(xì)化依賴關(guān)系友元依賴關(guān)系細(xì)化關(guān)系類B類A《友元》分析類設(shè)計(jì)類對(duì)象模型實(shí)例P238,圖10.6動(dòng)態(tài)模型:作用與表示作用:著重于系統(tǒng)的控制邏輯和時(shí)序關(guān)系。表示:由狀態(tài)圖和事件跟蹤圖表示。動(dòng)態(tài)模型:狀態(tài)圖描繪對(duì)象的狀態(tài)描述觸發(fā)狀態(tài)轉(zhuǎn)換的事件描述對(duì)象響應(yīng)事件而作出的行為。動(dòng)態(tài)模型:狀態(tài)對(duì)某一時(shí)刻中屬性的概括,是對(duì)象屬性值的抽象。狀態(tài)規(guī)定了對(duì)象對(duì)事件的響應(yīng)方式;不同的狀態(tài)響應(yīng)相同的事件所產(chǎn)生的行為將不同。狀態(tài)具有持續(xù)性。定義狀態(tài)時(shí),忽略那些不影響對(duì)象行為的屬性。例一“?!钡娜齻€(gè)狀態(tài):空、滿、半滿行為。例二:電話的狀態(tài)圖(P57)。動(dòng)態(tài)模型:事件某個(gè)特定時(shí)刻所發(fā)生的事情,是對(duì)現(xiàn)實(shí)世界中的“事情”的抽象,事件的發(fā)生會(huì)引起對(duì)象從一種狀態(tài)瞬間轉(zhuǎn)換到另一種狀態(tài)。事件由一個(gè)對(duì)象發(fā)出,另一個(gè)對(duì)象接受。動(dòng)態(tài)模型:行為指對(duì)象達(dá)到某種狀態(tài)時(shí)所做的一系列處理操作。狀態(tài)圖的表示非空空滿狀態(tài)1do:行為1狀態(tài)2do:行為2初始事件事件1[條件]結(jié)束事件動(dòng)態(tài)模型:分析建模步驟評(píng)估所有的實(shí)例以完全理解系統(tǒng)中的交互序列;標(biāo)識(shí)驅(qū)動(dòng)交互序列的事件,理解這些事件是如何和特定對(duì)象關(guān)聯(lián)的;為每個(gè)實(shí)例創(chuàng)建事件軌跡;創(chuàng)建狀態(tài)圖;復(fù)審行為模型,驗(yàn)證其精確性和一致性。功能模型表示方法:數(shù)據(jù)流圖,usecase作用從不同的角度對(duì)對(duì)象模型和行為模型的補(bǔ)充定義“處理”,強(qiáng)調(diào)系統(tǒng)應(yīng)該“做什么”功能模型:用例圖系統(tǒng)用例行為者用例之間的關(guān)系擴(kuò)展關(guān)系使用關(guān)系自動(dòng)售貨機(jī)系統(tǒng)售貨供貨取貨款顧客供貨人收銀員功能模型:含擴(kuò)展和使用的用例圖自動(dòng)售貨機(jī)系統(tǒng)售貨供貨取貨款顧客供貨人收銀員售散裝飲料打開機(jī)器關(guān)閉機(jī)器打開機(jī)器關(guān)閉機(jī)器《擴(kuò)展》《

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論