版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第9章:面向?qū)ο蠓椒▽W(xué)引論9.1面向?qū)ο蠓椒▽W(xué)概述9.1.1面向?qū)ο蠓椒▽W(xué)的要點(diǎn)面向?qū)ο蠓椒▽W(xué)的基本原則:盡可能模擬人類(lèi)習(xí)慣的思維方式,使開(kāi)發(fā)軟件的方法與過(guò)程盡可能接近人類(lèi)認(rèn)識(shí)世界解決問(wèn)題的方法與過(guò)程。第9章:面向?qū)ο蠓椒▽W(xué)引論9.1面向?qū)ο蠓椒▽W(xué)概述客觀世界中的實(shí)體——問(wèn)題域中的對(duì)象;計(jì)算機(jī)中的實(shí)體——解空間對(duì)象;解空間對(duì)象取決于程序設(shè)計(jì)語(yǔ)言:匯編語(yǔ)言的對(duì)象:存儲(chǔ)單元;面向過(guò)程的高級(jí)語(yǔ)言的對(duì)象:變量、數(shù)組、記錄、文件等;面向?qū)ο蟮母呒?jí)語(yǔ)言的對(duì)象:除上述元素外,還包括窗體、菜單、按鈕、等等??陀^世界中的實(shí)體——問(wèn)題域中的對(duì)象;與傳統(tǒng)方法不同,面向?qū)ο蠓椒ㄒ詳?shù)據(jù)為主線,將數(shù)據(jù)和操作方法封裝在對(duì)象中,通過(guò)消息請(qǐng)求對(duì)象主動(dòng)執(zhí)行它的內(nèi)部操作,改變其內(nèi)部私有數(shù)據(jù)。與傳統(tǒng)方法不同,面向?qū)ο蠓椒ㄒ詳?shù)據(jù)為主線,將數(shù)據(jù)和操面向?qū)ο蠓椒ň哂兴膫€(gè)要點(diǎn):
A.認(rèn)為客觀世界是由對(duì)象組成;
B.把所有對(duì)象都劃分成各種對(duì)象類(lèi)(Class);C.把若干對(duì)象類(lèi)組成一個(gè)層次結(jié)構(gòu)的系統(tǒng)(類(lèi)等級(jí));
D.對(duì)象彼此間僅通過(guò)傳遞消息互相聯(lián)系。
OO=Objects+Class+Inheritance+Communicationwithmessage面向?qū)ο蠓椒ň哂兴膫€(gè)要點(diǎn):9.1.2面向?qū)ο蠓椒ǖ膬?yōu)點(diǎn)1.與人們習(xí)慣的思維方法一致;2.穩(wěn)定性好;3.可重用性好;4.較易開(kāi)發(fā)大型軟件產(chǎn)品;5.可維護(hù)性好。9.1.2面向?qū)ο蠓椒ǖ膬?yōu)點(diǎn)9.1.3噴泉模型9.1.3噴泉模型9.2面向?qū)ο蟮母拍?.2.1對(duì)象1、對(duì)象的形象表示狀態(tài)S操作1操作2操作3界面操作1、2、3的實(shí)現(xiàn)圖9.2對(duì)象的形象表示9.2面向?qū)ο蟮母拍?.2.1對(duì)象1、對(duì)象的形象1)定義1:對(duì)象是具有相同狀態(tài)的一組操作的集合。2)定義2:對(duì)象是對(duì)屬性值和操作的封裝。3)定義3:對(duì)象::=<ID,MS,DS,MI>其中,ID是對(duì)象的名字;MS是對(duì)象中的操作集合;DS是對(duì)象的數(shù)據(jù)集合;MI是對(duì)象受理的消息名集合(即對(duì)外接口)。2、對(duì)象的定義1)定義1:對(duì)象是具有相同狀態(tài)的一組操作的集合。2、對(duì)象的定狀態(tài)S操作:f1,f2,…,fn轉(zhuǎn)換:g1,g2,…,gn圖9.3用自動(dòng)機(jī)模擬對(duì)象轉(zhuǎn)換:新?tīng)顟B(tài)S’=gi(X,S)輸出fi(X,S)輸入fi,X狀態(tài)S操作:f1,f2,…,fn轉(zhuǎn)換:g1,g2,3、對(duì)象的特點(diǎn)1)以數(shù)據(jù)為中心;2)對(duì)象是主動(dòng)的;3)實(shí)現(xiàn)了數(shù)據(jù)封裝;4)本質(zhì)上具有并行性;5)模塊獨(dú)立性好。3、對(duì)象的特點(diǎn)9.2.2其他概念1、類(lèi)(Class)
類(lèi)就是對(duì)具有相同數(shù)據(jù)和相同操作的一組相似對(duì)象的定義。如:Circle類(lèi)具有相同的數(shù)據(jù)(圓心坐標(biāo)、半徑、顏色)和相同的操作(顯示自己、放大縮小半徑、在屏幕上移動(dòng)位置)。9.2.2其他概念1、類(lèi)(Class)又如:下面C++語(yǔ)言定義的Queue類(lèi),可用于實(shí)現(xiàn)一個(gè)隊(duì)列(即先進(jìn)先出的表):
ClassQueue{intq[100];intsloc,rloc;public:voidinit();//成員函數(shù)
voidqput(inti);intqget();};又如:下面C++語(yǔ)言定義的Queue類(lèi),可用于實(shí)現(xiàn)一類(lèi)有私有變量(Private)和公有變量(Public)。
缺省時(shí),都屬于私有的,只能由類(lèi)內(nèi)部其他成員來(lái)訪問(wèn),不能由程序的其他部分來(lái)訪問(wèn)。這是一種實(shí)現(xiàn)封裝的方法。
類(lèi)有私有變量(Private)和公有變量(Public)
實(shí)例就是由某個(gè)特定的類(lèi)所描述的一個(gè)具體的對(duì)象。如:Circlea;//聲明Circle類(lèi)實(shí)例aQueueQ1,Q2;//聲明Queue類(lèi)實(shí)例Q1和Q22、實(shí)例(Instance)實(shí)例就是由某個(gè)特定的類(lèi)所描述的一個(gè)具體的對(duì)象。2、實(shí)消息就是用來(lái)請(qǐng)求對(duì)象執(zhí)行某個(gè)處理或回答某些信息的要求。消息既可以是數(shù)據(jù)流,也可以是控制流。一條消息可以發(fā)送給不同的對(duì)象,對(duì)消息的解釋完全由接收信息的對(duì)象來(lái)完成,不同的對(duì)象對(duì)相同形式的消息可以有不同的解釋。
3、消息(Message)消息就是用來(lái)請(qǐng)求對(duì)象執(zhí)行某個(gè)處理或回答某些信息的要求與傳統(tǒng)程序的“調(diào)用/返回”所不同的是,對(duì)于傳來(lái)的消息,對(duì)象可以返回相應(yīng)的回答信息,也可以不返回。一個(gè)消息由三個(gè)部分組成:1)接收信息的對(duì)象;2)信息選擇符(即消息名);3)零個(gè)或多個(gè)變?cè)▍?shù))。如:MyCircle.Show(GREEN);與傳統(tǒng)程序的“調(diào)用/返回”所不同的是,對(duì)于傳來(lái)的消息4、方法(Method)
方法,是對(duì)象所能執(zhí)行的操作。
C++中把方法稱為成員函數(shù),如Circle類(lèi)中定義的成員函數(shù):Show(intcolor)4、方法(Method)5、屬性(Attribute)
屬性,是類(lèi)中定義的數(shù)據(jù)。
C++中把屬性稱為數(shù)據(jù)成員。5、屬性(Attribute)6、封裝(encapsulation)
封裝就是信息隱藏,通過(guò)封裝對(duì)外界隱藏了對(duì)象的實(shí)現(xiàn)細(xì)節(jié)。6、封裝(encapsulation)7、繼承(Inheritance)繼承,是指能夠直接獲得已有的性質(zhì)和特征,而不必重復(fù)定義它們。A的操作A的變量類(lèi)AA的實(shí)例變量從A的繼承特性B的操作B的變量類(lèi)B繼承來(lái)的A的實(shí)例變量B的實(shí)例變量類(lèi)AA的實(shí)例a1B的實(shí)例b1類(lèi)B:A的子類(lèi)圖9.4實(shí)現(xiàn)繼承機(jī)制的原理7、繼承(Inheritance)繼承,是指能夠直接獲8、多態(tài)性(Polymorphism)
多態(tài)性,指子類(lèi)對(duì)象可以象父類(lèi)對(duì)象那樣使用,同樣的消息既可以發(fā)送給父類(lèi)對(duì)象,也可以發(fā)送給子類(lèi)對(duì)象。即不同等級(jí)的類(lèi),可以公用一個(gè)方法的名字。
C++中,多態(tài)性是通過(guò)虛函數(shù)來(lái)實(shí)現(xiàn)的。在不同層次的類(lèi)中,虛函數(shù)實(shí)現(xiàn)算法不同,在運(yùn)行時(shí)根據(jù)接收消息的對(duì)象所屬于的類(lèi)來(lái)決定執(zhí)行虛函數(shù)的版本,稱為動(dòng)態(tài)聯(lián)編。8、多態(tài)性(Polymorphism)9、重載(Overloading)有兩種重載:1)函數(shù)重載指在同一作用域內(nèi)的若干個(gè)參數(shù)特征不同的函數(shù)可以使用相同的函數(shù)名字。如:Show(inta,intb)Show(intx)Show(intx,inty,intz)C++語(yǔ)言中函數(shù)重載是通過(guò)靜態(tài)聯(lián)編實(shí)現(xiàn)的。即編譯時(shí)根據(jù)函數(shù)變?cè)膫€(gè)數(shù)和類(lèi)型,決定函數(shù)版本。9、重載(Overloading)2)運(yùn)算符重載指同一運(yùn)算符可以施加于不同類(lèi)型的操作數(shù)上面。當(dāng)被操作數(shù)類(lèi)型不同時(shí),運(yùn)算符的含義是不同的。編譯時(shí)根據(jù)被操作數(shù)的類(lèi)型,決定使用算符的哪種語(yǔ)義。2)運(yùn)算符重載另外,在實(shí)現(xiàn)一個(gè)類(lèi)成員函數(shù)時(shí),必須通過(guò)用類(lèi)名限定函數(shù)名來(lái)告訴編譯器這個(gè)函數(shù)屬于哪個(gè)類(lèi)。如,編寫(xiě)qput()函數(shù):
VoidQueue::qput(inti){if(sloc==100){cout<<“Queueiffull”;return;}sloc++;q[sloc]=i;}另外,在實(shí)現(xiàn)一個(gè)類(lèi)成員函數(shù)時(shí),必須通過(guò)用類(lèi)名限定函數(shù)從程序中調(diào)用一個(gè)類(lèi)的成員函數(shù),用對(duì)象和點(diǎn)運(yùn)算符。如:
Queueob1,ob2;ob1.init();//是對(duì)對(duì)象ob1的初始化函數(shù)init()的調(diào)用
ob1,ob2之間的唯一關(guān)系是它們是同一類(lèi)對(duì)象。ob1的初始化不影響ob2。從程序中調(diào)用一個(gè)類(lèi)的成員函數(shù),用對(duì)象和點(diǎn)運(yùn)算符。如:用面向?qū)ο蠓椒ㄩ_(kāi)發(fā)軟件,通常需要建立三種形式的模型,它們分別是:(1)對(duì)象模型:描述系統(tǒng)的數(shù)據(jù)結(jié)構(gòu);(2)動(dòng)態(tài)模型:描述系統(tǒng)的控制結(jié)構(gòu);(3)功能模型:描述系統(tǒng)的功能。
3種模型必不可少,其重要程度不同,對(duì)象模型是最基本、最重要的。9.3面向?qū)ο蠼S妹嫦驅(qū)ο蠓椒ㄩ_(kāi)發(fā)軟件,通常需要建立三種形式的模型,UML(UnifiedModelingLanguage)
UML是面向?qū)ο蟮姆治雠c設(shè)計(jì)(OOA&D)方法發(fā)展的產(chǎn)物。
UML(UnifiedModelingLanguage)公認(rèn)的面向?qū)ο蠼UZ(yǔ)言出現(xiàn)于70年代中期。
90年代中,一批新方法出現(xiàn)了,其中最引人注目的是Booch1993、OOSE和OMT-2等。1.標(biāo)準(zhǔn)建模語(yǔ)言UML的出現(xiàn)公認(rèn)的面向?qū)ο蠼UZ(yǔ)言出現(xiàn)于70年代中期。1.標(biāo)準(zhǔn)眾多的建模語(yǔ)言各有優(yōu)點(diǎn),大多類(lèi)同,但仍存在某些細(xì)微的差別,妨礙了用戶之間的交流。統(tǒng)一建模語(yǔ)言在這樣的背景下產(chǎn)生。眾多的建模語(yǔ)言各有優(yōu)點(diǎn),大多類(lèi)同,但仍存在某些細(xì)微的1995年10月:第一個(gè)公開(kāi)版本UM0.8(UnifiedMethod)。1996年6月:UM改名為UML(UnifiedModelingLanguage),發(fā)布UML0.9。1996年底:UML占面向?qū)ο蠹夹g(shù)市場(chǎng)的85%,成為可視化建模語(yǔ)言事實(shí)上的工業(yè)標(biāo)準(zhǔn)?,F(xiàn)最新版本:UML2.01995年10月:第一個(gè)公開(kāi)版本UM0.8(Uni
UML是標(biāo)準(zhǔn)的建模語(yǔ)言,而不是標(biāo)準(zhǔn)的開(kāi)發(fā)過(guò)程。在不同組織和不同應(yīng)用領(lǐng)域,UML應(yīng)用需采取不同的開(kāi)發(fā)過(guò)程。1998年:RUP(RationalUnifiedProcess)是一種典型的建模過(guò)程。2.標(biāo)準(zhǔn)建模語(yǔ)言UML的內(nèi)容UML是標(biāo)準(zhǔn)的建模語(yǔ)言,而不是標(biāo)準(zhǔn)的開(kāi)發(fā)過(guò)程。2.UML的定義包括UML語(yǔ)義和UML表示法兩部分。UML的重要內(nèi)容可以由五類(lèi)圖(9種圖形)來(lái)定義:1)用例圖:從用戶角度描述系統(tǒng)功能,并指出各功能UML的定義包括UML語(yǔ)義和UML表示法兩部分。UML的重要2)靜態(tài)圖:包括類(lèi)圖、對(duì)象圖和包圖;類(lèi)圖2)靜態(tài)圖:包括類(lèi)圖、對(duì)象圖和包圖;類(lèi)圖2)靜態(tài)圖:包括類(lèi)圖、對(duì)象圖和包圖;對(duì)象圖包圖2)靜態(tài)圖:包括類(lèi)圖、對(duì)象圖和包圖;對(duì)象圖包圖3)行為圖:描述系統(tǒng)的動(dòng)態(tài)模型;4)交互圖:描述對(duì)象間的交互關(guān)系;交互圖3)行為圖:描述系統(tǒng)的動(dòng)態(tài)模型;交互圖5)實(shí)現(xiàn)圖:如配置圖,定義系統(tǒng)中軟硬件的物理體系結(jié)構(gòu)。5)實(shí)現(xiàn)圖:如配置圖,定義系統(tǒng)中軟硬件的物理體系結(jié)構(gòu)。3.標(biāo)準(zhǔn)建模語(yǔ)言UML的應(yīng)用領(lǐng)域
UML適用于軟件開(kāi)發(fā)中從需求分析到測(cè)試的不同階段:
需求獲?。河美龍D、活動(dòng)圖
需求分析:類(lèi)圖、對(duì)象圖和包圖
系統(tǒng)分析與設(shè)計(jì):狀態(tài)圖、順序圖、合作圖、活動(dòng)圖、部件圖和配置圖。
測(cè)試:?jiǎn)卧獪y(cè)試用類(lèi)圖、集成測(cè)試用部件圖和合作圖、確認(rèn)測(cè)試用用例圖等。3.標(biāo)準(zhǔn)建模語(yǔ)言UML的應(yīng)用領(lǐng)域UML適用于軟件開(kāi)UML常用于建立軟件系統(tǒng)模型,但同樣可用于描述非軟件領(lǐng)域的系統(tǒng),如:機(jī)械系統(tǒng);企業(yè)機(jī)構(gòu)或業(yè)務(wù)過(guò)程;處理復(fù)雜數(shù)據(jù)的信息系統(tǒng);具有實(shí)時(shí)要求的工業(yè)系統(tǒng)或工業(yè)過(guò)程;
…等。UML常用于建立軟件系統(tǒng)模型,但同樣可用于描述非軟件9.4對(duì)象模型9.4.1類(lèi)圖的基本符號(hào)1.定義類(lèi)類(lèi)名屬性服務(wù)圖9.5表示類(lèi)的圖形符號(hào)9.4對(duì)象模型9.4.1類(lèi)圖的基本符號(hào)類(lèi)名屬性服務(wù)圖2.定義屬性
UML描述屬性的語(yǔ)法格式:
可見(jiàn)性屬性名:類(lèi)型名=初值{性質(zhì)串}可見(jiàn)性:公有(public)/+、私有(private)/-、保護(hù)(protected)/#(沒(méi)有默認(rèn)可見(jiàn)性)
{性質(zhì)串}:可能枚舉值或其它性質(zhì),如{只讀}
例:-管理員:String=“未定”類(lèi)變量實(shí)例:-貨單數(shù):Integer(類(lèi)變量在該類(lèi)所有對(duì)象中的屬性值相等)2.定義屬性3.定義服務(wù)(操作)
UML描述操作的語(yǔ)法格式:
可見(jiàn)性操作名(參數(shù)表):返回值類(lèi)型{性質(zhì)串}參數(shù)的語(yǔ)法:
參數(shù)名:類(lèi)型名=默認(rèn)值-Show(x:integer=0,y:integer,z:integer):integer3.定義服務(wù)(操作)9.4.2表示關(guān)系的符號(hào)1.關(guān)聯(lián)
1)普通關(guān)聯(lián)作家計(jì)算機(jī)使用被使用*1…*圖9.6普通關(guān)聯(lián)示例9.4.2表示關(guān)系的符號(hào)作家計(jì)算機(jī)使用被使用*1…*圖9重?cái)?shù)(multiplicity)的表示方法:
0…1表示0到1個(gè)對(duì)象;0…*或*表示0到多個(gè)對(duì)象;1+或1…*表示1到多個(gè)對(duì)象;1…15表示1到15個(gè)對(duì)象;3表示3個(gè)對(duì)象。重?cái)?shù)(multiplicity)的表示方法:2)關(guān)聯(lián)的角色人結(jié)婚丈夫妻子圖9.7關(guān)聯(lián)的角色上圖是一個(gè)遞歸關(guān)聯(lián)的例子。這種情況下,標(biāo)明角色名有助于理解類(lèi)圖。2)關(guān)聯(lián)的角色人結(jié)婚丈夫妻子圖9.7關(guān)聯(lián)的角色上圖是一3)限定關(guān)聯(lián)目錄文件文件名圖9.8限定關(guān)聯(lián)目錄文件保存被保存1…*普通關(guān)聯(lián)利用限定詞把一對(duì)多關(guān)系簡(jiǎn)化成了一對(duì)一關(guān)系。3)限定關(guān)聯(lián)目錄文件文件名圖9.8限定關(guān)聯(lián)目錄文件保存4)關(guān)聯(lián)類(lèi)隊(duì)列電梯控制器電梯按鈕4*圖9.9關(guān)聯(lián)類(lèi)示例控制器對(duì)象和電梯對(duì)象之間的連接,對(duì)應(yīng)著一個(gè)隊(duì)列(對(duì)象),它存儲(chǔ)著控制器和電梯內(nèi)部按鈕的請(qǐng)求信息。4)關(guān)聯(lián)類(lèi)隊(duì)列電梯控制器電梯按鈕4*圖9.9關(guān)聯(lián)類(lèi)示例聚集表示類(lèi)與類(lèi)之間是整體與部分的關(guān)系。2.聚集1)共享聚集課題組人成員*1…*圖9.10共享聚集示例處于部分方的對(duì)象可同時(shí)參與多個(gè)處于整體方對(duì)象的構(gòu)成。聚集表示類(lèi)與類(lèi)之間是整體與部分的關(guān)系。2.聚集1)共部分類(lèi)完全隸屬于整體類(lèi),部分與整體共存,整體不存在了部分也隨之消失。2)組合聚集部分類(lèi)完全隸屬于整體類(lèi),部分與整體共存,整體不存在了教材描繪教材結(jié)構(gòu)的對(duì)象模型(組合聚集)封面前言1+1+目錄章節(jié)習(xí)題包含包含例子:教材描繪教材結(jié)構(gòu)的對(duì)象模型(組合聚集)封面前言1+1+目錄章3.泛化(繼承)
1)普通泛化抽象類(lèi):描述子類(lèi)的公共屬性和行為,不能生成具體對(duì)象的類(lèi)。3.泛化(繼承)抽象類(lèi):描述子類(lèi)的公共屬性和行為,不能生一個(gè)比較復(fù)雜的類(lèi)圖示例:一個(gè)比較復(fù)雜的類(lèi)圖示例:2)受限泛化給泛化關(guān)系(繼承關(guān)系)附加約束條件,說(shuō)明該泛化關(guān)系的使用方法和擴(kuò)充方法。約束有:多重、不相交、完全和不完全。2)受限泛化多重繼承:一個(gè)子類(lèi)可以同時(shí)多次繼承同一個(gè)上層基類(lèi)。不相交繼承:一個(gè)子類(lèi)不能多次繼承同一個(gè)上層基類(lèi)。(默認(rèn)為不相交繼承)多重繼承:一個(gè)子類(lèi)可以同時(shí)多次繼承同一個(gè)上層基類(lèi)。不相交繼承
完全繼承:指父類(lèi)的所有子類(lèi)都已經(jīng)在類(lèi)圖中窮舉出來(lái)了。
不完全繼承:指父類(lèi)的所有子類(lèi)并沒(méi)有在類(lèi)圖中窮舉出來(lái)了。隨著對(duì)問(wèn)題理解的深入,不完全繼承中可以不斷擴(kuò)充子類(lèi)。(默認(rèn)為不完全繼承)完全繼承:指父類(lèi)的所有子類(lèi)都已經(jīng)在類(lèi)圖中窮舉出來(lái)了。4.依賴和細(xì)化
1)依賴關(guān)系類(lèi)B類(lèi)A《友元》圖9.15友元依賴關(guān)系描述兩個(gè)模型元素(類(lèi)、用例)之間的關(guān)系,其中一個(gè)模型元素是獨(dú)立的(被箭頭指),另一個(gè)依賴于獨(dú)立的模型元素。如,一個(gè)類(lèi)使用另一個(gè)類(lèi)的對(duì)象作為自己的函數(shù)的參數(shù)。(友元:依賴類(lèi)可以使用獨(dú)立類(lèi)中私有的或保護(hù)的成員)4.依賴和細(xì)化類(lèi)B類(lèi)A《友元》圖9.15友元依賴關(guān)系2)細(xì)化關(guān)系分析類(lèi)設(shè)計(jì)類(lèi)圖9.16細(xì)化關(guān)系示例細(xì)化用來(lái)協(xié)調(diào)不同階段模型之間的關(guān)系,表示各個(gè)開(kāi)發(fā)階段不同抽象層次模型之間的相關(guān)性,通常用于跟蹤模型的演變。2)細(xì)化關(guān)系分析類(lèi)設(shè)計(jì)類(lèi)圖9.16細(xì)化關(guān)系示例細(xì)例子:公司員工名字電話號(hào)碼主要產(chǎn)品地址雇傭解雇姓名地址身份證號(hào)碼工資1+職務(wù)部門(mén)名部門(mén)工人經(jīng)理0…1管理產(chǎn)品產(chǎn)品名成本重量項(xiàng)目項(xiàng)目名預(yù)算優(yōu)先級(jí)生產(chǎn)1+主持參加1+1+1+一家公司的對(duì)象模型組成例子:公司員工名字雇傭姓名1+職務(wù)部門(mén)名部門(mén)工人經(jīng)理0…1管9.5動(dòng)態(tài)模型1)事件:事件是某個(gè)特定時(shí)刻所發(fā)生的事情。它是引起對(duì)象狀態(tài)轉(zhuǎn)換的控制信息。2)狀態(tài):狀態(tài)就是對(duì)象在其生命周期中的某個(gè)特定階段所處的某種情形。3)行為:行為是指對(duì)象達(dá)到某種狀態(tài)時(shí)所做的一系列處理操作。9.5動(dòng)態(tài)模型1)事件:事件是某個(gè)特定時(shí)刻所發(fā)通常用UML提供的狀態(tài)圖來(lái)描繪動(dòng)態(tài)模型。注意:每個(gè)類(lèi)的動(dòng)態(tài)行為用一張狀態(tài)圖來(lái)描繪,各個(gè)類(lèi)的狀態(tài)圖通過(guò)共享事件合并起來(lái),從而構(gòu)成系統(tǒng)的動(dòng)態(tài)模型。通常用UML提供的狀態(tài)圖來(lái)描繪動(dòng)態(tài)模型。軟件工程導(dǎo)論(第9章)課件實(shí)例:電話的狀態(tài)圖實(shí)例:9.6功能模型通常,功能模型由一組數(shù)據(jù)流圖組成。
UML提供的用例圖也是進(jìn)行需求分析和建立功能模型的有力工具。以用例圖建立起來(lái)的系統(tǒng)模型稱為用例模型,它描述的是外部行為者所理解的系統(tǒng)功能。9.6功能模型通常,功能模型由一組數(shù)據(jù)流圖組成。9.6.1用例圖1、系統(tǒng)2、用例(usecase)
行為者感受到的一個(gè)完整的功能。用例是類(lèi),代表一類(lèi)功能,用例的實(shí)例稱為腳本。3、行為者(actor)與系統(tǒng)交互的人或其他系統(tǒng)。它代表一種角色。9.6.1用例圖4、用例之間的關(guān)系1)擴(kuò)展關(guān)系向一個(gè)用例中添加一些動(dòng)作后構(gòu)成另一個(gè)用例,它們之間構(gòu)成擴(kuò)展關(guān)系。2)使用關(guān)系一個(gè)用例使用另一個(gè)用例,它們之間構(gòu)成使用關(guān)系。4、用例之間的關(guān)系描述一般行為的變化時(shí)采用擴(kuò)展關(guān)系;兩個(gè)或多個(gè)用例中出現(xiàn)重復(fù)描述時(shí)可采用使用關(guān)系。描述一般行為的變化時(shí)采用擴(kuò)展關(guān)系;9.6.2用例建模一個(gè)用例模型由若干幅用例圖組成。創(chuàng)建用例模型的工作包括:定義系統(tǒng)、尋找行為者、尋找用例、描述用例、定義用例之間的關(guān)系、確認(rèn)模型。9.6.2用例建模1、尋找行為者下述問(wèn)題有助于發(fā)現(xiàn)行為者:1)誰(shuí)將使用系統(tǒng)的主要功能?2)誰(shuí)需要借助系統(tǒng)的支持來(lái)完成日常工作?3)誰(shuí)來(lái)維護(hù)和管理系統(tǒng)?4)系統(tǒng)控制哪些硬件設(shè)備?5)系統(tǒng)需要與哪些其他系統(tǒng)交互?6)哪些人或系統(tǒng)對(duì)本系統(tǒng)產(chǎn)生的結(jié)果感興趣?1、尋找行為者2、尋找用例可以通過(guò)每個(gè)行為者回答下述問(wèn)題來(lái)獲取用例:1)行為者需要系統(tǒng)提供哪些功能?2)行為者自身需要做什么?3)行為者是否需要讀取、創(chuàng)建、刪除、修改或存儲(chǔ)系統(tǒng)中的信息?4)系統(tǒng)中發(fā)生的事件需要通知行為者嗎?5)行為者需要通知系統(tǒng)某些事情嗎?6)系統(tǒng)需要哪些輸入輸出?7)當(dāng)前使用的系統(tǒng)存在的主要問(wèn)題是什么?2、尋找用例9.7三種模型之間的關(guān)系1)針對(duì)每個(gè)類(lèi)建立的動(dòng)態(tài)模型,描述了實(shí)例的生命周期或運(yùn)行周期。2)狀態(tài)轉(zhuǎn)換驅(qū)使行為發(fā)生,這些行為在數(shù)據(jù)流圖中被映射成處理,在用例圖中被映射成用例,它們同時(shí)與類(lèi)圖中的服務(wù)相對(duì)應(yīng)。3)功能模型中的處理(或用例)對(duì)應(yīng)于對(duì)象模型中的類(lèi)所提供的服務(wù)。9.7三種模型之間的關(guān)系1)針對(duì)每個(gè)類(lèi)建立的動(dòng)態(tài)模型,描4)數(shù)據(jù)流圖中的數(shù)據(jù)存儲(chǔ),以及數(shù)據(jù)的源點(diǎn)/終點(diǎn),通常是對(duì)象模型中的對(duì)象。5)數(shù)據(jù)流圖中的數(shù)據(jù)流,往往是對(duì)象模型中對(duì)象的屬性值,也可能是整個(gè)對(duì)象。6)用例圖中的行為者,可能是對(duì)象模型中的對(duì)象。7)功能模型中的處理(或用例)可能產(chǎn)生動(dòng)態(tài)模型中的事件。8)對(duì)象模型描述了數(shù)據(jù)流圖中的數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)以及數(shù)據(jù)源點(diǎn)/終點(diǎn)的結(jié)構(gòu)。4)數(shù)據(jù)流圖中的數(shù)據(jù)存儲(chǔ),以及數(shù)據(jù)的源點(diǎn)/終點(diǎn),通常是對(duì)象模練習(xí)題填空題:1、用面向?qū)ο蠓椒ㄩ_(kāi)發(fā)軟件,通常需要建立3種形式的模型即(
)、(
)和功能模型。2、用面向?qū)ο蠓椒▽W(xué)開(kāi)發(fā)軟件過(guò)程,是一個(gè)主動(dòng)地多次反復(fù)迭代的(
)。傳統(tǒng)方法學(xué)強(qiáng)調(diào)(
)順序地完成軟件開(kāi)發(fā)的各階段任務(wù)。練習(xí)題填空題:名詞解釋:1、對(duì)象2、類(lèi)3、封裝4、繼承5、多態(tài)性6、重載名詞解釋:簡(jiǎn)答題:1、簡(jiǎn)述面向?qū)ο蠓椒▽W(xué)的出發(fā)點(diǎn)和基本原則?2、面向?qū)ο蠓椒ǖ?個(gè)要點(diǎn)?3、與傳統(tǒng)結(jié)構(gòu)化方法相比較面向?qū)ο蠓椒▽W(xué)的優(yōu)點(diǎn)?4、對(duì)象的5個(gè)基本特點(diǎn)?簡(jiǎn)答題:第9章:面向?qū)ο蠓椒▽W(xué)引論9.1面向?qū)ο蠓椒▽W(xué)概述9.1.1面向?qū)ο蠓椒▽W(xué)的要點(diǎn)面向?qū)ο蠓椒▽W(xué)的基本原則:盡可能模擬人類(lèi)習(xí)慣的思維方式,使開(kāi)發(fā)軟件的方法與過(guò)程盡可能接近人類(lèi)認(rèn)識(shí)世界解決問(wèn)題的方法與過(guò)程。第9章:面向?qū)ο蠓椒▽W(xué)引論9.1面向?qū)ο蠓椒▽W(xué)概述客觀世界中的實(shí)體——問(wèn)題域中的對(duì)象;計(jì)算機(jī)中的實(shí)體——解空間對(duì)象;解空間對(duì)象取決于程序設(shè)計(jì)語(yǔ)言:匯編語(yǔ)言的對(duì)象:存儲(chǔ)單元;面向過(guò)程的高級(jí)語(yǔ)言的對(duì)象:變量、數(shù)組、記錄、文件等;面向?qū)ο蟮母呒?jí)語(yǔ)言的對(duì)象:除上述元素外,還包括窗體、菜單、按鈕、等等??陀^世界中的實(shí)體——問(wèn)題域中的對(duì)象;與傳統(tǒng)方法不同,面向?qū)ο蠓椒ㄒ詳?shù)據(jù)為主線,將數(shù)據(jù)和操作方法封裝在對(duì)象中,通過(guò)消息請(qǐng)求對(duì)象主動(dòng)執(zhí)行它的內(nèi)部操作,改變其內(nèi)部私有數(shù)據(jù)。與傳統(tǒng)方法不同,面向?qū)ο蠓椒ㄒ詳?shù)據(jù)為主線,將數(shù)據(jù)和操面向?qū)ο蠓椒ň哂兴膫€(gè)要點(diǎn):
A.認(rèn)為客觀世界是由對(duì)象組成;
B.把所有對(duì)象都劃分成各種對(duì)象類(lèi)(Class);C.把若干對(duì)象類(lèi)組成一個(gè)層次結(jié)構(gòu)的系統(tǒng)(類(lèi)等級(jí));
D.對(duì)象彼此間僅通過(guò)傳遞消息互相聯(lián)系。
OO=Objects+Class+Inheritance+Communicationwithmessage面向?qū)ο蠓椒ň哂兴膫€(gè)要點(diǎn):9.1.2面向?qū)ο蠓椒ǖ膬?yōu)點(diǎn)1.與人們習(xí)慣的思維方法一致;2.穩(wěn)定性好;3.可重用性好;4.較易開(kāi)發(fā)大型軟件產(chǎn)品;5.可維護(hù)性好。9.1.2面向?qū)ο蠓椒ǖ膬?yōu)點(diǎn)9.1.3噴泉模型9.1.3噴泉模型9.2面向?qū)ο蟮母拍?.2.1對(duì)象1、對(duì)象的形象表示狀態(tài)S操作1操作2操作3界面操作1、2、3的實(shí)現(xiàn)圖9.2對(duì)象的形象表示9.2面向?qū)ο蟮母拍?.2.1對(duì)象1、對(duì)象的形象1)定義1:對(duì)象是具有相同狀態(tài)的一組操作的集合。2)定義2:對(duì)象是對(duì)屬性值和操作的封裝。3)定義3:對(duì)象::=<ID,MS,DS,MI>其中,ID是對(duì)象的名字;MS是對(duì)象中的操作集合;DS是對(duì)象的數(shù)據(jù)集合;MI是對(duì)象受理的消息名集合(即對(duì)外接口)。2、對(duì)象的定義1)定義1:對(duì)象是具有相同狀態(tài)的一組操作的集合。2、對(duì)象的定狀態(tài)S操作:f1,f2,…,fn轉(zhuǎn)換:g1,g2,…,gn圖9.3用自動(dòng)機(jī)模擬對(duì)象轉(zhuǎn)換:新?tīng)顟B(tài)S’=gi(X,S)輸出fi(X,S)輸入fi,X狀態(tài)S操作:f1,f2,…,fn轉(zhuǎn)換:g1,g2,3、對(duì)象的特點(diǎn)1)以數(shù)據(jù)為中心;2)對(duì)象是主動(dòng)的;3)實(shí)現(xiàn)了數(shù)據(jù)封裝;4)本質(zhì)上具有并行性;5)模塊獨(dú)立性好。3、對(duì)象的特點(diǎn)9.2.2其他概念1、類(lèi)(Class)
類(lèi)就是對(duì)具有相同數(shù)據(jù)和相同操作的一組相似對(duì)象的定義。如:Circle類(lèi)具有相同的數(shù)據(jù)(圓心坐標(biāo)、半徑、顏色)和相同的操作(顯示自己、放大縮小半徑、在屏幕上移動(dòng)位置)。9.2.2其他概念1、類(lèi)(Class)又如:下面C++語(yǔ)言定義的Queue類(lèi),可用于實(shí)現(xiàn)一個(gè)隊(duì)列(即先進(jìn)先出的表):
ClassQueue{intq[100];intsloc,rloc;public:voidinit();//成員函數(shù)
voidqput(inti);intqget();};又如:下面C++語(yǔ)言定義的Queue類(lèi),可用于實(shí)現(xiàn)一類(lèi)有私有變量(Private)和公有變量(Public)。
缺省時(shí),都屬于私有的,只能由類(lèi)內(nèi)部其他成員來(lái)訪問(wèn),不能由程序的其他部分來(lái)訪問(wèn)。這是一種實(shí)現(xiàn)封裝的方法。
類(lèi)有私有變量(Private)和公有變量(Public)
實(shí)例就是由某個(gè)特定的類(lèi)所描述的一個(gè)具體的對(duì)象。如:Circlea;//聲明Circle類(lèi)實(shí)例aQueueQ1,Q2;//聲明Queue類(lèi)實(shí)例Q1和Q22、實(shí)例(Instance)實(shí)例就是由某個(gè)特定的類(lèi)所描述的一個(gè)具體的對(duì)象。2、實(shí)消息就是用來(lái)請(qǐng)求對(duì)象執(zhí)行某個(gè)處理或回答某些信息的要求。消息既可以是數(shù)據(jù)流,也可以是控制流。一條消息可以發(fā)送給不同的對(duì)象,對(duì)消息的解釋完全由接收信息的對(duì)象來(lái)完成,不同的對(duì)象對(duì)相同形式的消息可以有不同的解釋。
3、消息(Message)消息就是用來(lái)請(qǐng)求對(duì)象執(zhí)行某個(gè)處理或回答某些信息的要求與傳統(tǒng)程序的“調(diào)用/返回”所不同的是,對(duì)于傳來(lái)的消息,對(duì)象可以返回相應(yīng)的回答信息,也可以不返回。一個(gè)消息由三個(gè)部分組成:1)接收信息的對(duì)象;2)信息選擇符(即消息名);3)零個(gè)或多個(gè)變?cè)▍?shù))。如:MyCircle.Show(GREEN);與傳統(tǒng)程序的“調(diào)用/返回”所不同的是,對(duì)于傳來(lái)的消息4、方法(Method)
方法,是對(duì)象所能執(zhí)行的操作。
C++中把方法稱為成員函數(shù),如Circle類(lèi)中定義的成員函數(shù):Show(intcolor)4、方法(Method)5、屬性(Attribute)
屬性,是類(lèi)中定義的數(shù)據(jù)。
C++中把屬性稱為數(shù)據(jù)成員。5、屬性(Attribute)6、封裝(encapsulation)
封裝就是信息隱藏,通過(guò)封裝對(duì)外界隱藏了對(duì)象的實(shí)現(xiàn)細(xì)節(jié)。6、封裝(encapsulation)7、繼承(Inheritance)繼承,是指能夠直接獲得已有的性質(zhì)和特征,而不必重復(fù)定義它們。A的操作A的變量類(lèi)AA的實(shí)例變量從A的繼承特性B的操作B的變量類(lèi)B繼承來(lái)的A的實(shí)例變量B的實(shí)例變量類(lèi)AA的實(shí)例a1B的實(shí)例b1類(lèi)B:A的子類(lèi)圖9.4實(shí)現(xiàn)繼承機(jī)制的原理7、繼承(Inheritance)繼承,是指能夠直接獲8、多態(tài)性(Polymorphism)
多態(tài)性,指子類(lèi)對(duì)象可以象父類(lèi)對(duì)象那樣使用,同樣的消息既可以發(fā)送給父類(lèi)對(duì)象,也可以發(fā)送給子類(lèi)對(duì)象。即不同等級(jí)的類(lèi),可以公用一個(gè)方法的名字。
C++中,多態(tài)性是通過(guò)虛函數(shù)來(lái)實(shí)現(xiàn)的。在不同層次的類(lèi)中,虛函數(shù)實(shí)現(xiàn)算法不同,在運(yùn)行時(shí)根據(jù)接收消息的對(duì)象所屬于的類(lèi)來(lái)決定執(zhí)行虛函數(shù)的版本,稱為動(dòng)態(tài)聯(lián)編。8、多態(tài)性(Polymorphism)9、重載(Overloading)有兩種重載:1)函數(shù)重載指在同一作用域內(nèi)的若干個(gè)參數(shù)特征不同的函數(shù)可以使用相同的函數(shù)名字。如:Show(inta,intb)Show(intx)Show(intx,inty,intz)C++語(yǔ)言中函數(shù)重載是通過(guò)靜態(tài)聯(lián)編實(shí)現(xiàn)的。即編譯時(shí)根據(jù)函數(shù)變?cè)膫€(gè)數(shù)和類(lèi)型,決定函數(shù)版本。9、重載(Overloading)2)運(yùn)算符重載指同一運(yùn)算符可以施加于不同類(lèi)型的操作數(shù)上面。當(dāng)被操作數(shù)類(lèi)型不同時(shí),運(yùn)算符的含義是不同的。編譯時(shí)根據(jù)被操作數(shù)的類(lèi)型,決定使用算符的哪種語(yǔ)義。2)運(yùn)算符重載另外,在實(shí)現(xiàn)一個(gè)類(lèi)成員函數(shù)時(shí),必須通過(guò)用類(lèi)名限定函數(shù)名來(lái)告訴編譯器這個(gè)函數(shù)屬于哪個(gè)類(lèi)。如,編寫(xiě)qput()函數(shù):
VoidQueue::qput(inti){if(sloc==100){cout<<“Queueiffull”;return;}sloc++;q[sloc]=i;}另外,在實(shí)現(xiàn)一個(gè)類(lèi)成員函數(shù)時(shí),必須通過(guò)用類(lèi)名限定函數(shù)從程序中調(diào)用一個(gè)類(lèi)的成員函數(shù),用對(duì)象和點(diǎn)運(yùn)算符。如:
Queueob1,ob2;ob1.init();//是對(duì)對(duì)象ob1的初始化函數(shù)init()的調(diào)用
ob1,ob2之間的唯一關(guān)系是它們是同一類(lèi)對(duì)象。ob1的初始化不影響ob2。從程序中調(diào)用一個(gè)類(lèi)的成員函數(shù),用對(duì)象和點(diǎn)運(yùn)算符。如:用面向?qū)ο蠓椒ㄩ_(kāi)發(fā)軟件,通常需要建立三種形式的模型,它們分別是:(1)對(duì)象模型:描述系統(tǒng)的數(shù)據(jù)結(jié)構(gòu);(2)動(dòng)態(tài)模型:描述系統(tǒng)的控制結(jié)構(gòu);(3)功能模型:描述系統(tǒng)的功能。
3種模型必不可少,其重要程度不同,對(duì)象模型是最基本、最重要的。9.3面向?qū)ο蠼S妹嫦驅(qū)ο蠓椒ㄩ_(kāi)發(fā)軟件,通常需要建立三種形式的模型,UML(UnifiedModelingLanguage)
UML是面向?qū)ο蟮姆治雠c設(shè)計(jì)(OOA&D)方法發(fā)展的產(chǎn)物。
UML(UnifiedModelingLanguage)公認(rèn)的面向?qū)ο蠼UZ(yǔ)言出現(xiàn)于70年代中期。
90年代中,一批新方法出現(xiàn)了,其中最引人注目的是Booch1993、OOSE和OMT-2等。1.標(biāo)準(zhǔn)建模語(yǔ)言UML的出現(xiàn)公認(rèn)的面向?qū)ο蠼UZ(yǔ)言出現(xiàn)于70年代中期。1.標(biāo)準(zhǔn)眾多的建模語(yǔ)言各有優(yōu)點(diǎn),大多類(lèi)同,但仍存在某些細(xì)微的差別,妨礙了用戶之間的交流。統(tǒng)一建模語(yǔ)言在這樣的背景下產(chǎn)生。眾多的建模語(yǔ)言各有優(yōu)點(diǎn),大多類(lèi)同,但仍存在某些細(xì)微的1995年10月:第一個(gè)公開(kāi)版本UM0.8(UnifiedMethod)。1996年6月:UM改名為UML(UnifiedModelingLanguage),發(fā)布UML0.9。1996年底:UML占面向?qū)ο蠹夹g(shù)市場(chǎng)的85%,成為可視化建模語(yǔ)言事實(shí)上的工業(yè)標(biāo)準(zhǔn)?,F(xiàn)最新版本:UML2.01995年10月:第一個(gè)公開(kāi)版本UM0.8(Uni
UML是標(biāo)準(zhǔn)的建模語(yǔ)言,而不是標(biāo)準(zhǔn)的開(kāi)發(fā)過(guò)程。在不同組織和不同應(yīng)用領(lǐng)域,UML應(yīng)用需采取不同的開(kāi)發(fā)過(guò)程。1998年:RUP(RationalUnifiedProcess)是一種典型的建模過(guò)程。2.標(biāo)準(zhǔn)建模語(yǔ)言UML的內(nèi)容UML是標(biāo)準(zhǔn)的建模語(yǔ)言,而不是標(biāo)準(zhǔn)的開(kāi)發(fā)過(guò)程。2.UML的定義包括UML語(yǔ)義和UML表示法兩部分。UML的重要內(nèi)容可以由五類(lèi)圖(9種圖形)來(lái)定義:1)用例圖:從用戶角度描述系統(tǒng)功能,并指出各功能UML的定義包括UML語(yǔ)義和UML表示法兩部分。UML的重要2)靜態(tài)圖:包括類(lèi)圖、對(duì)象圖和包圖;類(lèi)圖2)靜態(tài)圖:包括類(lèi)圖、對(duì)象圖和包圖;類(lèi)圖2)靜態(tài)圖:包括類(lèi)圖、對(duì)象圖和包圖;對(duì)象圖包圖2)靜態(tài)圖:包括類(lèi)圖、對(duì)象圖和包圖;對(duì)象圖包圖3)行為圖:描述系統(tǒng)的動(dòng)態(tài)模型;4)交互圖:描述對(duì)象間的交互關(guān)系;交互圖3)行為圖:描述系統(tǒng)的動(dòng)態(tài)模型;交互圖5)實(shí)現(xiàn)圖:如配置圖,定義系統(tǒng)中軟硬件的物理體系結(jié)構(gòu)。5)實(shí)現(xiàn)圖:如配置圖,定義系統(tǒng)中軟硬件的物理體系結(jié)構(gòu)。3.標(biāo)準(zhǔn)建模語(yǔ)言UML的應(yīng)用領(lǐng)域
UML適用于軟件開(kāi)發(fā)中從需求分析到測(cè)試的不同階段:
需求獲?。河美龍D、活動(dòng)圖
需求分析:類(lèi)圖、對(duì)象圖和包圖
系統(tǒng)分析與設(shè)計(jì):狀態(tài)圖、順序圖、合作圖、活動(dòng)圖、部件圖和配置圖。
測(cè)試:?jiǎn)卧獪y(cè)試用類(lèi)圖、集成測(cè)試用部件圖和合作圖、確認(rèn)測(cè)試用用例圖等。3.標(biāo)準(zhǔn)建模語(yǔ)言UML的應(yīng)用領(lǐng)域UML適用于軟件開(kāi)UML常用于建立軟件系統(tǒng)模型,但同樣可用于描述非軟件領(lǐng)域的系統(tǒng),如:機(jī)械系統(tǒng);企業(yè)機(jī)構(gòu)或業(yè)務(wù)過(guò)程;處理復(fù)雜數(shù)據(jù)的信息系統(tǒng);具有實(shí)時(shí)要求的工業(yè)系統(tǒng)或工業(yè)過(guò)程;
…等。UML常用于建立軟件系統(tǒng)模型,但同樣可用于描述非軟件9.4對(duì)象模型9.4.1類(lèi)圖的基本符號(hào)1.定義類(lèi)類(lèi)名屬性服務(wù)圖9.5表示類(lèi)的圖形符號(hào)9.4對(duì)象模型9.4.1類(lèi)圖的基本符號(hào)類(lèi)名屬性服務(wù)圖2.定義屬性
UML描述屬性的語(yǔ)法格式:
可見(jiàn)性屬性名:類(lèi)型名=初值{性質(zhì)串}可見(jiàn)性:公有(public)/+、私有(private)/-、保護(hù)(protected)/#(沒(méi)有默認(rèn)可見(jiàn)性)
{性質(zhì)串}:可能枚舉值或其它性質(zhì),如{只讀}
例:-管理員:String=“未定”類(lèi)變量實(shí)例:-貨單數(shù):Integer(類(lèi)變量在該類(lèi)所有對(duì)象中的屬性值相等)2.定義屬性3.定義服務(wù)(操作)
UML描述操作的語(yǔ)法格式:
可見(jiàn)性操作名(參數(shù)表):返回值類(lèi)型{性質(zhì)串}參數(shù)的語(yǔ)法:
參數(shù)名:類(lèi)型名=默認(rèn)值-Show(x:integer=0,y:integer,z:integer):integer3.定義服務(wù)(操作)9.4.2表示關(guān)系的符號(hào)1.關(guān)聯(lián)
1)普通關(guān)聯(lián)作家計(jì)算機(jī)使用被使用*1…*圖9.6普通關(guān)聯(lián)示例9.4.2表示關(guān)系的符號(hào)作家計(jì)算機(jī)使用被使用*1…*圖9重?cái)?shù)(multiplicity)的表示方法:
0…1表示0到1個(gè)對(duì)象;0…*或*表示0到多個(gè)對(duì)象;1+或1…*表示1到多個(gè)對(duì)象;1…15表示1到15個(gè)對(duì)象;3表示3個(gè)對(duì)象。重?cái)?shù)(multiplicity)的表示方法:2)關(guān)聯(lián)的角色人結(jié)婚丈夫妻子圖9.7關(guān)聯(lián)的角色上圖是一個(gè)遞歸關(guān)聯(lián)的例子。這種情況下,標(biāo)明角色名有助于理解類(lèi)圖。2)關(guān)聯(lián)的角色人結(jié)婚丈夫妻子圖9.7關(guān)聯(lián)的角色上圖是一3)限定關(guān)聯(lián)目錄文件文件名圖9.8限定關(guān)聯(lián)目錄文件保存被保存1…*普通關(guān)聯(lián)利用限定詞把一對(duì)多關(guān)系簡(jiǎn)化成了一對(duì)一關(guān)系。3)限定關(guān)聯(lián)目錄文件文件名圖9.8限定關(guān)聯(lián)目錄文件保存4)關(guān)聯(lián)類(lèi)隊(duì)列電梯控制器電梯按鈕4*圖9.9關(guān)聯(lián)類(lèi)示例控制器對(duì)象和電梯對(duì)象之間的連接,對(duì)應(yīng)著一個(gè)隊(duì)列(對(duì)象),它存儲(chǔ)著控制器和電梯內(nèi)部按鈕的請(qǐng)求信息。4)關(guān)聯(lián)類(lèi)隊(duì)列電梯控制器電梯按鈕4*圖9.9關(guān)聯(lián)類(lèi)示例聚集表示類(lèi)與類(lèi)之間是整體與部分的關(guān)系。2.聚集1)共享聚集課題組人成員*1…*圖9.10共享聚集示例處于部分方的對(duì)象可同時(shí)參與多個(gè)處于整體方對(duì)象的構(gòu)成。聚集表示類(lèi)與類(lèi)之間是整體與部分的關(guān)系。2.聚集1)共部分類(lèi)完全隸屬于整體類(lèi),部分與整體共存,整體不存在了部分也隨之消失。2)組合聚集部分類(lèi)完全隸屬于整體類(lèi),部分與整體共存,整體不存在了教材描繪教材結(jié)構(gòu)的對(duì)象模型(組合聚集)封面前言1+1+目錄章節(jié)習(xí)題包含包含例子:教材描繪教材結(jié)構(gòu)的對(duì)象模型(組合聚集)封面前言1+1+目錄章3.泛化(繼承)
1)普通泛化抽象類(lèi):描述子類(lèi)的公共屬性和行為,不能生成具體對(duì)象的類(lèi)。3.泛化(繼承)抽象類(lèi):描述子類(lèi)的公共屬性和行為,不能生一個(gè)比較復(fù)雜的類(lèi)圖示例:一個(gè)比較復(fù)雜的類(lèi)圖示例:2)受限泛化給泛化關(guān)系(繼承關(guān)系)附加約束條件,說(shuō)明該泛化關(guān)系的使用方法和擴(kuò)充方法。約束有:多重、不相交、完全和不完全。2)受限泛化多重繼承:一個(gè)子類(lèi)可以同時(shí)多次繼承同一個(gè)上層基類(lèi)。不相交繼承:一個(gè)子類(lèi)不能多次繼承同一個(gè)上層基類(lèi)。(默認(rèn)為不相交繼承)多重繼承:一個(gè)子類(lèi)可以同時(shí)多次繼承同一個(gè)上層基類(lèi)。不相交繼承
完全繼承:指父類(lèi)的所有子類(lèi)都已經(jīng)在類(lèi)圖中窮舉出來(lái)了。
不完全繼承:指父類(lèi)的所有子類(lèi)并沒(méi)有在類(lèi)圖中窮舉出來(lái)了。隨著對(duì)問(wèn)題理解的深入,不完全繼承中可以不斷擴(kuò)充子類(lèi)。(默認(rèn)為不完全繼承)完全繼承:指父類(lèi)的所有子類(lèi)都已經(jīng)在類(lèi)圖中窮舉出來(lái)了。4.依賴和細(xì)化
1)依賴關(guān)系類(lèi)B類(lèi)A《友元》圖9.15友元依賴關(guān)系描述兩個(gè)模型元素(類(lèi)、用例)之間的關(guān)系,其中一個(gè)模型元素是獨(dú)立的(被箭頭指),另一個(gè)依賴于獨(dú)立的模型元素。如,一個(gè)類(lèi)使用另一個(gè)類(lèi)的對(duì)象作為自己的函數(shù)的參數(shù)。(友元:依賴類(lèi)可以使用獨(dú)立類(lèi)中私有的或保護(hù)的成員)4.依賴和細(xì)化類(lèi)B類(lèi)A《友元》圖9.15友元依賴關(guān)系2)細(xì)化關(guān)系分析類(lèi)設(shè)計(jì)類(lèi)圖9.16細(xì)化關(guān)系示例細(xì)化用來(lái)協(xié)調(diào)不同階段模型之間的關(guān)系,表示各個(gè)開(kāi)發(fā)階段不同抽象層次模型之間的相關(guān)性,通常用于跟蹤模型的演變。2)細(xì)化關(guān)系分析類(lèi)設(shè)計(jì)類(lèi)圖9.16細(xì)化關(guān)系示例細(xì)例子:公司員工名字電話號(hào)碼主要產(chǎn)品地址雇傭解雇姓名地址身份證號(hào)碼工資1+職務(wù)部門(mén)名部門(mén)工人經(jīng)理0…1管理產(chǎn)品產(chǎn)品名成本重量項(xiàng)目項(xiàng)目名預(yù)算優(yōu)先級(jí)生產(chǎn)1+主持參加1+1+1+一家公司的對(duì)象模型組成例子:
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 語(yǔ)言變異對(duì)教育的影響-洞察分析
- 閱讀教學(xué)中的審美教育-洞察分析
- 《報(bào)表管理系統(tǒng)概述》課件
- 《市場(chǎng)營(yíng)銷(xiāo)策劃講義》課件
- 養(yǎng)殖合同范本(2篇)
- 2024年滬教版五年級(jí)英語(yǔ)下冊(cè)階段測(cè)試試卷
- 2025年滬教版一年級(jí)語(yǔ)文上冊(cè)階段測(cè)試試卷含答案
- 園林景觀設(shè)計(jì)管理M變更管理實(shí)施
- 2024年滬教版選擇性必修3英語(yǔ)上冊(cè)階段測(cè)試試卷
- 2025年外研版高三地理下冊(cè)月考試卷含答案
- 東華醫(yī)院信息平臺(tái)解決方案-藥房流程接口
- 通力電梯KCE電氣系統(tǒng)學(xué)習(xí)指南
- 風(fēng)電場(chǎng)崗位任職資格考試題庫(kù)大全-下(填空題2-2)
- 九年級(jí)數(shù)學(xué)特長(zhǎng)生選拔考試試題
- 幼兒園交通安全宣傳課件PPT
- 門(mén)窗施工組織設(shè)計(jì)與方案
- 健身健美(課堂PPT)
- (完整版)財(cái)務(wù)管理學(xué)課后習(xí)題答案-人大版
- 錨索試驗(yàn)總結(jié)(共11頁(yè))
- 移動(dòng)腳手架安全交底
- 人教版“課標(biāo)”教材《統(tǒng)計(jì)與概率》教學(xué)內(nèi)容、具體目標(biāo)和要求
評(píng)論
0/150
提交評(píng)論