版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
軟件工程(SoftwareEngineering)軟件學(xué)院李玉蓉第9章:面向?qū)ο蠓椒▽W(xué)引論9.1面向?qū)ο蠓椒▽W(xué)概述9.1.1面向?qū)ο蠓椒▽W(xué)的要點(diǎn)面向?qū)ο蠓椒▽W(xué)的基本原則:盡可能模擬人類習(xí)慣的思維方式,使開(kāi)發(fā)軟件的方法與過(guò)程盡可能接近人類認(rèn)識(shí)世界解決問(wèn)題的方法與過(guò)程??陀^世界中的實(shí)體——問(wèn)題域中的對(duì)象;計(jì)算機(jī)中的實(shí)體——解空間對(duì)象;解空間對(duì)象取決于程序設(shè)計(jì)語(yǔ)言:匯編語(yǔ)言的對(duì)象:存儲(chǔ)單元;面向過(guò)程的高級(jí)語(yǔ)言的對(duì)象:變量、數(shù)組、記錄、文件等;面向?qū)ο蟮母呒?jí)語(yǔ)言的對(duì)象:除上述元素外,還包括窗體、菜單、按鈕、等等。與傳統(tǒng)方法不同,面向?qū)ο蠓椒ㄒ詳?shù)據(jù)為主線,將數(shù)據(jù)和操作方法封裝在對(duì)象中,通過(guò)消息請(qǐng)求對(duì)象主動(dòng)執(zhí)行它的內(nèi)部操作,改變其內(nèi)部私有數(shù)據(jù)。面向?qū)ο蠓椒ň哂兴膫€(gè)要點(diǎn):
A.認(rèn)為客觀世界是由對(duì)象組成;
B.把所有對(duì)象都劃分成各種對(duì)象類(Class);C.把若干對(duì)象類組成一個(gè)層次結(jié)構(gòu)的系統(tǒng)(類等級(jí));
D.對(duì)象彼此間僅通過(guò)傳遞消息互相聯(lián)系。
OO=Objects+Class+Inheritance+Communicationwithmessage9.1.2面向?qū)ο蠓椒ǖ膬?yōu)點(diǎn)1.與人們習(xí)慣的思維方法一致;2.穩(wěn)定性好;3.可重用性好;4.較易開(kāi)發(fā)大型軟件產(chǎn)品;5.可維護(hù)性好。9.2面向?qū)ο蟮母拍?.2.1對(duì)象1、對(duì)象的形象表示狀態(tài)S操作1操作2操作3界面操作1、2、3的實(shí)現(xiàn)圖9.2對(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ì)象的定義3、對(duì)象的特點(diǎn)1)以數(shù)據(jù)為中心;2)對(duì)象是主動(dòng)的;3)實(shí)現(xiàn)了數(shù)據(jù)封裝;4)本質(zhì)上具有并行性;5)模塊獨(dú)立性好。9.2.2其他概念1、類(Class)
類就是對(duì)具有相同數(shù)據(jù)和相同操作的一組相似對(duì)象的定義。如:Circle類具有相同的數(shù)據(jù)(圓心坐標(biāo)、半徑、顏色)和相同的操作(顯示自己、放大縮小半徑、在屏幕上移動(dòng)位置)。又如:下面C++語(yǔ)言定義的Queue類,可用于實(shí)現(xiàn)一個(gè)隊(duì)列(即先進(jìn)先出的表):
ClassQueue{intq[100];intsloc,rloc;public:voidinit();//成員函數(shù)
voidqput(inti);intqget();};類有私有變量(Private)和公有變量(Public)。
缺省時(shí),都屬于私有的,只能由類內(nèi)部其他成員來(lái)訪問(wèn),不能由程序的其他部分來(lái)訪問(wèn)。這是一種實(shí)現(xiàn)封裝的方法。
實(shí)例就是由某個(gè)特定的類所描述的一個(gè)具體的對(duì)象。如:Circlea;//聲明Circle類實(shí)例aQueueQ1,Q2;//聲明Queue類實(shí)例Q1和Q22、實(shí)例(Instance)消息就是用來(lái)請(qǐng)求對(duì)象執(zhí)行某個(gè)處理或回答某些信息的要求。消息既可以是數(shù)據(jù)流,也可以是控制流。一條消息可以發(fā)送給不同的對(duì)象,對(duì)消息的解釋完全由接收信息的對(duì)象來(lái)完成,不同的對(duì)象對(duì)相同形式的消息可以有不同的解釋。
3、消息(Message)與傳統(tǒng)程序的“調(diào)用/返回”所不同的是,對(duì)于傳來(lái)的消息,對(duì)象可以返回相應(yīng)的回答信息,也可以不返回。一個(gè)消息由三個(gè)部分組成:1)接收信息的對(duì)象;2)信息選擇符(即消息名);3)零個(gè)或多個(gè)變?cè)▍?shù))。如:MyCircle.Show(GREEN);4、方法(Method)
方法,是對(duì)象所能執(zhí)行的操作。
C++中把方法稱為成員函數(shù),如Circle類中定義的成員函數(shù):Show(intcolor)5、屬性(Attribute)
屬性,是類中定義的數(shù)據(jù)。
C++中把屬性稱為數(shù)據(jù)成員。6、封裝(encapsulation)
封裝就是信息隱藏,通過(guò)封裝對(duì)外界隱藏了對(duì)象的實(shí)現(xiàn)細(xì)節(jié)。7、繼承(Inheritance)繼承,是指能夠直接獲得已有的性質(zhì)和特征,而不必重復(fù)定義它們。A的操作A的變量類AA的實(shí)例變量從A的繼承特性B的操作B的變量類B繼承來(lái)的A的實(shí)例變量B的實(shí)例變量類AA的實(shí)例a1B的實(shí)例b1類B:A的子類圖9.4實(shí)現(xiàn)繼承機(jī)制的原理8、多態(tài)性(Polymorphism)
多態(tài)性,指子類對(duì)象可以象父類對(duì)象那樣使用,同樣的消息既可以發(fā)送給父類對(duì)象,也可以發(fā)送給子類對(duì)象。即不同等級(jí)的類,可以公用一個(gè)方法的名字。
C++中,多態(tài)性是通過(guò)虛函數(shù)來(lái)實(shí)現(xiàn)的。在不同層次的類中,虛函數(shù)實(shí)現(xiàn)算法不同,在運(yùn)行時(shí)根據(jù)接收消息的對(duì)象所屬于的類來(lái)決定執(zhí)行虛函數(shù)的版本,稱為動(dòng)態(tài)聯(lián)編。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ù)和類型,決定函數(shù)版本。2)運(yùn)算符重載指同一運(yùn)算符可以施加于不同類型的操作數(shù)上面。當(dāng)被操作數(shù)類型不同時(shí),運(yùn)算符的含義是不同的。編譯時(shí)根據(jù)被操作數(shù)的類型,決定使用算符的哪種語(yǔ)義。另外,在實(shí)現(xiàn)一個(gè)類成員函數(shù)時(shí),必須通過(guò)用類名限定函數(shù)名來(lái)告訴編譯器這個(gè)函數(shù)屬于哪個(gè)類。如,編寫(xiě)qput()函數(shù):
VoidQueue::qput(inti){if(sloc==100){cout<<“Queueiffull”;return;}sloc++;q[sloc]=i;}從程序中調(diào)用一個(gè)類的成員函數(shù),用對(duì)象和點(diǎn)運(yùn)算符。如:
Queueob1,ob2;ob1.init();//是對(duì)對(duì)象ob1的初始化函數(shù)init()的調(diào)用
ob1,ob2之間的唯一關(guān)系是它們是同一類對(duì)象。ob1的初始化不影響ob2。用面向?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ū)ο蠼ML(UnifiedModelingLanguage)
UML是面向?qū)ο蟮姆治雠c設(shè)計(jì)(OOA&D)方法發(fā)展的產(chǎn)物。
公認(rèn)的面向?qū)ο蠼UZ(yǔ)言出現(xiàn)于70年代中期。
90年代中,一批新方法出現(xiàn)了,其中最引人注目的是Booch1993、OOSE和OMT-2等。1.標(biāo)準(zhǔn)建模語(yǔ)言UML的出現(xiàn)眾多的建模語(yǔ)言各有優(yōu)點(diǎn),大多類同,但仍存在某些細(xì)微的差別,妨礙了用戶之間的交流。統(tǒng)一建模語(yǔ)言在這樣的背景下產(chǎn)生。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)。現(xiàn)最新版本:UML2.0
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)容31UML的構(gòu)成32事物構(gòu)造塊事物構(gòu)造塊是對(duì)模型中最具有代表性的成分的抽象,表示系統(tǒng)中的元素結(jié)構(gòu)事物:UML中的名詞,它是模型的靜態(tài)部分,描述概念或物理元素。行為事物:UML中的動(dòng)詞,它是模型中的動(dòng)態(tài)部分,是一種跨越時(shí)間、空間的行為。分組事物:UML中的容器,用來(lái)組織模型,使模型更加的結(jié)構(gòu)化。注釋事務(wù):UML中的解釋部分,和代碼中的注釋語(yǔ)句一樣,是用來(lái)描述模型的。33結(jié)構(gòu)事物類(class)和對(duì)象(object)接口(interface)構(gòu)件(component)34類和對(duì)象類是對(duì)一組具有相同屬性、相同操作、相同關(guān)系和相同語(yǔ)義的對(duì)象的共同特征的抽象。UML中類是用一個(gè)矩形方框表示的,它包含三個(gè)區(qū)域,最上面是類名、中間是類的屬性、最下面是類的方法對(duì)象則是類的一個(gè)實(shí)例對(duì)象名類名冒號(hào)圖形位置顏色Draw()圖形A:圖形35
接口——接口是描述某個(gè)類或構(gòu)件的一個(gè)服務(wù)操作集?!涌诿枋隽艘粋€(gè)元素的外部可見(jiàn)行為。
UML符號(hào)36接口37構(gòu)件構(gòu)件也稱組件,是指系統(tǒng)設(shè)計(jì)中的一個(gè)相對(duì)獨(dú)立的軟件部件。構(gòu)件是系統(tǒng)設(shè)計(jì)的一個(gè)模塊化部分,它把功能實(shí)現(xiàn)部分隱藏在內(nèi)部,對(duì)外提供了一組外部接口。因此,兩個(gè)具有相同接口的構(gòu)件可以相互替換。
構(gòu)件名稱UML1.0習(xí)慣用法UML2.0習(xí)慣用法
構(gòu)件名稱38節(jié)點(diǎn)為了能夠有效地對(duì)部署的結(jié)構(gòu)進(jìn)行建模,UML引入了節(jié)點(diǎn)這一概念,它可以用來(lái)描述實(shí)際的PC機(jī)、打印機(jī)、服務(wù)器等軟件運(yùn)行的基礎(chǔ)硬件。節(jié)點(diǎn)是運(yùn)行時(shí)存在的物理元素,通常至少有存儲(chǔ)空間和處理能力。
Server
節(jié)點(diǎn)Server的表示方法39行為事物交互(interaction): 是在特定語(yǔ)境中,共同完成某個(gè)任務(wù)的一組對(duì)象之間交換的信息集合。交互的表示法很簡(jiǎn)單,就是一條有向直線,并在上面標(biāo)有操作名。40行為事物狀態(tài)機(jī)(statemachine):是一個(gè)對(duì)象或交互在生命周期內(nèi)響應(yīng)事件所經(jīng)歷的狀態(tài)序列在UML模型中將狀態(tài)畫(huà)為一個(gè)圓角矩形,并在矩形內(nèi)寫(xiě)出狀態(tài)名。等待
“等待”狀態(tài)的表示方法41分組事物對(duì)于一個(gè)中大型的軟件系統(tǒng)而言,通常會(huì)包含大量的類,因此也就會(huì)存在大量的結(jié)構(gòu)事物、行為事物,為了能夠更加有效地對(duì)其進(jìn)行整合,就需要對(duì)其進(jìn)行分組。在UML中,提供了“包(Package)”來(lái)實(shí)現(xiàn)這一目標(biāo)。
數(shù)據(jù)訪問(wèn)
“數(shù)據(jù)訪問(wèn)”包的表示方法42分組事物43注釋事物注釋是依附于一個(gè)元素或一組元素之上,對(duì)其進(jìn)行約束或解釋的簡(jiǎn)單符號(hào)。
注釋符號(hào)44關(guān)聯(lián)關(guān)系關(guān)聯(lián)是一種結(jié)構(gòu)關(guān)系,它描述了一組對(duì)象之間的連接。關(guān)聯(lián)兩端的類可以某種角色參與關(guān)聯(lián)
?角色是關(guān)聯(lián)中靠近它的一端的類對(duì)另一端的類呈現(xiàn)的職責(zé);
?如果關(guān)聯(lián)上沒(méi)有標(biāo)出角色名,則隱含地用類的名稱作為角色名。關(guān)聯(lián)具有多重性
?多重性表示可以有多少個(gè)對(duì)象參與該關(guān)聯(lián)
?固定值:3
?許多值:n或者*
?區(qū)間:0..1或者3..n
?集合:2,4,845關(guān)聯(lián)關(guān)系46關(guān)聯(lián)關(guān)系關(guān)聯(lián)(Association)表示兩個(gè)類之間存在某種語(yǔ)義上的聯(lián)系。關(guān)聯(lián)關(guān)系提供了通信的路徑,它是所有關(guān)系中最通用、語(yǔ)義最弱的。在UML中,使用一條實(shí)線來(lái)表示關(guān)聯(lián)關(guān)系操作屬性類1類2屬性操作關(guān)聯(lián)關(guān)系人雇傭公司人雇主公司1雇員n47關(guān)聯(lián)關(guān)系在關(guān)聯(lián)關(guān)系中,有兩種比較特殊的關(guān)系:聚合和組合聚合關(guān)系:聚合(Aggregation)是一種特殊形式的關(guān)聯(lián)。聚合表示類之間的關(guān)系是整體與部分的關(guān)系。如果發(fā)現(xiàn)“部分”類的存在,是完全依賴于“整體”類的,那么就應(yīng)該使用“組合”關(guān)系來(lái)描述。聚合關(guān)系計(jì)算機(jī)主機(jī)顯示器咖啡桌桌面桌腿48泛化、實(shí)現(xiàn)、擴(kuò)展與依賴泛化關(guān)系描述了一般事物與該事物中的特殊種類之間的關(guān)系,也就是父類與子類之間的關(guān)系。實(shí)現(xiàn)關(guān)系是用來(lái)規(guī)定接口和實(shí)現(xiàn)接口的類或組件之間的關(guān)系。接口是操作的集合,這些操作用于規(guī)定類或組件的服務(wù)。擴(kuò)展表示將一個(gè)構(gòu)造型附加到一個(gè)元類(metaclass)上,使得元類的定義中包括這個(gè)構(gòu)造型。有兩個(gè)元素X、Y,如果修改元素X的定義可能會(huì)引起對(duì)另一個(gè)元素Y的定義的修改,則稱元素Y依賴(Dependency)于元素X。49父類屬性操作子類泛化關(guān)系屬性操作車公交車密碼驗(yàn)證智能卡驗(yàn)證身份驗(yàn)證注冊(cè)用戶圖書(shū)管理員普通讀者包與包之間也存在泛化關(guān)系。泛化、實(shí)現(xiàn)、擴(kuò)展與依賴50泛化、實(shí)現(xiàn)、擴(kuò)展與依賴類屬性操作choice組件類屬性操作實(shí)現(xiàn)關(guān)系51泛化、實(shí)現(xiàn)、擴(kuò)展與依賴driver.dllIDriverpath.dll類A屬性操作類B屬性操作Interface52泛化、實(shí)現(xiàn)、擴(kuò)展與依賴類1屬性操作add(c:course)remove(c:course)Schedulecourse驗(yàn)證讀者《include》《include》查詢讀者查詢圖書(shū)登記借書(shū)《extend》《extend》登記借書(shū)登記還書(shū)類2屬性操作依賴關(guān)系use53UML圖形分類54常用UML圖用例圖類圖狀態(tài)圖順序圖UsecaseSequenceClass(Simple)StateCollaborationClass(Complex)ObjectActivityRequirementRequirement階段Analysis階段Design階段55用例圖用例圖是外部參與者所能觀察到的系統(tǒng)功能的模型圖。由一組用例、參與者及它們之間的關(guān)系組成。主要用于對(duì)系統(tǒng)、子系統(tǒng)或類的功能行為進(jìn)行建模。參與者是與系統(tǒng)交互的外部實(shí)體,可以是人,也可以是其它系統(tǒng)。用例是從用戶的角度描述系統(tǒng)的行為(功能),它將系統(tǒng)的功能描述成一系列事件,這些事件最終對(duì)參與者產(chǎn)生可觀察結(jié)果。56參與者、用例間的關(guān)系類型關(guān)系類型說(shuō)明表示符號(hào)關(guān)聯(lián)參與者和用例間的關(guān)系泛化參與者之間或用例之間的關(guān)系包含用例之間的關(guān)系<<include>>擴(kuò)展用例之間的關(guān)系<<extend>>
用例圖57驗(yàn)證讀者《include》《include》查詢讀者查詢圖書(shū)登記借書(shū)《extend》《extend》登記借書(shū)登記還書(shū)密碼驗(yàn)證智能卡驗(yàn)證身份驗(yàn)證58用例圖確定參與者方法:誰(shuí)使用系統(tǒng)的主要功能?誰(shuí)需要系統(tǒng)支持他們的日常工作?誰(shuí)來(lái)維護(hù)、管理使系統(tǒng)正常工作?系統(tǒng)需要操縱哪些硬件?系統(tǒng)需要與哪些其它系統(tǒng)交互,包含其它計(jì)算機(jī)系統(tǒng)和其它應(yīng)用程序?59用例圖確定用例方法參與者要求系統(tǒng)提供哪些功能?參與者需要做什么?參與者需要讀取、產(chǎn)生、刪除、修改或存儲(chǔ)的某些信息嗎?。必須提醒參與者的系統(tǒng)事件有哪些?或者參與者必須提醒系統(tǒng)的事件有哪些?系統(tǒng)需要的輸入、輸出信息是什么?這些信息怎么來(lái)?其它特殊要求如何滿足?60用例圖的建立確定系統(tǒng)參與者及其關(guān)系確定用例及關(guān)系編寫(xiě)用例描述用例圖61用例圖示例62類圖表示系統(tǒng)中類、協(xié)作(類或?qū)ο箝g的協(xié)作)、接口及其關(guān)系的圖。類圖中的關(guān)系包括:關(guān)聯(lián)、泛化、依賴、實(shí)現(xiàn)。63類圖類的劃分:邊界類:參與者與系統(tǒng)之間的交互實(shí)體類:系統(tǒng)中存儲(chǔ)和管理的永久信息控制類:系統(tǒng)運(yùn)行中的業(yè)務(wù)控制邏輯64類圖邊界類實(shí)體類《boundary》類名類名《control》類名控制類類名《entity》類名類名65類圖在軟件開(kāi)發(fā)的不同階段使用的類圖具有不同的抽象層次,一般類圖可分為三個(gè)層次,概念層、說(shuō)明層、實(shí)現(xiàn)層。概念層類圖:概念層類圖中類內(nèi)只有類名。通常用在需求分析階段,該階段類圖是研究應(yīng)用領(lǐng)域的概念。66類圖說(shuō)明層類圖:在設(shè)計(jì)階段,用說(shuō)明層類圖描述類與類之間的接口。在說(shuō)明層類中有屬性和方法,但沒(méi)有屬性的類型說(shuō)明和方法的參數(shù)與返回類型。實(shí)現(xiàn)層類圖:在實(shí)現(xiàn)階段,類圖描述軟件系統(tǒng)中類的實(shí)現(xiàn)。67類圖尋找類的技巧根據(jù)用例描述中的名詞確定類的侯選者。使用CRC(class,responsibility,collaboration)分析法尋找類。根據(jù)類所扮演的職責(zé)來(lái)確定類。根據(jù)邊界類、控制類、實(shí)體類的劃分來(lái)幫助發(fā)現(xiàn)系統(tǒng)中的類。68類圖類圖的建立(可以有多種方式)分析問(wèn)題領(lǐng)域,確定用到的類。確定類的含義、職責(zé)、確定屬性、操作。確定類之間的聯(lián)系。細(xì)化、調(diào)整已經(jīng)得到類之間的關(guān)系,并增加相應(yīng)說(shuō)明。69類圖示例先看清有哪些類,然后看看類之間存在的關(guān)系,并結(jié)合多重性來(lái)理解類圖的結(jié)構(gòu)特點(diǎn)以及各個(gè)屬性和方法的含義70讀圖過(guò)程讀出類:圖中共有7個(gè)類,Order、OrderItem、Customer、Consignee、DeliverOrder、Peddlery、Prodcut讀出關(guān)系:從圖中關(guān)系最復(fù)雜(也就是線最密集)的類開(kāi)始閱讀,本圖中最復(fù)雜的就是Order類。
1)OrderItem和Order之間是組合關(guān)系,根據(jù)箭頭的方向可知Order包含了OrderItem。
2)Order類和Customer、Consignee、DeliverOrder是關(guān)聯(lián)關(guān)系。也就是說(shuō),一個(gè)訂單和客戶、收貨人、送貨單是相關(guān)的。7172讀圖過(guò)程多重性:用來(lái)說(shuō)明關(guān)聯(lián)的兩個(gè)類之間的數(shù)量關(guān)系
源類及多重性目標(biāo)類及多重性分析Customer(1)Order(0…n)訂單是屬于某個(gè)客戶的,網(wǎng)站的客戶可以有0個(gè)或多個(gè)訂單Order(1)Consignee(1)每個(gè)訂單只能夠有一個(gè)收貨人Order(1)OrderItem(1…n)訂單是由訂單項(xiàng)組成的,至少要有一個(gè)訂單項(xiàng),最多可以有n個(gè)Order(1)DeliverOrder(1…n)一個(gè)訂單有一個(gè)或多個(gè)送貨單說(shuō)明:系統(tǒng)根據(jù)訂單項(xiàng)的產(chǎn)品所屬的商戶,將其分發(fā)給商戶,拆成了多個(gè)送貨單!DeliverOrder(1)OrderItem(1…n)一張送貨單對(duì)應(yīng)訂單中的一到多個(gè)訂單項(xiàng)DeliverOrder(1)Consignee(1)每張送貨單都對(duì)應(yīng)著一個(gè)收貨人Peddlery(1)DeliverOrder(0…n)每個(gè)商戶可以有相關(guān)的0個(gè)或多個(gè)送貨單OrderItem(1)Product(1)每個(gè)訂單項(xiàng)中都包含著唯一的一個(gè)產(chǎn)品Peddlery(1)Prodcut(0…n)產(chǎn)品是屬于某個(gè)商戶的,可以注冊(cè)0到多個(gè)產(chǎn)品7374讀圖過(guò)程—理解方法與圖Order類,有兩個(gè)方法:dispatch()和close(),從名字中可以猜出它們分別實(shí)現(xiàn)“分拆訂單生成送貨單”和“完成訂單”。而在DeliveOrder()類中則有一個(gè)Close()方法,同理它應(yīng)該表示“完成送貨”。而在OrderItem中有一個(gè)stateChange()方法和deliverState,不難猜出它就是用來(lái)改變其“是否交給收貨人”的標(biāo)志位。先調(diào)用Order的dispatch()方法,它將根據(jù)其包含的OrderItem中產(chǎn)品信息,來(lái)按供應(yīng)商戶分拆成若干個(gè)DeliverOrder。商戶登錄系統(tǒng)后就可以獲取其DeliverOrder,并在執(zhí)行完后調(diào)用close()方法。這時(shí),就將調(diào)用OrderItem的stateChange()方法來(lái)改為其狀態(tài)。同時(shí)再調(diào)用Order的close()方法,判斷該Order的所有的OrderItem是否都已經(jīng)送到了,如果是就將其真正close()掉75順序圖又稱時(shí)序圖,描述對(duì)象按照時(shí)間順序的消息交換,顯示參與交互的對(duì)象及對(duì)象之間消息的交互順序。順序圖用來(lái)描述用例的實(shí)現(xiàn),表明了由哪些對(duì)象通過(guò)消息相互協(xié)作來(lái)實(shí)現(xiàn)用例的功能。在用例圖中,標(biāo)識(shí)了消息發(fā)生交互的先后順序。76順序圖建模元素:對(duì)象、生命線、控制焦點(diǎn)(激活)、消息。:Driver:CarOper()對(duì)象生命線控制焦點(diǎn)消息(調(diào)用)77順序圖順序圖描述的是對(duì)象之間的消息發(fā)送關(guān)系,而不是類之間的關(guān)系。在順序圖中并不包括系統(tǒng)中的所有類的對(duì)象。也有可能某些對(duì)象屬于同一個(gè)類。78順序圖順序圖的建立(可以有多種方式)確定交互過(guò)程的上下文。識(shí)別參與交互過(guò)程的對(duì)象。為每個(gè)對(duì)象設(shè)置生命線,即確定哪些對(duì)象存在于整個(gè)交互過(guò)程中,哪些對(duì)象在交互過(guò)程中被創(chuàng)建和撤銷。79順序圖從引發(fā)這個(gè)交互過(guò)程的初始消息開(kāi)始,在生命線之間從頂?shù)较乱来萎?huà)出隨后的各個(gè)消息。如果需要表示消息的嵌套,或/和表示消息發(fā)生時(shí)的時(shí)間點(diǎn),則采用控制焦點(diǎn)。如果需要說(shuō)明時(shí)間約束,則在消息旁邊加上約束說(shuō)明。如果需要,可以為每個(gè)消息附上前置和后置條件。80順序圖81循環(huán)與分支82狀態(tài)圖狀態(tài)是指在對(duì)象生命周期中滿足某些條件、執(zhí)行某些活動(dòng)或等待某些事件的一個(gè)條件和狀況。狀態(tài)機(jī)圖常用來(lái)描述業(yè)務(wù)或軟件系統(tǒng)中的對(duì)象在外部事件的作用下,對(duì)象的狀態(tài)從一種狀態(tài)到另一種狀態(tài)的控制流。狀態(tài)機(jī)圖的組成元素:初始狀態(tài)、終止?fàn)顟B(tài)、狀態(tài)和轉(zhuǎn)換,其中,轉(zhuǎn)換將各種狀態(tài)連接在一起,構(gòu)成一個(gè)狀態(tài)圖。83最簡(jiǎn)單的狀態(tài)圖核心元素:一個(gè)是用圓角矩形表示的狀態(tài)(初態(tài)和終態(tài)例外);另一個(gè)是在狀態(tài)之間的、包含一些文字描述的有向箭頭,這些箭頭稱為轉(zhuǎn)換。燒水器的狀態(tài)圖84轉(zhuǎn)換的五要素源狀態(tài):即受轉(zhuǎn)換影響的狀態(tài)目標(biāo)狀態(tài):當(dāng)轉(zhuǎn)換完成后對(duì)象的狀態(tài)觸發(fā)事件:外部作用于一個(gè)對(duì)象,能夠觸發(fā)對(duì)象狀態(tài)改變的一種現(xiàn)象。包括調(diào)用、改變、信號(hào)、時(shí)間四類事件。監(jiān)護(hù)條件:布爾表達(dá)式,決定是否激活轉(zhuǎn)換、動(dòng)作:轉(zhuǎn)換激活時(shí)的操作85讀圖小結(jié)與狀態(tài)off相關(guān)的轉(zhuǎn)換有兩個(gè),其觸發(fā)事件都是turnOn,只不過(guò)其監(jiān)護(hù)條件不同。如果對(duì)象收到事件turnOn,那么將判斷壺中是否有水;如果[沒(méi)水],則仍然處于off狀態(tài);如果[有水]則轉(zhuǎn)為on狀態(tài),并執(zhí)行“燒水”動(dòng)作而與狀態(tài)on相關(guān)的轉(zhuǎn)換也有兩個(gè),如果“水開(kāi)了”就執(zhí)行turnOff,關(guān)掉開(kāi)關(guān);如果燒壞了,就進(jìn)入了終態(tài)了86繪制狀態(tài)機(jī)圖繪制狀態(tài)機(jī)圖的理想步驟是:尋找主要的狀態(tài),確定狀態(tài)之間的轉(zhuǎn)換,細(xì)化狀態(tài)內(nèi)的活動(dòng)與轉(zhuǎn)換,用復(fù)合狀態(tài)來(lái)展開(kāi)細(xì)節(jié)。尋找主要狀態(tài):對(duì)于航班機(jī)票預(yù)訂系統(tǒng)而言,包括的狀態(tài)主要有:
--在剛確定飛機(jī)計(jì)劃時(shí),顯然是沒(méi)有任何預(yù)訂的,并且在有人預(yù)訂機(jī)票之前都將處于這種“無(wú)預(yù)訂”狀態(tài)
--對(duì)訂座而言顯然有“部分預(yù)訂”和“預(yù)訂完”兩種狀態(tài)
--而當(dāng)航班快要起飛時(shí),顯然要“預(yù)訂關(guān)閉”
總結(jié)一下,主要有四種狀態(tài):無(wú)預(yù)訂、部分預(yù)訂、預(yù)訂完以及預(yù)訂關(guān)閉87確定狀態(tài)間轉(zhuǎn)換源目標(biāo)無(wú)預(yù)訂部分預(yù)訂預(yù)訂完預(yù)訂關(guān)閉無(wú)預(yù)訂預(yù)訂()不直接轉(zhuǎn)換關(guān)閉()部分預(yù)訂退訂(),使預(yù)訂人=0預(yù)訂(),無(wú)空座關(guān)閉()預(yù)訂完不直接轉(zhuǎn)換退訂()關(guān)閉()預(yù)訂關(guān)閉無(wú)轉(zhuǎn)換無(wú)轉(zhuǎn)換無(wú)轉(zhuǎn)換88繪制狀態(tài)機(jī)圖細(xì)化狀態(tài)內(nèi)的活動(dòng)與轉(zhuǎn)換89繪制狀態(tài)機(jī)圖使用復(fù)合狀態(tài)90活動(dòng)圖活動(dòng)圖和交互圖是UML中對(duì)系統(tǒng)動(dòng)態(tài)方面建模的兩種主要形式交互圖強(qiáng)調(diào)的是對(duì)象到對(duì)象的控制流,而活動(dòng)圖則強(qiáng)調(diào)的是從活動(dòng)到活動(dòng)的控制流活動(dòng)圖是一種表述過(guò)程基理、業(yè)務(wù)過(guò)程以及工作流的技術(shù)。它可以用來(lái)對(duì)業(yè)務(wù)過(guò)程、工作流建模,也可以對(duì)用例實(shí)現(xiàn)甚至是程序?qū)崿F(xiàn)來(lái)建模91閱讀簡(jiǎn)單活動(dòng)圖92活動(dòng)圖的主要元素初始節(jié)點(diǎn)和活動(dòng)終點(diǎn):用一個(gè)實(shí)心圓表示初始節(jié)點(diǎn),用一個(gè)圓圈內(nèi)加一個(gè)實(shí)心圓來(lái)表示活動(dòng)終點(diǎn)活動(dòng)節(jié)點(diǎn):是活動(dòng)圖中最主要的元素之一,它用來(lái)表示一個(gè)活動(dòng)轉(zhuǎn)換:當(dāng)一個(gè)活動(dòng)結(jié)束時(shí),控制流就會(huì)馬上傳遞給下一個(gè)活動(dòng)節(jié)點(diǎn),在活動(dòng)圖中稱之為“轉(zhuǎn)換”,用一條帶箭頭的直線來(lái)表示93活動(dòng)圖的主要元素分支與監(jiān)護(hù)條件:分支是用菱形表示的,它有一個(gè)進(jìn)入轉(zhuǎn)換(箭頭從外指向分支符號(hào)),
一個(gè)或多個(gè)離開(kāi)轉(zhuǎn)換(箭頭從分支符
號(hào)指向外)。而每個(gè)離開(kāi)轉(zhuǎn)換上都會(huì)
有一個(gè)監(jiān)護(hù)條件,用來(lái)表示滿足什么
條件的時(shí)候執(zhí)行該轉(zhuǎn)換。分岔與匯合:94修改后的簡(jiǎn)單活動(dòng)圖95帶泳道的活動(dòng)圖96帶對(duì)象流的活動(dòng)圖97繪制活動(dòng)圖“活動(dòng)圖”比較直觀易懂;與傳統(tǒng)的流程圖十分的相近,只要能夠讀懂活動(dòng)圖,就不難畫(huà)出活動(dòng)圖繪制時(shí)首先決定是否采用泳道:主要根據(jù)活動(dòng)圖中是否要體現(xiàn)出活動(dòng)的不同實(shí)施者然后盡量使用分支、分岔和匯合等基本的建模元素來(lái)描述活動(dòng)控制流程如果需要,加入對(duì)象流以及對(duì)象的狀態(tài)變化,利用一些高級(jí)的建模元素(如輔助活動(dòng)圖、匯合描述、發(fā)送信號(hào)與接收信號(hào)、引腳、擴(kuò)展區(qū))來(lái)表示更多的信息活動(dòng)圖的建模關(guān)鍵是表示出控制流,其它的建模元素都是圍繞這一宗旨所進(jìn)行的補(bǔ)充98部署圖99閱讀基本部署圖100部署圖的主要元素節(jié)點(diǎn):它代表一個(gè)運(yùn)行時(shí)的計(jì)算資源,例如一臺(tái)計(jì)算機(jī)、一個(gè)工作站等其它設(shè)備節(jié)點(diǎn)的概念和構(gòu)件有許多相同之處,例如二者有多名稱,都可以參與依賴、泛化和關(guān)聯(lián)關(guān)系,都可以被嵌套,都可以有實(shí)例,都可以參與交互。但它們之間也存在明顯的區(qū)別:構(gòu)件是參與系統(tǒng)執(zhí)行的事物,而節(jié)點(diǎn)是執(zhí)行構(gòu)件的事物;構(gòu)件表示邏輯元素的物理打包,而節(jié)點(diǎn)表示構(gòu)件的物理部署本圖中建模了四個(gè)節(jié)點(diǎn):B/S客戶端、C/S客戶端、IIS服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器101部署圖的主要元素連接:節(jié)點(diǎn)之間最常見(jiàn)的關(guān)系就是關(guān)聯(lián)關(guān)系(用一根實(shí)線表示)。為了更好地表示兩個(gè)節(jié)點(diǎn)之間的關(guān)系,我們可以通過(guò)“約束”來(lái)對(duì)連接進(jìn)行描述。源節(jié)點(diǎn)目標(biāo)節(jié)點(diǎn)約束含義B/S客戶端IIS服務(wù)器{HTTP+Network}網(wǎng)絡(luò)連接,使用HTTP協(xié)議C/S客戶端IIS服務(wù)器{HTTP+SOAP+Network}網(wǎng)絡(luò)連接,通過(guò)WebService訪問(wèn)服務(wù)IIS服務(wù)器數(shù)據(jù)庫(kù)服務(wù)器{ADO.NET}.NET提供的數(shù)據(jù)庫(kù)訪問(wèn)解決方案102部署圖的補(bǔ)充元素處理器(《process》):具有處理能力的節(jié)點(diǎn),即可以執(zhí)行構(gòu)件設(shè)備(《device》):沒(méi)有處理能力的節(jié)點(diǎn),至少是不關(guān)心其處理能力的節(jié)點(diǎn)。例如打印機(jī)、IC卡讀寫(xiě)器,如果我們的系統(tǒng)不考慮它們內(nèi)部的芯片,就可建模為設(shè)備節(jié)點(diǎn)屬性和操作:可以為一個(gè)節(jié)點(diǎn)提供處理器速度、內(nèi)存容量、網(wǎng)卡數(shù)量等屬性,可以為其提供啟動(dòng)、關(guān)機(jī)等操作103部署圖的補(bǔ)充元素自定義構(gòu)造型圖標(biāo)104確定所需的節(jié)點(diǎn)和節(jié)點(diǎn)間的連接關(guān)系IC卡讀卡器:提供給員工刷卡用,它將收集刷卡的時(shí)間信息,傳給應(yīng)用系統(tǒng),并存入數(shù)據(jù)庫(kù)中應(yīng)用服務(wù)器:用來(lái)負(fù)責(zé)從IC卡讀卡器中收集信息,并對(duì)管理人員提供員工設(shè)置、考勤查詢等功能數(shù)據(jù)庫(kù)服務(wù)器:用來(lái)存儲(chǔ)考勤數(shù)據(jù),由于該系統(tǒng)比較小,因此在物理上可以與應(yīng)用服務(wù)器合并客戶端軟件:提供給管理人員使用,連接應(yīng)用服務(wù)器,完成相應(yīng)操作105根據(jù)實(shí)現(xiàn)描述節(jié)點(diǎn)客戶端:需使用Windows操作系統(tǒng),安裝客戶端軟件(假設(shè)名為KaoQing.exe)服務(wù)器:包含一個(gè)用Delphi開(kāi)發(fā)的服務(wù)端軟件(設(shè)為KqServer.exe),它需要與Access數(shù)據(jù)庫(kù)交互(設(shè)為KaoQing.mdb),并且需要通過(guò)IC卡讀卡器的驅(qū)動(dòng)程序(假設(shè)名為cardReader.dll)來(lái)實(shí)現(xiàn)與IC卡讀卡器通信IC卡讀寫(xiě)器:對(duì)于本系統(tǒng)而言,它是不執(zhí)行構(gòu)件的設(shè)備,不過(guò)為了方便員工,安裝了3個(gè)。106作業(yè)解答教材購(gòu)銷系統(tǒng)主要功能根據(jù)學(xué)校的教學(xué)計(jì)劃,向選課的學(xué)生及時(shí)供應(yīng)所需教材
①審查學(xué)生購(gòu)書(shū)單有效性,對(duì)有效書(shū)單發(fā)售教材
②對(duì)屬于計(jì)劃供應(yīng)但暫時(shí)缺貨的教材進(jìn)行登記根據(jù)缺書(shū)登記補(bǔ)充采購(gòu)所缺的教材,通知學(xué)生補(bǔ)購(gòu)
①將缺書(shū)登記表匯總為待購(gòu)教材計(jì)劃②待購(gòu)教材到貨后,及時(shí)通知學(xué)生補(bǔ)購(gòu)107采購(gòu)進(jìn)書(shū)通知產(chǎn)生補(bǔ)售書(shū)單
1.6學(xué)生F1教材存量表開(kāi)發(fā)票
1.2登記售書(shū)和打印領(lǐng)書(shū)單
1.4有效購(gòu)書(shū)單暫缺書(shū)單登記缺書(shū)
1.5補(bǔ)售書(shū)單購(gòu)書(shū)單F2缺書(shū)登記表審查有效性
1.1無(wú)效書(shū)單學(xué)生F3學(xué)生用書(shū)表F4售書(shū)登記表打印發(fā)票
1.3發(fā)票發(fā)票領(lǐng)書(shū)單108進(jìn)書(shū)通知
2.1按書(shū)號(hào)匯總書(shū)庫(kù)保管員F1教材存量表按出版社匯總
2.2修改教材庫(kù)存和待購(gòu)量
2.3銷售F5待購(gòu)教材表F6教材一覽表缺書(shū)單F2缺書(shū)登記表進(jìn)書(shū)通知109使用SD方法給出教材購(gòu)銷系統(tǒng)中銷售子系統(tǒng)的軟件結(jié)構(gòu)圖.細(xì)化并修改DFD圖110產(chǎn)生補(bǔ)售書(shū)單
1.6學(xué)生F1教材存量表開(kāi)發(fā)票
1.2登記售書(shū)
1.4有效購(gòu)書(shū)單暫缺書(shū)單登記缺書(shū)
1.5補(bǔ)售書(shū)單購(gòu)書(shū)單F2缺書(shū)登記表審查有效性
1.1無(wú)效書(shū)單學(xué)生F3學(xué)生用書(shū)表F4售書(shū)登記表打印發(fā)票
1.3發(fā)票發(fā)票領(lǐng)書(shū)單打印領(lǐng)書(shū)單
1.7F7進(jìn)書(shū)登記表111
2.1按書(shū)號(hào)匯總書(shū)庫(kù)保管員F1教材存量表按出版社匯總
2.2修改教材庫(kù)存和待購(gòu)量
2.3F5待購(gòu)教材表F6教材一覽表缺書(shū)單F2缺書(shū)登記表進(jìn)書(shū)通知F7進(jìn)書(shū)登記表112
1.6學(xué)生F1
1.2
1.4
1.5F2
1.1學(xué)生F3F4
1.3
1.7F7++113銷售初售補(bǔ)售審查有效性開(kāi)發(fā)票售書(shū)登記缺書(shū)登記售書(shū)打印發(fā)票打印領(lǐng)書(shū)單產(chǎn)生補(bǔ)售書(shū)單獲得有效性購(gòu)書(shū)單獲得補(bǔ)售書(shū)單114
1.語(yǔ)句覆蓋:
X=85,Y=85(路徑A-E);X=95,Y=50(路徑B-C-E);X=75,Y=75(路徑B-D-E);習(xí)題五參考答案判斷1判斷2條件1條件2條件3條件4條件51152.判斷覆蓋:
X=85,Y=85(判斷1成立,判斷2不成立)A-E;X=95,Y=50(判斷1不成立,判斷2成立)B-C-E;X=75,Y=75(判斷1、判斷2都不成立)B-D-E;3.條件覆蓋:
X=85,Y=85(判斷1兩條件成立)A-E;
X=95,Y=50(判斷2中條件3、條件4成立)B-C-E;X=50,Y=90(判斷2中條件3、條件5成立)B-C-E;
X=60,Y=60(判斷1、判斷2各個(gè)條件都不成立)B-D-E;116
4.判斷/條件覆蓋:
X=85,Y=85(判斷1為Y且兩條件成立)A-E;X=95,Y=50(判斷2為Y且條件3、條件4成立)B-C-E;X=50,Y=95(判斷2為Y且條件3、條件5成立)B-C-E;X=60,Y=60(判斷1、判斷2為N且各個(gè)條件都不成立)B-D-E;117T2T3T45.條件組合覆蓋:本題有5個(gè)條件,分別記為T4T3T5T1T2T5T1對(duì)第一個(gè)判斷,有下列情況:T1T2(1)T1T2T1T2T2T1(2)(3)(4)對(duì)第二個(gè)判斷,有下列情況:T3T4T5T4T3T5T3
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- JJF(陜) 070-2021 螺紋深度規(guī)校準(zhǔn)規(guī)范
- JJF(陜) 021-2020 萬(wàn)用量規(guī)校準(zhǔn)規(guī)范
- 幼兒園小班探索未來(lái)的活動(dòng)計(jì)劃
- 《信用證種類》課件
- 社團(tuán)活動(dòng)的數(shù)字化轉(zhuǎn)型探索計(jì)劃
- 護(hù)理部患者安全管理措施計(jì)劃
- 班級(jí)自主管理的實(shí)施案例研究計(jì)劃
- 少先隊(duì)大隊(duì)委員競(jìng)選講義模板
- 《設(shè)備的開(kāi)孔和附》課件
- 《酒店企業(yè)文化培訓(xùn)》課件
- 未來(lái)當(dāng)兵職業(yè)生涯規(guī)劃書(shū)
- 帶狀皰疹中醫(yī)護(hù)理
- BOSS GT-6效果處理器中文說(shuō)明書(shū)
- 網(wǎng)絡(luò)安全培訓(xùn)
- 期末試題-2024-2025學(xué)年人教PEP版英語(yǔ)六年級(jí)上冊(cè) (含答案)
- 【事業(yè)單位考試真題】《綜合基礎(chǔ)知識(shí)》必看考點(diǎn)《刑法》(2021年版)(附答案解析)
- 2025蛇年元旦蛇年新年晚會(huì)模板
- 大學(xué)生職業(yè)規(guī)劃大賽成長(zhǎng)賽道
- 第三單元(整體教學(xué)設(shè)計(jì))七年級(jí)語(yǔ)文上冊(cè)大單元教學(xué)名師備課系列(統(tǒng)編版2024)
- 魯教版五四制初中八年級(jí)化學(xué)全一冊(cè)全套教案
- 【大單元整體教學(xué)】教科版科學(xué)五年級(jí)上冊(cè)-第一單元《光》第1課有關(guān)光的思考-單元整體分析+課時(shí)公開(kāi)課一
評(píng)論
0/150
提交評(píng)論