版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第3章類圖和對象圖第3章類圖和對象圖1§3.1類及其表示
一、類的定義“類”是面向?qū)ο笾邢到y(tǒng)組織結(jié)構(gòu)的核心。它是對一組具有相同屬性、行為、關(guān)系和語義的事物的抽象。這些事物包括了現(xiàn)實世界中的物理實體、邏輯事物、應(yīng)用事物、行為事物和甚至純粹的概念事物等。在UML中“類”被表述成具有相似結(jié)構(gòu)、行為和關(guān)系的一組對象的描述符,所用的屬性和操作都被附加在類中。“類”的圖形表示如下:類名屬性操作§3.1類及其表示一、類的定義類名2其中:1.在UML中類的命名分simplename和pathname兩種形式如:simplename:ClassApathname:Package1::ClassB2.屬性基本格式:[可見性]屬性名[:類型][=初始值]如:+name:string-age:integer#max:integer=1003.方法基本格式:[可見性]方法名[(參數(shù)列表)][:返回類型]如:+pa():boolean說明:在ROSE中+、–、#分別采用直觀的圖形符號來表示注:C++中三種不同的繼承方式的基類和派生類特性參見下表:公有(public)保護(hù)(protected)私有(private)公有(public)繼承+(public)#(protected)×私有(private)繼承-(private)-(private)×保護(hù)(protected)繼承#(protected)#(protected)×其中:注:C++中三種不同的繼承方式的基類和派生類特性參見下3例如:
4.在ROSE中類有三種表達(dá)方式:選中類圖標(biāo)(菜單項的)FormatSuppressAttributes/Opration(制止屬性/操作)例如:4.在ROSE中類有三種表達(dá)方式:選中類圖標(biāo)(菜4說明:ROSE中可見性有以下4種:公有(Public)+受保護(hù)(Protected)#私有(Private)–包內(nèi)公有(Package)~分別采用空白、鑰匙、鎖和榔頭表示。例如:注意:Option-->ShowVisibility:顯示/隱藏可見性。例如:
說明:ROSE中可見性有以下4種:注意:Option-->S5軟件開發(fā)方法與技術(shù)(靜態(tài)模型—類圖對象圖)課件6
二、類的種類及一些符號表示(1)邊界類(BoundaryClass)邊界類:代表了系統(tǒng)和系統(tǒng)外的一些實體(人或設(shè)備)之間的交互的類,它是系統(tǒng)與外界交換信息的媒介,并將系統(tǒng)與系統(tǒng)環(huán)境中的變化隔離開來。例如:窗口、報表、打印機、掃描儀等硬件的界面邊界類UML符號表示有如下3種:二、類的種類及一些符號表示7邊界類在Sterotype(構(gòu)造型)中的設(shè)置:邊界類在Sterotype(構(gòu)造型)中的設(shè)置:8(2)實體類(EntityClass)實體類:是模擬必須被永久存儲的信息和關(guān)聯(lián)行為的類如:文件、數(shù)據(jù)庫等
UML符號表示有如下3種:注:實體類的設(shè)置參照邊界類的設(shè)置,即Sterotype(Entity)(2)實體類(EntityClass)注:實體類的設(shè)置參9
其中:控制類所提供的行為具有以下特點:①確定用例中的控制邏輯(事件順序)和事務(wù)②使用或規(guī)定若干實體類的內(nèi)容,協(xié)調(diào)這些實體類的行為
說明:①每個用例通常有一個控制類,控制用例中的事件順序②控制類一般可采用窗體(Forms)/對話框(Dialog)來實現(xiàn)(3)控制類(ControlClass)控制類:是用來為特定于一個或幾個用例的控制行為的類??刂祁怳ML符號表示有如下3種:注:控制類的設(shè)置參照邊界類的設(shè)置,即Sterotype(Control)其中:控制類所提供的行為具有以下特點:(3)控制類(Co10(4)接口(Interface)是兩個不相關(guān)的實體(系統(tǒng)或構(gòu)件)提供交流途徑的設(shè)備(一組操作的集合
)
其UML符號表示有如下:
作用:幫助類圖中的類與其他系統(tǒng)或組件或外部設(shè)備進(jìn)行通信。注:接口的設(shè)置參照邊界類的設(shè)置,即Sterotype(Interface)(4)接口(Interface)作用:幫助類圖中的類與其11§3.2類圖(ClassDiagram)
一、類圖的定義類圖是描述類、接口、協(xié)作以及它們之間關(guān)系的圖,用來顯示系統(tǒng)的靜態(tài)結(jié)構(gòu)。
其中:協(xié)作(Collaboration):一個用例或一組用例的工作(實現(xiàn))視圖。協(xié)作的UML符號表示用Stereotype是
use-caserealization類型的用例來表示如下:§3.2類圖(ClassDiagram)一、類圖的12一個協(xié)作包含以下3部分:(1)名稱(2)結(jié)構(gòu)部分:一般用類圖來描述,說明共同工作完成協(xié)作的類、接口和其它元素(3)行為部分:說明關(guān)于這些元素如何交互的動態(tài)特征可用UML的交互圖來描述:順序圖:強調(diào)消息的時間順序協(xié)作圖:強調(diào)對象之間的結(jié)構(gòu)順序
說明:協(xié)作包含的視圖通過在“協(xié)作”的Specification(規(guī)格)→Diagrams(圖)視窗中點擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇插入注:協(xié)作視圖的建立參見下圖。一個協(xié)作包含以下3部分:注:協(xié)作視圖的建立參見下圖。13軟件開發(fā)方法與技術(shù)(靜態(tài)模型—類圖對象圖)課件14二、關(guān)系:
?依賴(Dependence)表示兩個模型元素之間的語義(借用目標(biāo)元素的功能,而不是結(jié)構(gòu))關(guān)系,它說明一個模型元素的變化可能影響到使用它的另一個模型元素。
例如:設(shè)X、Y是兩個類,如果修改Y的定義可能會導(dǎo)致對X的修改,則稱類X依賴類Y。依賴關(guān)系圖形表示為:例如:充電電池和充電器,充電電池通過充電器來充電自行車和打氣筒,自行車通過打氣筒來充氣則Bicycle類與Pump類的類圖:二、關(guān)系:例如:充電電池和充電器,充電電池通過充電器來充電15classCPeople//人類{public:CBicyclemyBicycle;CPumpmyPump;voidPumpToBicycle(){myBicycle.Expand(&myPump);}}
說明:依賴關(guān)系在實現(xiàn)中,目標(biāo)對象不出現(xiàn)在源對象的屬性結(jié)構(gòu)中,通常采用目標(biāo)對象作為源對象方法的參數(shù)來使用。例如,上例的模擬實現(xiàn)代碼為:classCBicycle//自行車類classCPump//打氣筒類{{public:/*給輪胎充氣*/public:/*打氣筒充氣*/
voidExpand(CPump*Pp)voidBlow(){{Pp->Blow();//使用該打氣筒給自行車充氣
}}}}classCPeople//人類說明:classCBi16classCPump//打氣筒類{public:/*打氣筒充氣*/
voidBlow(){
printf("
%s\n","…使用該打氣筒給自行車充氣…");}}
#include"stdafx.h"#include"People.h"intmain(){CPeoplePbe;Pbe.PumpToBicycle();return0;}編寫主函數(shù)main()如下:
如果把CPump類改寫成:運行結(jié)果classCPump//打氣筒類#include"17?泛化(Generalization)同前是一般到特殊之間的關(guān)系(派生/繼承關(guān)系)
說明:泛化關(guān)系是在現(xiàn)有類的基礎(chǔ)上定義和實現(xiàn)一個新類的技術(shù)(復(fù)用技術(shù))。泛化關(guān)系圖形表示為:例如:即:?泛化(Generalization)例如:即:18C++描述如下:
classCAutomobile{……}classCCar:CAutomobile{……}classCLorry:CAutomobile{……}C++描述如下:classCAutomobi19關(guān)聯(lián)關(guān)系(Association)關(guān)聯(lián)關(guān)系表示兩個類之間“結(jié)構(gòu)+語義(行為)”的關(guān)系
其圖形表示為:雙向關(guān)聯(lián)單向關(guān)聯(lián)
例如:關(guān)聯(lián)關(guān)系(Association)例如:20classClassWclassClassA
classClassB{{{………………
public:public:public:
ClassAa;voidaFun()voidbFun()
ClassB*b;{{…………
……public:}}voidwFun()…………{}}a.aFun();b=new(ClassB);b->bFun();
}……}
對應(yīng)的C++實現(xiàn)有以下兩種方式:classClassW21說明:在類的方法(函數(shù))內(nèi)部臨時聲明類對象之討論classClassWclassClassA
classClassB{{{………………
public:public:public:
ClassAa;//關(guān)聯(lián)voidaFun()voidbFun()
……{{public:……
……voidwFun()}}{…………ClassBb;}}a.aFun();b.bFun();
}……}顯然,這是一種介于關(guān)聯(lián)和依賴關(guān)系之間的編碼方式,在建模中既可使用關(guān)聯(lián)關(guān)系也可使用依賴關(guān)系,我們規(guī)定使用“依賴關(guān)系”//依賴說明:在類的方法(函數(shù))內(nèi)部臨時聲明類對象之討論cl22關(guān)聯(lián)的修飾:⑴名稱:用來描述關(guān)聯(lián)的性質(zhì)。說明:關(guān)聯(lián)名稱應(yīng)使用動詞短語,因為它表明源對象正在目標(biāo)對象上執(zhí)行動作。關(guān)聯(lián)名稱的添加如圖:關(guān)聯(lián)的修飾:23作用:為未來如下設(shè)計做鋪墊classStudent classUniversity{ {public:public:
University
u;void
uTeach();//教師授課…………voidsStudy();//學(xué)生學(xué)習(xí)}
…… }voidStudent::sStudy(){……u.uTeach();//學(xué)生通過大學(xué)里的教師授課來學(xué)習(xí)
……}作用:為未來如下設(shè)計做鋪墊classStudent24⑵角色:一個類在關(guān)聯(lián)中所扮演的角色說明:角色名稱應(yīng)使用名詞或名詞短語。關(guān)聯(lián)角色的添加如圖:作用:為未來如下分析做鋪墊:
為未來如下設(shè)計做鋪墊⑵角色:一個類在關(guān)聯(lián)中所扮演的角色為未來如下設(shè)計做鋪25
⑶多重性多重性表示一個類的一個實例與另一個類的幾個實例相關(guān)聯(lián)。多重性語法表示:
修飾語義0..10或11恰為10..n或0..*0或更多1..n或1..*1或更多n或*0或更多1..51至5個例如:⑶多重性修飾語義026多重性的添加如圖:作用:為未來如下分析、設(shè)計做鋪墊多重性的添加如圖:作用:為未來如下分析、設(shè)計做鋪墊27聚合關(guān)系(Aggregation)
聚合關(guān)系表示類間的關(guān)系是整體與部分的結(jié)構(gòu)關(guān)系。C++描述:classClassW{……private:classClassU{……}u;classClassV{……
}v;……}UML描述:例:聚合關(guān)系(Aggregation)C++描述:class28實現(xiàn)(Realize):
是一種語義關(guān)系,表示一個事物只繼承另一個事物的行為,而不繼承結(jié)構(gòu)。實現(xiàn)關(guān)系圖形表示如下:
說明:
⑴UML用實現(xiàn)關(guān)系來建立接口和實現(xiàn)接口的類或組件之間的關(guān)系或:或:實現(xiàn)(Realize):說明:或:或:29⑵而通過“接口”訪問“實現(xiàn)接口的類”的類和接口之間的關(guān)系是依賴關(guān)系。看一個例子:注意:在這里實現(xiàn)接口的類自動繼承了接口類的函數(shù)⑵而通過“接口”訪問“實現(xiàn)接口的類”的類和接口之間的關(guān)系30#include<unknwn.h>//此頭文件中有interface定義interfaceIInterface//接口類的聲明{//下面兩條語句聲明兩個接口函數(shù)(純虛函數(shù))virtualintiFunction()=0;virtualintiMethod()=0;};classCRealizeInterface:publicIInterface//實現(xiàn)接口類的定義,繼承接口類{public://實現(xiàn)接口部分
intiFunction(){Function();return0;}intiMethod(){Method();return0;}private://內(nèi)部工作部分
voidFunction(){printf("%s\n","通過接口IInterface::iFunction()調(diào)用CRealizeInterface::Function()成功!");
}voidMethod(){
printf("%s\n","通過接口IInterface::iMethod()調(diào)用CRealizeInterface::Method()成功!");}};上述關(guān)系圖的C++實現(xiàn):#include<unknwn.h>//此頭文件中有31classCVisitRealizeInterface//通過“接口類”訪問“實現(xiàn)接口類”的類的定義{public:voidVFunction_Method(){IInterface*IPoint;IPoint=newCRealizeInterface;IPoint->iFunction();IPoint->iMethod();}};intmain()//主函數(shù){CVisitRealizeInterfacevri;vri.VFunction_Method();return0;}classCVisitRealizeInterface32實現(xiàn)的運行結(jié)果:實現(xiàn)的運行結(jié)果:33§3.3類圖建模技術(shù)
一、為機制(較大范圍的協(xié)作)建模機制:代表了需要被模擬的部分系統(tǒng)的功能和行為,這些功能和行為是由類、接口等元素交互作用產(chǎn)生的。機制建模步驟:1.確定要為之建模的機制。2.對于每個機制,確定參與這個機制的類、接口和其他的機制。3.確定這些元素間的關(guān)系。4.根據(jù)機制的腳本,發(fā)現(xiàn)遺漏的模型部分,以及簡單的語義錯誤。腳本是描述機制的對象間動態(tài)行為的圖,如狀態(tài)圖等5.確定對象的屬性和操作。
例:基于“圖書管理系統(tǒng)”的用例圖我們按步驟進(jìn)行分析§3.3類圖建模技術(shù)一、為機制(較大范圍的協(xié)作)建模34邊界邊界Query
(查詢)邊界邊界邊界Query邊界351.確定機制。根據(jù)機制(協(xié)作)的定義(模擬部分系統(tǒng)的功能和行為),顯然可得到如下機制(協(xié)作):總體機制讀者機制工作人員機制管理人員機制2.確定參與每個機制的類
⑴考慮系統(tǒng)邊界,基于“用例圖之“參與者─>用例”建立邊界類
基于業(yè)務(wù)人員機制,邊界類有:業(yè)務(wù)員登錄窗口業(yè)務(wù)窗口:為操作“借書”和“還書”用例設(shè)置的邊界類基于讀者機制,邊界類有:查詢窗口:為操作“查詢圖書”和“查詢借閱情況”用例設(shè)置的邊界類基于管理人員機制,邊界類有:管理員登錄窗口管理窗口:為操作“維護(hù)圖書”和“維護(hù)讀者”用例設(shè)置的公共邊界類
1.確定機制。根據(jù)機制(協(xié)作)的定義(模擬部分系統(tǒng)的功能和36⑵考慮問題域,建立實體類(數(shù)據(jù)庫/文件)借閱者:教工借閱者、學(xué)生借閱者借閱圖書文件圖書圖書借閱明細(xì)借閱歷史檔案
工作人員⑶考慮系統(tǒng)責(zé)任,基于“用例圖---用例”建立控制類
借書業(yè)務(wù):實現(xiàn)“借書”用例操作控制類還書業(yè)務(wù):實現(xiàn)“還書”用例操作控制類
查詢:實現(xiàn)“查詢”用例操作控制類注冊圖書、更新圖書:實現(xiàn)“維護(hù)圖書”用例操作控制類注冊讀者、注冊讀者:實現(xiàn)“維護(hù)讀者”用例操作控制類注意:用子窗體/對話框來實現(xiàn)
⑷考慮同外部系統(tǒng)或組件的聯(lián)系,確定接口類無?、瓶紤]問題域,建立實體類(數(shù)據(jù)庫/文件)37類類名類類名邊界類:實體類:業(yè)務(wù)員登錄窗口LibrarianLogin借閱者ReaderInf管理員登錄窗口AdministratorLogin教工借閱者TeacherInf業(yè)務(wù)窗口LibrarianWin學(xué)生借閱者StudentInf維護(hù)窗口MaintainWin圖書BookInf查詢窗口QueryWin借閱圖書文件BorroweBookFileInf控制類:圖書借閱明細(xì)BookBorroweStatisticsInf借書業(yè)務(wù)LendbookForm借閱歷史檔案BorrowehistoryInf
還書業(yè)務(wù)ReturnbookForm工作人員WorkerInf維護(hù)圖書RegisterbookFormUpdatebookForm維護(hù)讀者RegisterBorrowerFormUpdateBorrowerForm機制機制名總體機制TotalCollaboration讀者機制ReaderCollaboration業(yè)務(wù)人員機制LibrarianCollaboration管理人員機制ManagerCollaboration類信息表類類名類類名邊界類:實體類:業(yè)務(wù)員登錄窗口Librari383.確定類之間的關(guān)系(構(gòu)造類圖)
⑴基于工作人員機制之類圖
注意:類與包之間是依賴關(guān)系3.確定類之間的關(guān)系(構(gòu)造類圖)注意:類與包之間是依賴關(guān)39
⑵基于讀者機制之類圖⑵基于讀者機制之類圖40⑶基于管理人員機制之類圖⑶基于管理人員機制之類圖41⑷基于總機制之類圖說明:機制在設(shè)計、實現(xiàn)時體現(xiàn)在:1.在系統(tǒng)外部由獨立的子系統(tǒng)來實現(xiàn)2.在系統(tǒng)內(nèi)部由主菜單來實現(xiàn)⑷基于總機制之類圖說明:機制在設(shè)計、實現(xiàn)時體現(xiàn)在:42⑸基于實體類,為數(shù)據(jù)庫模式建模使用UML:⑸基于實體類,為數(shù)據(jù)庫模式建模43使用SQLServer:使用SQLServer:444.根據(jù)機制的腳本,發(fā)現(xiàn)遺漏的模型部分有:讀者機制之類圖中查詢包含兩項獨立的對象(互不相干),它們分別是“查詢圖書信息”、“查詢借閱信息”,且在查詢借閱信息前應(yīng)該先“登錄”,所以應(yīng)追加三個類且建立相應(yīng)的關(guān)系。更新成4.根據(jù)機制的腳本,發(fā)現(xiàn)遺漏的模型部分有:讀者機制之類圖中更45類類名類類名邊界類:實體類:業(yè)務(wù)員登錄窗口LibrarianLogin借閱者ReaderInf管理員登錄窗口AdministratorLogin教工借閱者TeacherInf業(yè)務(wù)窗口LibrarianWin學(xué)生借閱者StudentInf維護(hù)窗口MaintainWin圖書BookInf查詢窗口QueryWin借閱圖書文件BorroweBookFileInf控制類:圖書借閱明細(xì)BookBorroweStatisticsInf借書業(yè)務(wù)LendbookForm借閱歷史檔案BorrowehistoryInf
還書業(yè)務(wù)ReturnbookForm工作人員WorkerInf維護(hù)圖書RegisterbookFormUpdatebookForm維護(hù)讀者RegisterBorrowerFormUpdateBorrowerForm查詢QuerybookFormQueryBorroweForm、BorrowerLoginForm機制機制名總體機制TotalCollaboration讀者機制ReaderCollaboration業(yè)務(wù)人員機制LibrarianCollaboration管理人員機制ManagerCollaboration更新的類信息表類類名類類名邊界類:實體類:業(yè)務(wù)員登錄窗口Librari465.按類圖的3個層次進(jìn)一步分析和設(shè)計,添加屬性、方法和細(xì)節(jié)等。參見下一節(jié)“§3.4類圖的層次劃分”注意:在這期間就需要動態(tài)模型協(xié)助設(shè)計5.按類圖的3個層次進(jìn)一步分析和設(shè)計,添加屬性、方法和細(xì)47§3.4類圖的層次劃分說明:雖然在軟件開發(fā)的不同階段都使用類圖,但這些類圖描述了不同層次的抽象。1.概念層概念層類圖:最高層次的抽象類圖,描述了問題域中的概念,一般這些概念和類有自然的聯(lián)系(即類可以從問題域的概念中得出),一個概念模型應(yīng)獨立于實現(xiàn)它的軟件和程序設(shè)計語言。說明:概念層類圖中的類一般只有一個類名在分析階段,類圖是所研究的問題域中的概念;在設(shè)計階段,類圖描述類與類之間的接口;(相當(dāng)于概要設(shè)計)在實現(xiàn)階段,類圖描述軟件系統(tǒng)中類的實現(xiàn)。(相當(dāng)于詳細(xì)設(shè)計)§3.4類圖的層次劃分1.概念層說明:概念層類圖中的類一482.說明層說明層類圖:描述軟件的接口部分,而不是軟件的實現(xiàn)部分。說明:說明層類圖中的類一般有類名、屬性名和方法名,但對屬性名不說明,方法亦不指明其參數(shù)和返回值類型。如:
3.實現(xiàn)層實現(xiàn)層類圖:真正考慮類的實現(xiàn)問題,提供了實現(xiàn)細(xì)節(jié),它與軟件系統(tǒng)的實現(xiàn)和程序設(shè)計語言有關(guān),即從軟件的實現(xiàn)角度建立類圖。說明:實現(xiàn)層類圖中一般應(yīng)給出屬性和方法的說明。如:2.說明層3.實現(xiàn)層49§3.5對象圖
對象圖:表示一組對象及它們之間的聯(lián)系,是參與交互的各個對象在交互過程中某一時刻的狀態(tài),常用于表示復(fù)雜的類圖的一個實例。其中:1.對象只有兩個分欄:名稱和屬性2.對象名稱有以下2種形式:完整表示:“對象名:類名”匿名對象表示:“:類名”
3.屬性名包含當(dāng)前值
4.關(guān)聯(lián)關(guān)系沒有多重性,所有的鏈接都是一對一的
§3.5對象圖對象圖:表示一組對象及它們之間的聯(lián)系,50說明:對象圖的使用相當(dāng)有限,主要用于表達(dá)數(shù)據(jù)結(jié)構(gòu)的示例,以及了解系統(tǒng)在某個特定時刻的具體情況等。例:關(guān)聯(lián)對象:
注:可在協(xié)作圖中建立對象圖11:n說明:對象圖的使用相當(dāng)有限,主要用于表達(dá)數(shù)據(jù)結(jié)構(gòu)的示例,關(guān)51第3章類圖和對象圖第3章類圖和對象圖52§3.1類及其表示
一、類的定義“類”是面向?qū)ο笾邢到y(tǒng)組織結(jié)構(gòu)的核心。它是對一組具有相同屬性、行為、關(guān)系和語義的事物的抽象。這些事物包括了現(xiàn)實世界中的物理實體、邏輯事物、應(yīng)用事物、行為事物和甚至純粹的概念事物等。在UML中“類”被表述成具有相似結(jié)構(gòu)、行為和關(guān)系的一組對象的描述符,所用的屬性和操作都被附加在類中?!邦悺钡膱D形表示如下:類名屬性操作§3.1類及其表示一、類的定義類名53其中:1.在UML中類的命名分simplename和pathname兩種形式如:simplename:ClassApathname:Package1::ClassB2.屬性基本格式:[可見性]屬性名[:類型][=初始值]如:+name:string-age:integer#max:integer=1003.方法基本格式:[可見性]方法名[(參數(shù)列表)][:返回類型]如:+pa():boolean說明:在ROSE中+、–、#分別采用直觀的圖形符號來表示注:C++中三種不同的繼承方式的基類和派生類特性參見下表:公有(public)保護(hù)(protected)私有(private)公有(public)繼承+(public)#(protected)×私有(private)繼承-(private)-(private)×保護(hù)(protected)繼承#(protected)#(protected)×其中:注:C++中三種不同的繼承方式的基類和派生類特性參見下54例如:
4.在ROSE中類有三種表達(dá)方式:選中類圖標(biāo)(菜單項的)FormatSuppressAttributes/Opration(制止屬性/操作)例如:4.在ROSE中類有三種表達(dá)方式:選中類圖標(biāo)(菜55說明:ROSE中可見性有以下4種:公有(Public)+受保護(hù)(Protected)#私有(Private)–包內(nèi)公有(Package)~分別采用空白、鑰匙、鎖和榔頭表示。例如:注意:Option-->ShowVisibility:顯示/隱藏可見性。例如:
說明:ROSE中可見性有以下4種:注意:Option-->S56軟件開發(fā)方法與技術(shù)(靜態(tài)模型—類圖對象圖)課件57
二、類的種類及一些符號表示(1)邊界類(BoundaryClass)邊界類:代表了系統(tǒng)和系統(tǒng)外的一些實體(人或設(shè)備)之間的交互的類,它是系統(tǒng)與外界交換信息的媒介,并將系統(tǒng)與系統(tǒng)環(huán)境中的變化隔離開來。例如:窗口、報表、打印機、掃描儀等硬件的界面邊界類UML符號表示有如下3種:二、類的種類及一些符號表示58邊界類在Sterotype(構(gòu)造型)中的設(shè)置:邊界類在Sterotype(構(gòu)造型)中的設(shè)置:59(2)實體類(EntityClass)實體類:是模擬必須被永久存儲的信息和關(guān)聯(lián)行為的類如:文件、數(shù)據(jù)庫等
UML符號表示有如下3種:注:實體類的設(shè)置參照邊界類的設(shè)置,即Sterotype(Entity)(2)實體類(EntityClass)注:實體類的設(shè)置參60
其中:控制類所提供的行為具有以下特點:①確定用例中的控制邏輯(事件順序)和事務(wù)②使用或規(guī)定若干實體類的內(nèi)容,協(xié)調(diào)這些實體類的行為
說明:①每個用例通常有一個控制類,控制用例中的事件順序②控制類一般可采用窗體(Forms)/對話框(Dialog)來實現(xiàn)(3)控制類(ControlClass)控制類:是用來為特定于一個或幾個用例的控制行為的類??刂祁怳ML符號表示有如下3種:注:控制類的設(shè)置參照邊界類的設(shè)置,即Sterotype(Control)其中:控制類所提供的行為具有以下特點:(3)控制類(Co61(4)接口(Interface)是兩個不相關(guān)的實體(系統(tǒng)或構(gòu)件)提供交流途徑的設(shè)備(一組操作的集合
)
其UML符號表示有如下:
作用:幫助類圖中的類與其他系統(tǒng)或組件或外部設(shè)備進(jìn)行通信。注:接口的設(shè)置參照邊界類的設(shè)置,即Sterotype(Interface)(4)接口(Interface)作用:幫助類圖中的類與其62§3.2類圖(ClassDiagram)
一、類圖的定義類圖是描述類、接口、協(xié)作以及它們之間關(guān)系的圖,用來顯示系統(tǒng)的靜態(tài)結(jié)構(gòu)。
其中:協(xié)作(Collaboration):一個用例或一組用例的工作(實現(xiàn))視圖。協(xié)作的UML符號表示用Stereotype是
use-caserealization類型的用例來表示如下:§3.2類圖(ClassDiagram)一、類圖的63一個協(xié)作包含以下3部分:(1)名稱(2)結(jié)構(gòu)部分:一般用類圖來描述,說明共同工作完成協(xié)作的類、接口和其它元素(3)行為部分:說明關(guān)于這些元素如何交互的動態(tài)特征可用UML的交互圖來描述:順序圖:強調(diào)消息的時間順序協(xié)作圖:強調(diào)對象之間的結(jié)構(gòu)順序
說明:協(xié)作包含的視圖通過在“協(xié)作”的Specification(規(guī)格)→Diagrams(圖)視窗中點擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇插入注:協(xié)作視圖的建立參見下圖。一個協(xié)作包含以下3部分:注:協(xié)作視圖的建立參見下圖。64軟件開發(fā)方法與技術(shù)(靜態(tài)模型—類圖對象圖)課件65二、關(guān)系:
?依賴(Dependence)表示兩個模型元素之間的語義(借用目標(biāo)元素的功能,而不是結(jié)構(gòu))關(guān)系,它說明一個模型元素的變化可能影響到使用它的另一個模型元素。
例如:設(shè)X、Y是兩個類,如果修改Y的定義可能會導(dǎo)致對X的修改,則稱類X依賴類Y。依賴關(guān)系圖形表示為:例如:充電電池和充電器,充電電池通過充電器來充電自行車和打氣筒,自行車通過打氣筒來充氣則Bicycle類與Pump類的類圖:二、關(guān)系:例如:充電電池和充電器,充電電池通過充電器來充電66classCPeople//人類{public:CBicyclemyBicycle;CPumpmyPump;voidPumpToBicycle(){myBicycle.Expand(&myPump);}}
說明:依賴關(guān)系在實現(xiàn)中,目標(biāo)對象不出現(xiàn)在源對象的屬性結(jié)構(gòu)中,通常采用目標(biāo)對象作為源對象方法的參數(shù)來使用。例如,上例的模擬實現(xiàn)代碼為:classCBicycle//自行車類classCPump//打氣筒類{{public:/*給輪胎充氣*/public:/*打氣筒充氣*/
voidExpand(CPump*Pp)voidBlow(){{Pp->Blow();//使用該打氣筒給自行車充氣
}}}}classCPeople//人類說明:classCBi67classCPump//打氣筒類{public:/*打氣筒充氣*/
voidBlow(){
printf("
%s\n","…使用該打氣筒給自行車充氣…");}}
#include"stdafx.h"#include"People.h"intmain(){CPeoplePbe;Pbe.PumpToBicycle();return0;}編寫主函數(shù)main()如下:
如果把CPump類改寫成:運行結(jié)果classCPump//打氣筒類#include"68?泛化(Generalization)同前是一般到特殊之間的關(guān)系(派生/繼承關(guān)系)
說明:泛化關(guān)系是在現(xiàn)有類的基礎(chǔ)上定義和實現(xiàn)一個新類的技術(shù)(復(fù)用技術(shù))。泛化關(guān)系圖形表示為:例如:即:?泛化(Generalization)例如:即:69C++描述如下:
classCAutomobile{……}classCCar:CAutomobile{……}classCLorry:CAutomobile{……}C++描述如下:classCAutomobi70關(guān)聯(lián)關(guān)系(Association)關(guān)聯(lián)關(guān)系表示兩個類之間“結(jié)構(gòu)+語義(行為)”的關(guān)系
其圖形表示為:雙向關(guān)聯(lián)單向關(guān)聯(lián)
例如:關(guān)聯(lián)關(guān)系(Association)例如:71classClassWclassClassA
classClassB{{{………………
public:public:public:
ClassAa;voidaFun()voidbFun()
ClassB*b;{{…………
……public:}}voidwFun()…………{}}a.aFun();b=new(ClassB);b->bFun();
}……}
對應(yīng)的C++實現(xiàn)有以下兩種方式:classClassW72說明:在類的方法(函數(shù))內(nèi)部臨時聲明類對象之討論classClassWclassClassA
classClassB{{{………………
public:public:public:
ClassAa;//關(guān)聯(lián)voidaFun()voidbFun()
……{{public:……
……voidwFun()}}{…………ClassBb;}}a.aFun();b.bFun();
}……}顯然,這是一種介于關(guān)聯(lián)和依賴關(guān)系之間的編碼方式,在建模中既可使用關(guān)聯(lián)關(guān)系也可使用依賴關(guān)系,我們規(guī)定使用“依賴關(guān)系”//依賴說明:在類的方法(函數(shù))內(nèi)部臨時聲明類對象之討論cl73關(guān)聯(lián)的修飾:⑴名稱:用來描述關(guān)聯(lián)的性質(zhì)。說明:關(guān)聯(lián)名稱應(yīng)使用動詞短語,因為它表明源對象正在目標(biāo)對象上執(zhí)行動作。關(guān)聯(lián)名稱的添加如圖:關(guān)聯(lián)的修飾:74作用:為未來如下設(shè)計做鋪墊classStudent classUniversity{ {public:public:
University
u;void
uTeach();//教師授課…………voidsStudy();//學(xué)生學(xué)習(xí)}
…… }voidStudent::sStudy(){……u.uTeach();//學(xué)生通過大學(xué)里的教師授課來學(xué)習(xí)
……}作用:為未來如下設(shè)計做鋪墊classStudent75⑵角色:一個類在關(guān)聯(lián)中所扮演的角色說明:角色名稱應(yīng)使用名詞或名詞短語。關(guān)聯(lián)角色的添加如圖:作用:為未來如下分析做鋪墊:
為未來如下設(shè)計做鋪墊⑵角色:一個類在關(guān)聯(lián)中所扮演的角色為未來如下設(shè)計做鋪76
⑶多重性多重性表示一個類的一個實例與另一個類的幾個實例相關(guān)聯(lián)。多重性語法表示:
修飾語義0..10或11恰為10..n或0..*0或更多1..n或1..*1或更多n或*0或更多1..51至5個例如:⑶多重性修飾語義077多重性的添加如圖:作用:為未來如下分析、設(shè)計做鋪墊多重性的添加如圖:作用:為未來如下分析、設(shè)計做鋪墊78聚合關(guān)系(Aggregation)
聚合關(guān)系表示類間的關(guān)系是整體與部分的結(jié)構(gòu)關(guān)系。C++描述:classClassW{……private:classClassU{……}u;classClassV{……
}v;……}UML描述:例:聚合關(guān)系(Aggregation)C++描述:class79實現(xiàn)(Realize):
是一種語義關(guān)系,表示一個事物只繼承另一個事物的行為,而不繼承結(jié)構(gòu)。實現(xiàn)關(guān)系圖形表示如下:
說明:
⑴UML用實現(xiàn)關(guān)系來建立接口和實現(xiàn)接口的類或組件之間的關(guān)系或:或:實現(xiàn)(Realize):說明:或:或:80⑵而通過“接口”訪問“實現(xiàn)接口的類”的類和接口之間的關(guān)系是依賴關(guān)系??匆粋€例子:注意:在這里實現(xiàn)接口的類自動繼承了接口類的函數(shù)⑵而通過“接口”訪問“實現(xiàn)接口的類”的類和接口之間的關(guān)系81#include<unknwn.h>//此頭文件中有interface定義interfaceIInterface//接口類的聲明{//下面兩條語句聲明兩個接口函數(shù)(純虛函數(shù))virtualintiFunction()=0;virtualintiMethod()=0;};classCRealizeInterface:publicIInterface//實現(xiàn)接口類的定義,繼承接口類{public://實現(xiàn)接口部分
intiFunction(){Function();return0;}intiMethod(){Method();return0;}private://內(nèi)部工作部分
voidFunction(){printf("%s\n","通過接口IInterface::iFunction()調(diào)用CRealizeInterface::Function()成功!");
}voidMethod(){
printf("%s\n","通過接口IInterface::iMethod()調(diào)用CRealizeInterface::Method()成功!");}};上述關(guān)系圖的C++實現(xiàn):#include<unknwn.h>//此頭文件中有82classCVisitRealizeInterface//通過“接口類”訪問“實現(xiàn)接口類”的類的定義{public:voidVFunction_Method(){IInterface*IPoint;IPoint=newCRealizeInterface;IPoint->iFunction();IPoint->iMethod();}};intmain()//主函數(shù){CVisitRealizeInterfacevri;vri.VFunction_Method();return0;}classCVisitRealizeInterface83實現(xiàn)的運行結(jié)果:實現(xiàn)的運行結(jié)果:84§3.3類圖建模技術(shù)
一、為機制(較大范圍的協(xié)作)建模機制:代表了需要被模擬的部分系統(tǒng)的功能和行為,這些功能和行為是由類、接口等元素交互作用產(chǎn)生的。機制建模步驟:1.確定要為之建模的機制。2.對于每個機制,確定參與這個機制的類、接口和其他的機制。3.確定這些元素間的關(guān)系。4.根據(jù)機制的腳本,發(fā)現(xiàn)遺漏的模型部分,以及簡單的語義錯誤。腳本是描述機制的對象間動態(tài)行為的圖,如狀態(tài)圖等5.確定對象的屬性和操作。
例:基于“圖書管理系統(tǒng)”的用例圖我們按步驟進(jìn)行分析§3.3類圖建模技術(shù)一、為機制(較大范圍的協(xié)作)建模85邊界邊界Query
(查詢)邊界邊界邊界Query邊界861.確定機制。根據(jù)機制(協(xié)作)的定義(模擬部分系統(tǒng)的功能和行為),顯然可得到如下機制(協(xié)作):總體機制讀者機制工作人員機制管理人員機制2.確定參與每個機制的類
⑴考慮系統(tǒng)邊界,基于“用例圖之“參與者─>用例”建立邊界類
基于業(yè)務(wù)人員機制,邊界類有:業(yè)務(wù)員登錄窗口業(yè)務(wù)窗口:為操作“借書”和“還書”用例設(shè)置的邊界類基于讀者機制,邊界類有:查詢窗口:為操作“查詢圖書”和“查詢借閱情況”用例設(shè)置的邊界類基于管理人員機制,邊界類有:管理員登錄窗口管理窗口:為操作“維護(hù)圖書”和“維護(hù)讀者”用例設(shè)置的公共邊界類
1.確定機制。根據(jù)機制(協(xié)作)的定義(模擬部分系統(tǒng)的功能和87⑵考慮問題域,建立實體類(數(shù)據(jù)庫/文件)借閱者:教工借閱者、學(xué)生借閱者借閱圖書文件圖書圖書借閱明細(xì)借閱歷史檔案
工作人員⑶考慮系統(tǒng)責(zé)任,基于“用例圖---用例”建立控制類
借書業(yè)務(wù):實現(xiàn)“借書”用例操作控制類還書業(yè)務(wù):實現(xiàn)“還書”用例操作控制類
查詢:實現(xiàn)“查詢”用例操作控制類注冊圖書、更新圖書:實現(xiàn)“維護(hù)圖書”用例操作控制類注冊讀者、注冊讀者:實現(xiàn)“維護(hù)讀者”用例操作控制類注意:用子窗體/對話框來實現(xiàn)
⑷考慮同外部系統(tǒng)或組件的聯(lián)系,確定接口類無?、瓶紤]問題域,建立實體類(數(shù)據(jù)庫/文件)88類類名類類名邊界類:實體類:業(yè)務(wù)員登錄窗口LibrarianLogin借閱者ReaderInf管理員登錄窗口Adm
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)學(xué)生家長寄語
- 企業(yè)培訓(xùn)現(xiàn)場文案策劃方案
- 廣東省茂名市2023-2024學(xué)年六年級上學(xué)期英語期中試卷(含答案)
- 物業(yè)消控中心管理規(guī)范(征求意見稿)-編制說明
- 編制說明《綠色設(shè)計產(chǎn)品評價技術(shù)規(guī)范 革用增塑劑》
- 金屬非金屬礦山排土場安全技術(shù)規(guī)范DB41-T 1267-2016
- 山東省濰坊市2020屆高考地理二??荚囋囶}
- 2024年矽鋼硅鋼沖壓項目發(fā)展計劃
- 2024年醫(yī)用植入材料合作協(xié)議書
- 2024年高精度晶閘管直流調(diào)速器項目合作計劃書
- 八年級生物上冊期中考試試卷人教版
- ABB工業(yè)機器人制造系統(tǒng)集成技術(shù)應(yīng)用 課件 電子 第五章 視覺工作站的工業(yè)機器人系統(tǒng)集成
- 【班級自主管理研究國內(nèi)外文獻(xiàn)綜述4200字】
- 青春期教育(男生)課件
- 印刷行業(yè)管理難點及解決方案
- 品質(zhì)稽核管理制度
- 營養(yǎng)配餐員中級技能
- 行車驗收標(biāo)準(zhǔn)規(guī)范
- 辣椒病蟲害防治課件
- 電影賞析-愛樂之城
- 南京中醫(yī)藥大學(xué)針灸學(xué)外科學(xué)西醫(yī)內(nèi)科學(xué)題庫
評論
0/150
提交評論