




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第9章面向?qū)ο蠓椒▽W(xué)引論
(Object-OrientedMethodology)
本章介紹面向?qū)ο蠓椒▽W(xué)的概述、基本概念,以及在用面向?qū)ο蠓椒▽W(xué)開發(fā)軟件過程中通常建立的3種模型:對(duì)象模型、動(dòng)態(tài)模型和功能模型。
瀑布模型的缺點(diǎn)是僵化,要求:生命周期各階段間遵守嚴(yán)格的順序;預(yù)先定義并“凍結(jié)”軟件需求。
SA-SD-SP技術(shù)的缺點(diǎn):本質(zhì)上是功能分解,以實(shí)現(xiàn)功能的過程為中心,而用戶的需求變化主要是針對(duì)功能的。這就使基于過程的設(shè)計(jì)不易被理解;且功能變化往往引起結(jié)構(gòu)變化較大,穩(wěn)定性不好。數(shù)據(jù)與操作分開處理,可能造成軟構(gòu)件對(duì)具體應(yīng)用環(huán)境的依賴,可重用性(reusability)較差。§1.OOM概述
盡可能模擬人類習(xí)慣的思維方式,即問題域與求解域在結(jié)構(gòu)上盡可能一致。與傳統(tǒng)方法相反,OOM以數(shù)據(jù)或信息為主線,把數(shù)據(jù)和處理結(jié)合構(gòu)成統(tǒng)一體——對(duì)象。這時(shí)程序不再是一系列工作在數(shù)據(jù)上的函數(shù)集合,而是相互協(xié)作又彼此獨(dú)立的對(duì)象的集合。OOM的四要點(diǎn):①對(duì)象(object):客觀世界由對(duì)象組成。②類(class):對(duì)象可劃分為類;單個(gè)對(duì)象可視為某一類的實(shí)例(instance)。OOM的特點(diǎn):classPost_office{private:loc_typelocation;emp_typeemployee;……public:voidsend(req_typerequest,money_typepayment);voidsell(intgoods,money_typepayment);……}main(){Post_officeMy_PO;req_typeMy_request;money_typeMy_payment;……My_PO.Send(My_request,My_payment);……}§1.OOM概述例如:③繼承(inheritance):類可分層,下層子類與上層父類有相同特征,稱為繼承。④消息(message):對(duì)象間只能通過發(fā)送消息進(jìn)行聯(lián)系,外界不能處理對(duì)象的內(nèi)部數(shù)據(jù),只能通過消息請(qǐng)求它進(jìn)行處理(如果它提供相應(yīng)消息的話)?!?.OOM概述OOM(Object-Oriented)=Object+Classes+Inheritance+CommunicationwithmessagesObject-based=Object+CommunicationwithmessagesClass-based=Object+Classes+CommunicationwithmessagesOOM:以object為核心,強(qiáng)調(diào)對(duì)現(xiàn)實(shí)概念的模擬而不強(qiáng)調(diào)算法?!懊嫦?qū)ο蠓椒▽W(xué)的基本原則,是按照人們習(xí)慣的思維方式建立問題域的模型,開發(fā)出盡可能直觀、自然地表現(xiàn)求解方法的軟件系統(tǒng)”。
Class:由特殊到一般的歸納(induction)
Inheritance:由一般到特殊的演繹(deduction)2、面向?qū)ο蠓椒▽W(xué)的優(yōu)點(diǎn)傳統(tǒng)方法:面向過程設(shè)計(jì),以算法為核心,數(shù)據(jù)與操作分離,不易理解?!?.OOM概述①與人類習(xí)慣的思維方式一致OOM:以object模擬實(shí)體,需求變化不會(huì)引起結(jié)構(gòu)的整體變化,因?yàn)閷?shí)體相對(duì)穩(wěn)定,故系統(tǒng)也相應(yīng)穩(wěn)定。②面向?qū)ο筌浖€(wěn)定性好傳統(tǒng)方法:結(jié)構(gòu)依賴于功能,不穩(wěn)定。傳統(tǒng)方法:通過建立標(biāo)準(zhǔn)函數(shù)庫來重用軟構(gòu)件。但標(biāo)準(zhǔn)函數(shù)缺少必要的“柔性”,難以適應(yīng)不同場(chǎng)合的不同需要。OOM:一個(gè)class所有的instances都可重用它的代碼;由inheritance派生出的新的class可重用其父類的代碼,并且可以修改、擴(kuò)充而不影響其父類的使用?!?.OOM概述③面向?qū)ο筌浖芍赜眯院脗鹘y(tǒng)方法:在許多中、小規(guī)模軟件開發(fā)中取得成功。OOM:構(gòu)成軟件系統(tǒng)的每個(gè)對(duì)象有自己的數(shù)據(jù)、操作、功能和用途??梢园汛笮蛙浖a(chǎn)品分解成一系列本質(zhì)上相互獨(dú)立的小產(chǎn)品,從而降低技術(shù)難度,便于管理。④較易開發(fā)大型軟件產(chǎn)品穩(wěn)定性好:軟件功能需求的變化不牽動(dòng)全局,只需局部修改;Class獨(dú)立性強(qiáng):只要修改不涉及class的對(duì)外接口,則內(nèi)部修改完全不影響外部調(diào)用;Inheritance和多態(tài)性(polymorphism)使其很容易被修改和擴(kuò)充;容易理解;OOM:從以下幾方面改善了可維護(hù)性——有這一條就什么都好辦了!
容易測(cè)試、調(diào)試。這一點(diǎn)還可商榷⑤面向?qū)ο筌浖删S護(hù)性好§1.OOM概述傳統(tǒng)方法:可維護(hù)性是最令人頭痛的問題。注:OOM并不是減少了開發(fā)時(shí)間,而是通過提高可重用性、可維護(hù)性,進(jìn)行擴(kuò)充和修改的容易程度等,從長(zhǎng)遠(yuǎn)角度改進(jìn)了軟件的質(zhì)量。3、面向?qū)ο蟮能浖^程
任何開發(fā)方法學(xué)都必須完成的工作要素:“做什么”、“怎樣做”、“實(shí)現(xiàn)”和“完善”。
迭代在OOM中更常見更容易實(shí)現(xiàn)開發(fā)重點(diǎn)應(yīng)該是生命周期的分析階段
生命周期個(gè)階段的區(qū)分并不重要、不明顯
整個(gè)開發(fā)過程中使用統(tǒng)一的軟件概念“對(duì)象”整個(gè)開發(fā)過程吻合一致,是“無縫”連接的為避免開發(fā)過程過分無序,應(yīng)以一線性過程為總目標(biāo)?!?.OOM概述進(jìn)一步開發(fā)運(yùn)行狀態(tài)集成和測(cè)試階段編碼階段面向?qū)ο笤O(shè)計(jì)階段面向?qū)ο蠓治鲭A段陳述需求階段維護(hù)期f1f2f3……fi……fnfi(X)Sgi(X,S)S’輸出輸出§2.面向?qū)ο蟮母拍?/p>
對(duì)象是基本運(yùn)行實(shí)體,由描述其屬性的數(shù)據(jù)以及可以對(duì)這些數(shù)據(jù)施加的所有操作封裝在一起構(gòu)成的統(tǒng)一體。1、對(duì)象(Object)Object:=ID+Method+Attribute+Message=ID,MS,DS,MI§2.OO的概念Object的特點(diǎn):①以數(shù)據(jù)為中心,不設(shè)與數(shù)據(jù)無關(guān)的操作;②Object主動(dòng)處理而不被動(dòng)地等待被處理,外部只能通過message請(qǐng)求操作;③具有黑盒性:外部操作時(shí),無須知道該object內(nèi)部的數(shù)據(jù)結(jié)構(gòu)及算法;④具有并行性:不同object各自獨(dú)立地處理自身數(shù)據(jù),彼此間僅通過傳遞message完成通信;⑤模塊獨(dú)立性好:內(nèi)聚強(qiáng)(①)、耦合弱(③④)class中定義的數(shù)據(jù),object有自己特有的屬性值。7、封裝(Encapsulation)2、類(Class)§2.OO的概念具有相同數(shù)據(jù)和相同操作的一組相似對(duì)象。3、實(shí)例(Instance)某個(gè)class描述的一個(gè)具體對(duì)象。4、消息(Message)
要求對(duì)象執(zhí)行在定義它的那個(gè)類中所定義的某個(gè)操作的規(guī)格說明。Message:=object_ID.method_ID(parameter(s))5、方法(Method)object能做的操作,亦稱為service、responsibility,在
class中須定義相應(yīng)的代碼。6、屬性(Attribute)把數(shù)據(jù)和實(shí)現(xiàn)操作集中放在對(duì)象內(nèi)部,對(duì)外界隱藏了實(shí)現(xiàn)細(xì)節(jié)。Class中國(guó)人中國(guó)人Attributes中國(guó)人Methods張山(instance)Class中國(guó)人
張山的AttributesClass重慶人
(子類)
重慶人Attributes
重慶人MethodsClass中國(guó)人李士(instance)
中國(guó)人李士的Attributes
重慶人李士的AttributesClass重慶人例:§2.OO的概念8、繼承(Inheritance)
子類自動(dòng)共享父類的attributes和methods,而不必重復(fù)定義。Inheritance的特點(diǎn):①若重慶人的methods中有與中國(guó)人的同名,則李士執(zhí)行該method時(shí)以重慶人為準(zhǔn),不執(zhí)行中國(guó)人中定義的同名method。
講官話,這叫做“低層性質(zhì)override高層性質(zhì)”講土話,這叫做“縣官不如現(xiàn)管”②傳遞性(transitivity):AB、BCAC
一個(gè)class繼承了上層全部classes的一切性質(zhì)。③一個(gè)子類只有一個(gè)父類稱為單繼承(singleinheritance),一個(gè)子類可有多個(gè)父類稱為多重繼承(multipleinheritance).§2.OO的概念FemaleChineseScholarI例:注意:multipleinheritance在定義中應(yīng)避免二義性(ambiguity),即二個(gè)父類中定義重名,但各具不同性質(zhì)。④修改與擴(kuò)充可以很容易地通過派生子類來完成。9、多態(tài)性(Polymorphism)
不同層次的classes可共享一個(gè)method名,但按各自的方式來實(shí)現(xiàn)這種method。C++中定義了虛函數(shù)(virtualfunction)來實(shí)現(xiàn)這一功能。即一個(gè)method有多個(gè)版本,運(yùn)行時(shí)才決定執(zhí)行哪一個(gè)。故亦稱為動(dòng)態(tài)聯(lián)編(dynamicbinding)或滯后聯(lián)編(latebinding)§2.OO的概念10、重載(Overloading)
對(duì)相同的函數(shù)名或運(yùn)算符實(shí)現(xiàn)不同的函數(shù)算法或運(yùn)算。分為函數(shù)重載和運(yùn)算符重載兩種。doubleavg(constdoublea[],intsize);doubleavg(constinta[],intsize);doubleavg(constdoublea[],intsize);{doublesum=0.0;for(inti=0;i<size;++i)sum+=a[i];return(sum/size);}doubleavg(constinta[],intsize);{intsum=0;for(inti=0;i<size;++i)sum+=a[i];return((double)sum/size);}main(){intk[3]={1,2,3};doublex[3]={1.1,2.2,3.3};cout<<avg(k,3)<<“intaverage\n”;cout<<avg(x,3)<<“doubleaverage\n”;}⑴Function(orparameter)overloading:不同函數(shù)共用一個(gè)名字,而調(diào)用參數(shù)的特征不同。§2.OO的概念例:⑵Operatoroverloading:同一運(yùn)算符(operator)作用于不同類型的操作數(shù)(operand)。
在編譯(compile)階段就決定了使用類型及執(zhí)行代碼,故亦稱為靜態(tài)聯(lián)編(staticbinding)或先前聯(lián)編
(earlybinding)。§3.面向?qū)ο蠼?/p>
Object-OrientedModeling
面向?qū)ο蠓椒ㄗ罨镜脑瓌t是:按照人們習(xí)慣的思維方式,用面向?qū)ο笥^點(diǎn)建立問題域的模型,進(jìn)而開發(fā)出盡可能自然地表現(xiàn)求解方法的軟件。
模型是為了理解事物而對(duì)事物作出的一種抽象,是對(duì)事物的一種無歧義的書面描述。
影響較大的面向?qū)ο蠹夹g(shù):
Coad/Yourdon方法
Booch方法
OMT(ObjectModelingTechnique)技術(shù)UML(UnifiedModelingLanguage)和RUP(RationalUnifiedProcess)OMT方法建立三種模型:描述系統(tǒng)數(shù)據(jù)結(jié)構(gòu)的對(duì)象模型(objectmodel).
描述系統(tǒng)控制結(jié)構(gòu)的動(dòng)態(tài)模型(dynamicmodel).
描述系統(tǒng)功能的功能模型(functionmodel).
三種模型從3個(gè)不同但又密切相關(guān)的角度模擬目標(biāo)系統(tǒng),從不同側(cè)面反映了系統(tǒng)的實(shí)質(zhì)性內(nèi)容,綜合起來全面地反映對(duì)目標(biāo)系統(tǒng)的需求。三種模型都是必不可少的,其中的對(duì)象模型是最重要、最基本、最核心的。§3.面向?qū)ο蠼!?.面向?qū)ο蠼?、對(duì)象模型(ObjectModel,OM)ClassNameAttributesMethodsClass
對(duì)象模型表示靜態(tài)的、結(jié)構(gòu)化的系統(tǒng)的“數(shù)據(jù)”性質(zhì),是對(duì)模擬客觀世界實(shí)體的對(duì)象及對(duì)象彼此間的關(guān)系的映射,描述了系統(tǒng)的靜態(tài)結(jié)構(gòu)。
建立對(duì)象模型的目標(biāo)是從客觀世界中提煉出對(duì)具體應(yīng)用有價(jià)值的概念。(1)類圖的基本符號(hào)
通常使用UML提供的類圖來建立對(duì)象模型,UML中類的實(shí)際含義是“一個(gè)類及屬于該類的對(duì)象”。
類
屬性
服務(wù)可見性屬性名:類型名=初值{性質(zhì)串}可見性操作名(參數(shù)表):返回值類型{性質(zhì)串}注:可見性有3種+(public)、-(private)、#(protected)
參數(shù)名:類型名=默認(rèn)值例如:圓
圓心坐標(biāo)半徑
……
顯示隱藏
……§3.面向?qū)ο蠼#霃剑篿nteger=1
關(guān)聯(lián)關(guān)系表示兩類對(duì)象之間存在著某種語義上的聯(lián)系,即對(duì)象之間有相互作用、相互依靠的關(guān)系。(2)表示關(guān)系的符號(hào)§3.面向?qū)ο蠼"訇P(guān)聯(lián)關(guān)系校長(zhǎng)學(xué)校一對(duì)一(1:1)教師講義一對(duì)多(1:M)1M教師學(xué)生多對(duì)多(N:M)MN
關(guān)聯(lián)的多重性:在表示關(guān)聯(lián)的直線兩端寫上重?cái)?shù)0..1表示0到1個(gè)對(duì)象0..*或*表示0到多個(gè)對(duì)象1+或1..*表示1到多個(gè)對(duì)象1..10表示1到10個(gè)對(duì)象5表示5個(gè)對(duì)象§3.面向?qū)ο蠼?+目錄文件文件名
名稱:常見的關(guān)聯(lián)是雙向的關(guān)系作家計(jì)算機(jī)1+*使用被使用
關(guān)聯(lián)的限定:受限的關(guān)聯(lián)由兩類對(duì)象及限定詞組成
關(guān)聯(lián)類:為說明關(guān)聯(lián)的性質(zhì),引入關(guān)聯(lián)類來表示這些附加信息電梯控制器電梯按鈕4*隊(duì)列
角色:類對(duì)象在關(guān)聯(lián)中的特定作用工人公司*雇主雇員②聚集關(guān)系§3.面向?qū)ο蠼?/p>
聚集(聚合)是關(guān)聯(lián)的特例,表示一類對(duì)象與另一類對(duì)象之間的關(guān)系是整體與部分的關(guān)系。
共享聚集:處于部分方的對(duì)象可以同時(shí)參與多個(gè)處于整體方對(duì)象
組合聚集:部分類對(duì)象完全隸屬于整體類對(duì)象窗口列表框*按鈕菜單文本框***包含課題組人1..**成員§3.面向?qū)ο蠼"鄯夯P(guān)系
泛化關(guān)系就是通常的繼承關(guān)系,是通用類和具體類之間的關(guān)系。具體類完全擁有通用類的數(shù)據(jù)和操作,并且還可以補(bǔ)充一些數(shù)據(jù)和操作。注:泛化是針對(duì)類而不針對(duì)實(shí)例,指出在類與類之間存在“一般-特殊”關(guān)系。抽象類是沒有具體對(duì)象的類。抽象操作是抽象類的操作。
普通泛化:就是繼承關(guān)系(§2)交通工具{abstract}drive(){abstract}汽車drive()輪船drive()
受限泛化:具有進(jìn)一步說明泛化使用方法或擴(kuò)充方法的附加約束條件的泛化關(guān)系。預(yù)定義的約束有多重、不相交、完全和不完全4種。§3.面向?qū)ο蠼"芤蕾嚭图?xì)化關(guān)系
依賴關(guān)系:描述兩個(gè)類或用例之間的語義連接關(guān)系。表明一個(gè)類對(duì)象為了完成自己的任務(wù)需要借助另一個(gè)類對(duì)象提供的服務(wù)。
如:一個(gè)類使用另一個(gè)類的對(duì)象作為操作的參數(shù)或數(shù)據(jù)成員、一個(gè)類向另一個(gè)類發(fā)消息等。類B類A
細(xì)化關(guān)系:描述同一個(gè)事物的不同抽象層次的類對(duì)象。分析類設(shè)計(jì)類
即:“分析類”和“設(shè)計(jì)類”描述同一事物但抽象層次不同,“設(shè)計(jì)類”是在“分析類”的基礎(chǔ)上的更詳細(xì)的描述(“設(shè)計(jì)類”細(xì)化了“分析類”,或“分析類”細(xì)化成了“設(shè)計(jì)類”)。三要素:①事件(event):引發(fā)object狀態(tài)改變的控制信息(瞬時(shí))。②狀態(tài)(status):即
object的
attributes所處的情形(可持續(xù))。③行為(action):object要達(dá)到某種status所做的操作(耗時(shí))。
動(dòng)態(tài)模型表示系統(tǒng)瞬時(shí)的、行為化的系統(tǒng)控制性質(zhì),規(guī)定了對(duì)象模型中的對(duì)象的合法變化序列。表示方法:用UML提供的狀態(tài)圖(P.66)來描述對(duì)象的狀態(tài)、觸發(fā)狀態(tài)轉(zhuǎn)換的事件以及對(duì)象的行為。注:每個(gè)類的動(dòng)態(tài)行為用一張狀態(tài)圖來描繪,各個(gè)類的狀態(tài)圖通過共享事件合并起來構(gòu)成系統(tǒng)的動(dòng)態(tài)模型。2、動(dòng)態(tài)模型(DynamicModel,DM)§3.面向?qū)ο蠼ie置撥號(hào)通話斷線撥號(hào)音do/響撥號(hào)音超時(shí)do/響蜂鳴音存儲(chǔ)的信息do/播放信息接通中do/試接通振鈴do/振鈴忙音do/響忙音拿起聽筒數(shù)字?jǐn)?shù)字有效號(hào)碼已接通受話人回話受話人掛斷電話掛斷電話超時(shí)掛斷電話超時(shí)無效號(hào)碼信息播完占線例:電話系統(tǒng)的狀態(tài)圖§3.面向?qū)ο蠼1硎痉椒ǎ?/p>
數(shù)據(jù)流圖(DFD)(P.40)用例模型(CaseModel)(1)用例圖(CaseDiagram)UML提供的用例圖是進(jìn)行需求分析和建立功能模型的有力工具。在UML中用用例圖建立起來的系統(tǒng)模型稱用例模型。
用例圖包含的模型元素有系統(tǒng)、行為者、用例及用例之間的關(guān)系?!?.面向?qū)ο蠼?、功能模型(FunctionModel,F(xiàn)M)功能模型表示變化的系統(tǒng)的功能性質(zhì),表明系統(tǒng)應(yīng)該做什么。自動(dòng)售貨機(jī)系統(tǒng)售貨供貨取貨款顧客供貨人收銀員§3.面向?qū)ο蠼"傧到y(tǒng)
用矩形框表示系統(tǒng)。方框的邊線表示系統(tǒng)的邊界,用于劃定系統(tǒng)的功能范圍,定義了系統(tǒng)所具有的功能。②
用例UML中用例定義為系統(tǒng)完成一個(gè)完整功能的一系列動(dòng)作,其結(jié)果能被特定的行為者感受到。具有如下特征:
用例代表用戶可見的功能,實(shí)現(xiàn)一個(gè)具體的用戶目標(biāo)
用例是被行為者啟動(dòng)的,并向行為者提供確切的值
用例可大可小,但必須是相對(duì)完整的注:用例置于系統(tǒng)方框內(nèi)用例是一個(gè)類,代表一類功能而不是使用該類功能的某個(gè)具體實(shí)例用例的實(shí)例是系統(tǒng)的一種實(shí)際使用方法(腳本)用例除完成內(nèi)部計(jì)算與工作外,還包括與外部的通信§3.面向?qū)ο蠼"?/p>
行為者④
用例之間的關(guān)系
是與系統(tǒng)交互的人或其他系統(tǒng),代表系統(tǒng)外部的實(shí)體。注
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 個(gè)人借款擔(dān)保人合同
- 電子商務(wù)網(wǎng)絡(luò)推廣合作免責(zé)協(xié)議
- 夫妻房屋財(cái)產(chǎn)約定協(xié)議書
- 商鋪招商代理合同
- 三農(nóng)村基層民主監(jiān)督與管理制度化方案
- 電子簽名認(rèn)證技術(shù)研究開發(fā)合作協(xié)議
- 工業(yè)地產(chǎn)租賃合同
- 油漆工種勞務(wù)分包合同
- 小學(xué)禁毒宣傳活動(dòng)方案
- 樓梯口拆除改造合同
- 印章管理培訓(xùn)課件
- NB-T 47013.15-2021 承壓設(shè)備無損檢測(cè) 第15部分:相控陣超聲檢測(cè)
- 學(xué)校如何運(yùn)轉(zhuǎn)
- 氫能與燃料電池-課件-第四章-氫的性質(zhì)
- 供水企業(yè)安全培訓(xùn)班
- 生化檢驗(yàn)報(bào)告單模板
- 面試評(píng)估報(bào)告
- 京東代運(yùn)營(yíng)合同模板正規(guī)范本(通用版)
- 蘋果樹病蟲害防治
- 2022年山東省青島一中自主招生化學(xué)模擬試卷一(附答案詳解)
- 成品半成品倉庫管理制度
評(píng)論
0/150
提交評(píng)論