版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第3章類圖和對象圖第3章類圖和對象圖1§3.1類及其表示
一、類的定義“類”是面向對象中系統(tǒng)組織結構的核心。它是對一組具有相同屬性、行為、關系和語義的事物的抽象。這些事物包括了現(xiàn)實世界中的物理實體、邏輯事物、應用事物、行為事物和甚至純粹的概念事物等。在UML中“類”被表述成具有相似結構、行為和關系的一組對象的描述符,所用的屬性和操作都被附加在類中?!邦悺钡膱D形表示如下:類名屬性操作§3.1類及其表示一、類的定義類名2其中:1.在UML中類的命名分simplename和pathname兩種形式如:simplename:ClassApathname:Package1::ClassB2.屬性基本格式:[可見性]屬性名[:類型][=初始值]如:+name:string-age:integer#max:integer=1003.方法基本格式:[可見性]方法名[(參數(shù)列表)][:返回類型]如:+pa():boolean說明:在ROSE中+、–、#分別采用直觀的圖形符號來表示注:C++中三種不同的繼承方式的基類和派生類特性參見下表:公有(public)保護(protected)私有(private)公有(public)繼承+(public)#(protected)×私有(private)繼承-(private)-(private)×保護(protected)繼承#(protected)#(protected)×其中:注:C++中三種不同的繼承方式的基類和派生類特性參見下3例如:
4.在ROSE中類有三種表達方式:選中類圖標(菜單項的)FormatSuppressAttributes/Opration(制止屬性/操作)例如:4.在ROSE中類有三種表達方式:選中類圖標(菜4說明:ROSE中可見性有以下4種:公有(Public)+受保護(Protected)#私有(Private)–包內公有(Package)~分別采用空白、鑰匙、鎖和榔頭表示。例如:注意:Option-->ShowVisibility:顯示/隱藏可見性。例如:
說明:ROSE中可見性有以下4種:注意:Option-->S5軟件開發(fā)方法與技術(靜態(tài)模型—類圖對象圖)課件6
二、類的種類及一些符號表示(1)邊界類(BoundaryClass)邊界類:代表了系統(tǒng)和系統(tǒng)外的一些實體(人或設備)之間的交互的類,它是系統(tǒng)與外界交換信息的媒介,并將系統(tǒng)與系統(tǒng)環(huán)境中的變化隔離開來。例如:窗口、報表、打印機、掃描儀等硬件的界面邊界類UML符號表示有如下3種:二、類的種類及一些符號表示7邊界類在Sterotype(構造型)中的設置:邊界類在Sterotype(構造型)中的設置:8(2)實體類(EntityClass)實體類:是模擬必須被永久存儲的信息和關聯(lián)行為的類如:文件、數(shù)據(jù)庫等
UML符號表示有如下3種:注:實體類的設置參照邊界類的設置,即Sterotype(Entity)(2)實體類(EntityClass)注:實體類的設置參9
其中:控制類所提供的行為具有以下特點:①確定用例中的控制邏輯(事件順序)和事務②使用或規(guī)定若干實體類的內容,協(xié)調這些實體類的行為
說明:①每個用例通常有一個控制類,控制用例中的事件順序②控制類一般可采用窗體(Forms)/對話框(Dialog)來實現(xiàn)(3)控制類(ControlClass)控制類:是用來為特定于一個或幾個用例的控制行為的類。控制類UML符號表示有如下3種:注:控制類的設置參照邊界類的設置,即Sterotype(Control)其中:控制類所提供的行為具有以下特點:(3)控制類(Co10(4)接口(Interface)是兩個不相關的實體(系統(tǒng)或構件)提供交流途徑的設備(一組操作的集合
)
其UML符號表示有如下:
作用:幫助類圖中的類與其他系統(tǒng)或組件或外部設備進行通信。注:接口的設置參照邊界類的設置,即Sterotype(Interface)(4)接口(Interface)作用:幫助類圖中的類與其11§3.2類圖(ClassDiagram)
一、類圖的定義類圖是描述類、接口、協(xié)作以及它們之間關系的圖,用來顯示系統(tǒng)的靜態(tài)結構。
其中:協(xié)作(Collaboration):一個用例或一組用例的工作(實現(xiàn))視圖。協(xié)作的UML符號表示用Stereotype是
use-caserealization類型的用例來表示如下:§3.2類圖(ClassDiagram)一、類圖的12一個協(xié)作包含以下3部分:(1)名稱(2)結構部分:一般用類圖來描述,說明共同工作完成協(xié)作的類、接口和其它元素(3)行為部分:說明關于這些元素如何交互的動態(tài)特征可用UML的交互圖來描述:順序圖:強調消息的時間順序協(xié)作圖:強調對象之間的結構順序
說明:協(xié)作包含的視圖通過在“協(xié)作”的Specification(規(guī)格)→Diagrams(圖)視窗中點擊鼠標右鍵,在彈出的快捷菜單中選擇插入注:協(xié)作視圖的建立參見下圖。一個協(xié)作包含以下3部分:注:協(xié)作視圖的建立參見下圖。13軟件開發(fā)方法與技術(靜態(tài)模型—類圖對象圖)課件14二、關系:
?依賴(Dependence)表示兩個模型元素之間的語義(借用目標元素的功能,而不是結構)關系,它說明一個模型元素的變化可能影響到使用它的另一個模型元素。
例如:設X、Y是兩個類,如果修改Y的定義可能會導致對X的修改,則稱類X依賴類Y。依賴關系圖形表示為:例如:充電電池和充電器,充電電池通過充電器來充電自行車和打氣筒,自行車通過打氣筒來充氣則Bicycle類與Pump類的類圖:二、關系:例如:充電電池和充電器,充電電池通過充電器來充電15classCPeople//人類{public:CBicyclemyBicycle;CPumpmyPump;voidPumpToBicycle(){myBicycle.Expand(&myPump);}}
說明:依賴關系在實現(xiàn)中,目標對象不出現(xiàn)在源對象的屬性結構中,通常采用目標對象作為源對象方法的參數(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類改寫成:運行結果classCPump//打氣筒類#include"17?泛化(Generalization)同前是一般到特殊之間的關系(派生/繼承關系)
說明:泛化關系是在現(xiàn)有類的基礎上定義和實現(xiàn)一個新類的技術(復用技術)。泛化關系圖形表示為:例如:即:?泛化(Generalization)例如:即:18C++描述如下:
classCAutomobile{……}classCCar:CAutomobile{……}classCLorry:CAutomobile{……}C++描述如下:classCAutomobi19關聯(lián)關系(Association)關聯(lián)關系表示兩個類之間“結構+語義(行為)”的關系
其圖形表示為:雙向關聯(lián)單向關聯(lián)
例如:關聯(lián)關系(Association)例如:20classClassWclassClassA
classClassB{{{………………
public:public:public:
ClassAa;voidaFun()voidbFun()
ClassB*b;{{…………
……public:}}voidwFun()…………{}}a.aFun();b=new(ClassB);b->bFun();
}……}
對應的C++實現(xiàn)有以下兩種方式:classClassW21說明:在類的方法(函數(shù))內部臨時聲明類對象之討論classClassWclassClassA
classClassB{{{………………
public:public:public:
ClassAa;//關聯(lián)voidaFun()voidbFun()
……{{public:……
……voidwFun()}}{…………ClassBb;}}a.aFun();b.bFun();
}……}顯然,這是一種介于關聯(lián)和依賴關系之間的編碼方式,在建模中既可使用關聯(lián)關系也可使用依賴關系,我們規(guī)定使用“依賴關系”//依賴說明:在類的方法(函數(shù))內部臨時聲明類對象之討論cl22關聯(lián)的修飾:⑴名稱:用來描述關聯(lián)的性質。說明:關聯(lián)名稱應使用動詞短語,因為它表明源對象正在目標對象上執(zhí)行動作。關聯(lián)名稱的添加如圖:關聯(lián)的修飾:23作用:為未來如下設計做鋪墊classStudent classUniversity{ {public:public:
University
u;void
uTeach();//教師授課…………voidsStudy();//學生學習}
…… }voidStudent::sStudy(){……u.uTeach();//學生通過大學里的教師授課來學習
……}作用:為未來如下設計做鋪墊classStudent24⑵角色:一個類在關聯(lián)中所扮演的角色說明:角色名稱應使用名詞或名詞短語。關聯(lián)角色的添加如圖:作用:為未來如下分析做鋪墊:
為未來如下設計做鋪墊⑵角色:一個類在關聯(lián)中所扮演的角色為未來如下設計做鋪25
⑶多重性多重性表示一個類的一個實例與另一個類的幾個實例相關聯(lián)。多重性語法表示:
修飾語義0..10或11恰為10..n或0..*0或更多1..n或1..*1或更多n或*0或更多1..51至5個例如:⑶多重性修飾語義026多重性的添加如圖:作用:為未來如下分析、設計做鋪墊多重性的添加如圖:作用:為未來如下分析、設計做鋪墊27聚合關系(Aggregation)
聚合關系表示類間的關系是整體與部分的結構關系。C++描述:classClassW{……private:classClassU{……}u;classClassV{……
}v;……}UML描述:例:聚合關系(Aggregation)C++描述:class28實現(xiàn)(Realize):
是一種語義關系,表示一個事物只繼承另一個事物的行為,而不繼承結構。實現(xiàn)關系圖形表示如下:
說明:
⑴UML用實現(xiàn)關系來建立接口和實現(xiàn)接口的類或組件之間的關系或:或:實現(xiàn)(Realize):說明:或:或:29⑵而通過“接口”訪問“實現(xiàn)接口的類”的類和接口之間的關系是依賴關系??匆粋€例子:注意:在這里實現(xiàn)接口的類自動繼承了接口類的函數(shù)⑵而通過“接口”訪問“實現(xià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://內部工作部分
voidFunction(){printf("%s\n","通過接口IInterface::iFunction()調用CRealizeInterface::Function()成功!");
}voidMethod(){
printf("%s\n","通過接口IInterface::iMethod()調用CRealizeInterface::Method()成功!");}};上述關系圖的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)的運行結果:實現(xiàn)的運行結果:33§3.3類圖建模技術
一、為機制(較大范圍的協(xié)作)建模機制:代表了需要被模擬的部分系統(tǒng)的功能和行為,這些功能和行為是由類、接口等元素交互作用產(chǎn)生的。機制建模步驟:1.確定要為之建模的機制。2.對于每個機制,確定參與這個機制的類、接口和其他的機制。3.確定這些元素間的關系。4.根據(jù)機制的腳本,發(fā)現(xiàn)遺漏的模型部分,以及簡單的語義錯誤。腳本是描述機制的對象間動態(tài)行為的圖,如狀態(tài)圖等5.確定對象的屬性和操作。
例:基于“圖書管理系統(tǒng)”的用例圖我們按步驟進行分析§3.3類圖建模技術一、為機制(較大范圍的協(xié)作)建模34邊界邊界Query
(查詢)邊界邊界邊界Query邊界351.確定機制。根據(jù)機制(協(xié)作)的定義(模擬部分系統(tǒng)的功能和行為),顯然可得到如下機制(協(xié)作):總體機制讀者機制工作人員機制管理人員機制2.確定參與每個機制的類
⑴考慮系統(tǒng)邊界,基于“用例圖之“參與者─>用例”建立邊界類
基于業(yè)務人員機制,邊界類有:業(yè)務員登錄窗口業(yè)務窗口:為操作“借書”和“還書”用例設置的邊界類基于讀者機制,邊界類有:查詢窗口:為操作“查詢圖書”和“查詢借閱情況”用例設置的邊界類基于管理人員機制,邊界類有:管理員登錄窗口管理窗口:為操作“維護圖書”和“維護讀者”用例設置的公共邊界類
1.確定機制。根據(jù)機制(協(xié)作)的定義(模擬部分系統(tǒng)的功能和36⑵考慮問題域,建立實體類(數(shù)據(jù)庫/文件)借閱者:教工借閱者、學生借閱者借閱圖書文件圖書圖書借閱明細借閱歷史檔案
工作人員⑶考慮系統(tǒng)責任,基于“用例圖---用例”建立控制類
借書業(yè)務:實現(xiàn)“借書”用例操作控制類還書業(yè)務:實現(xiàn)“還書”用例操作控制類
查詢:實現(xiàn)“查詢”用例操作控制類注冊圖書、更新圖書:實現(xiàn)“維護圖書”用例操作控制類注冊讀者、注冊讀者:實現(xiàn)“維護讀者”用例操作控制類注意:用子窗體/對話框來實現(xiàn)
⑷考慮同外部系統(tǒng)或組件的聯(lián)系,確定接口類無?、瓶紤]問題域,建立實體類(數(shù)據(jù)庫/文件)37類類名類類名邊界類:實體類:業(yè)務員登錄窗口LibrarianLogin借閱者ReaderInf管理員登錄窗口AdministratorLogin教工借閱者TeacherInf業(yè)務窗口LibrarianWin學生借閱者StudentInf維護窗口MaintainWin圖書BookInf查詢窗口QueryWin借閱圖書文件BorroweBookFileInf控制類:圖書借閱明細BookBorroweStatisticsInf借書業(yè)務LendbookForm借閱歷史檔案BorrowehistoryInf
還書業(yè)務ReturnbookForm工作人員WorkerInf維護圖書RegisterbookFormUpdatebookForm維護讀者RegisterBorrowerFormUpdateBorrowerForm機制機制名總體機制TotalCollaboration讀者機制ReaderCollaboration業(yè)務人員機制LibrarianCollaboration管理人員機制ManagerCollaboration類信息表類類名類類名邊界類:實體類:業(yè)務員登錄窗口Librari383.確定類之間的關系(構造類圖)
⑴基于工作人員機制之類圖
注意:類與包之間是依賴關系3.確定類之間的關系(構造類圖)注意:類與包之間是依賴關39
⑵基于讀者機制之類圖⑵基于讀者機制之類圖40⑶基于管理人員機制之類圖⑶基于管理人員機制之類圖41⑷基于總機制之類圖說明:機制在設計、實現(xiàn)時體現(xiàn)在:1.在系統(tǒng)外部由獨立的子系統(tǒng)來實現(xiàn)2.在系統(tǒng)內部由主菜單來實現(xiàn)⑷基于總機制之類圖說明:機制在設計、實現(xiàn)時體現(xiàn)在:42⑸基于實體類,為數(shù)據(jù)庫模式建模使用UML:⑸基于實體類,為數(shù)據(jù)庫模式建模43使用SQLServer:使用SQLServer:444.根據(jù)機制的腳本,發(fā)現(xiàn)遺漏的模型部分有:讀者機制之類圖中查詢包含兩項獨立的對象(互不相干),它們分別是“查詢圖書信息”、“查詢借閱信息”,且在查詢借閱信息前應該先“登錄”,所以應追加三個類且建立相應的關系。更新成4.根據(jù)機制的腳本,發(fā)現(xiàn)遺漏的模型部分有:讀者機制之類圖中更45類類名類類名邊界類:實體類:業(yè)務員登錄窗口LibrarianLogin借閱者ReaderInf管理員登錄窗口AdministratorLogin教工借閱者TeacherInf業(yè)務窗口LibrarianWin學生借閱者StudentInf維護窗口MaintainWin圖書BookInf查詢窗口QueryWin借閱圖書文件BorroweBookFileInf控制類:圖書借閱明細BookBorroweStatisticsInf借書業(yè)務LendbookForm借閱歷史檔案BorrowehistoryInf
還書業(yè)務ReturnbookForm工作人員WorkerInf維護圖書RegisterbookFormUpdatebookForm維護讀者RegisterBorrowerFormUpdateBorrowerForm查詢QuerybookFormQueryBorroweForm、BorrowerLoginForm機制機制名總體機制TotalCollaboration讀者機制ReaderCollaboration業(yè)務人員機制LibrarianCollaboration管理人員機制ManagerCollaboration更新的類信息表類類名類類名邊界類:實體類:業(yè)務員登錄窗口Librari465.按類圖的3個層次進一步分析和設計,添加屬性、方法和細節(jié)等。參見下一節(jié)“§3.4類圖的層次劃分”注意:在這期間就需要動態(tài)模型協(xié)助設計5.按類圖的3個層次進一步分析和設計,添加屬性、方法和細47§3.4類圖的層次劃分說明:雖然在軟件開發(fā)的不同階段都使用類圖,但這些類圖描述了不同層次的抽象。1.概念層概念層類圖:最高層次的抽象類圖,描述了問題域中的概念,一般這些概念和類有自然的聯(lián)系(即類可以從問題域的概念中得出),一個概念模型應獨立于實現(xiàn)它的軟件和程序設計語言。說明:概念層類圖中的類一般只有一個類名在分析階段,類圖是所研究的問題域中的概念;在設計階段,類圖描述類與類之間的接口;(相當于概要設計)在實現(xiàn)階段,類圖描述軟件系統(tǒng)中類的實現(xiàn)。(相當于詳細設計)§3.4類圖的層次劃分1.概念層說明:概念層類圖中的類一482.說明層說明層類圖:描述軟件的接口部分,而不是軟件的實現(xiàn)部分。說明:說明層類圖中的類一般有類名、屬性名和方法名,但對屬性名不說明,方法亦不指明其參數(shù)和返回值類型。如:
3.實現(xiàn)層實現(xiàn)層類圖:真正考慮類的實現(xiàn)問題,提供了實現(xiàn)細節(jié),它與軟件系統(tǒng)的實現(xiàn)和程序設計語言有關,即從軟件的實現(xiàn)角度建立類圖。說明:實現(xiàn)層類圖中一般應給出屬性和方法的說明。如:2.說明層3.實現(xiàn)層49§3.5對象圖
對象圖:表示一組對象及它們之間的聯(lián)系,是參與交互的各個對象在交互過程中某一時刻的狀態(tài),常用于表示復雜的類圖的一個實例。其中:1.對象只有兩個分欄:名稱和屬性2.對象名稱有以下2種形式:完整表示:“對象名:類名”匿名對象表示:“:類名”
3.屬性名包含當前值
4.關聯(lián)關系沒有多重性,所有的鏈接都是一對一的
§3.5對象圖對象圖:表示一組對象及它們之間的聯(lián)系,50說明:對象圖的使用相當有限,主要用于表達數(shù)據(jù)結構的示例,以及了解系統(tǒng)在某個特定時刻的具體情況等。例:關聯(lián)對象:
注:可在協(xié)作圖中建立對象圖11:n說明:對象圖的使用相當有限,主要用于表達數(shù)據(jù)結構的示例,關51第3章類圖和對象圖第3章類圖和對象圖52§3.1類及其表示
一、類的定義“類”是面向對象中系統(tǒng)組織結構的核心。它是對一組具有相同屬性、行為、關系和語義的事物的抽象。這些事物包括了現(xiàn)實世界中的物理實體、邏輯事物、應用事物、行為事物和甚至純粹的概念事物等。在UML中“類”被表述成具有相似結構、行為和關系的一組對象的描述符,所用的屬性和操作都被附加在類中?!邦悺钡膱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)保護(protected)私有(private)公有(public)繼承+(public)#(protected)×私有(private)繼承-(private)-(private)×保護(protected)繼承#(protected)#(protected)×其中:注:C++中三種不同的繼承方式的基類和派生類特性參見下54例如:
4.在ROSE中類有三種表達方式:選中類圖標(菜單項的)FormatSuppressAttributes/Opration(制止屬性/操作)例如:4.在ROSE中類有三種表達方式:選中類圖標(菜55說明:ROSE中可見性有以下4種:公有(Public)+受保護(Protected)#私有(Private)–包內公有(Package)~分別采用空白、鑰匙、鎖和榔頭表示。例如:注意:Option-->ShowVisibility:顯示/隱藏可見性。例如:
說明:ROSE中可見性有以下4種:注意:Option-->S56軟件開發(fā)方法與技術(靜態(tài)模型—類圖對象圖)課件57
二、類的種類及一些符號表示(1)邊界類(BoundaryClass)邊界類:代表了系統(tǒng)和系統(tǒng)外的一些實體(人或設備)之間的交互的類,它是系統(tǒng)與外界交換信息的媒介,并將系統(tǒng)與系統(tǒng)環(huán)境中的變化隔離開來。例如:窗口、報表、打印機、掃描儀等硬件的界面邊界類UML符號表示有如下3種:二、類的種類及一些符號表示58邊界類在Sterotype(構造型)中的設置:邊界類在Sterotype(構造型)中的設置:59(2)實體類(EntityClass)實體類:是模擬必須被永久存儲的信息和關聯(lián)行為的類如:文件、數(shù)據(jù)庫等
UML符號表示有如下3種:注:實體類的設置參照邊界類的設置,即Sterotype(Entity)(2)實體類(EntityClass)注:實體類的設置參60
其中:控制類所提供的行為具有以下特點:①確定用例中的控制邏輯(事件順序)和事務②使用或規(guī)定若干實體類的內容,協(xié)調這些實體類的行為
說明:①每個用例通常有一個控制類,控制用例中的事件順序②控制類一般可采用窗體(Forms)/對話框(Dialog)來實現(xiàn)(3)控制類(ControlClass)控制類:是用來為特定于一個或幾個用例的控制行為的類??刂祁怳ML符號表示有如下3種:注:控制類的設置參照邊界類的設置,即Sterotype(Control)其中:控制類所提供的行為具有以下特點:(3)控制類(Co61(4)接口(Interface)是兩個不相關的實體(系統(tǒng)或構件)提供交流途徑的設備(一組操作的集合
)
其UML符號表示有如下:
作用:幫助類圖中的類與其他系統(tǒng)或組件或外部設備進行通信。注:接口的設置參照邊界類的設置,即Sterotype(Interface)(4)接口(Interface)作用:幫助類圖中的類與其62§3.2類圖(ClassDiagram)
一、類圖的定義類圖是描述類、接口、協(xié)作以及它們之間關系的圖,用來顯示系統(tǒng)的靜態(tài)結構。
其中:協(xié)作(Collaboration):一個用例或一組用例的工作(實現(xiàn))視圖。協(xié)作的UML符號表示用Stereotype是
use-caserealization類型的用例來表示如下:§3.2類圖(ClassDiagram)一、類圖的63一個協(xié)作包含以下3部分:(1)名稱(2)結構部分:一般用類圖來描述,說明共同工作完成協(xié)作的類、接口和其它元素(3)行為部分:說明關于這些元素如何交互的動態(tài)特征可用UML的交互圖來描述:順序圖:強調消息的時間順序協(xié)作圖:強調對象之間的結構順序
說明:協(xié)作包含的視圖通過在“協(xié)作”的Specification(規(guī)格)→Diagrams(圖)視窗中點擊鼠標右鍵,在彈出的快捷菜單中選擇插入注:協(xié)作視圖的建立參見下圖。一個協(xié)作包含以下3部分:注:協(xié)作視圖的建立參見下圖。64軟件開發(fā)方法與技術(靜態(tài)模型—類圖對象圖)課件65二、關系:
?依賴(Dependence)表示兩個模型元素之間的語義(借用目標元素的功能,而不是結構)關系,它說明一個模型元素的變化可能影響到使用它的另一個模型元素。
例如:設X、Y是兩個類,如果修改Y的定義可能會導致對X的修改,則稱類X依賴類Y。依賴關系圖形表示為:例如:充電電池和充電器,充電電池通過充電器來充電自行車和打氣筒,自行車通過打氣筒來充氣則Bicycle類與Pump類的類圖:二、關系:例如:充電電池和充電器,充電電池通過充電器來充電66classCPeople//人類{public:CBicyclemyBicycle;CPumpmyPump;voidPumpToBicycle(){myBicycle.Expand(&myPump);}}
說明:依賴關系在實現(xiàn)中,目標對象不出現(xiàn)在源對象的屬性結構中,通常采用目標對象作為源對象方法的參數(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類改寫成:運行結果classCPump//打氣筒類#include"68?泛化(Generalization)同前是一般到特殊之間的關系(派生/繼承關系)
說明:泛化關系是在現(xiàn)有類的基礎上定義和實現(xiàn)一個新類的技術(復用技術)。泛化關系圖形表示為:例如:即:?泛化(Generalization)例如:即:69C++描述如下:
classCAutomobile{……}classCCar:CAutomobile{……}classCLorry:CAutomobile{……}C++描述如下:classCAutomobi70關聯(lián)關系(Association)關聯(lián)關系表示兩個類之間“結構+語義(行為)”的關系
其圖形表示為:雙向關聯(lián)單向關聯(lián)
例如:關聯(lián)關系(Association)例如:71classClassWclassClassA
classClassB{{{………………
public:public:public:
ClassAa;voidaFun()voidbFun()
ClassB*b;{{…………
……public:}}voidwFun()…………{}}a.aFun();b=new(ClassB);b->bFun();
}……}
對應的C++實現(xiàn)有以下兩種方式:classClassW72說明:在類的方法(函數(shù))內部臨時聲明類對象之討論classClassWclassClassA
classClassB{{{………………
public:public:public:
ClassAa;//關聯(lián)voidaFun()voidbFun()
……{{public:……
……voidwFun()}}{…………ClassBb;}}a.aFun();b.bFun();
}……}顯然,這是一種介于關聯(lián)和依賴關系之間的編碼方式,在建模中既可使用關聯(lián)關系也可使用依賴關系,我們規(guī)定使用“依賴關系”//依賴說明:在類的方法(函數(shù))內部臨時聲明類對象之討論cl73關聯(lián)的修飾:⑴名稱:用來描述關聯(lián)的性質。說明:關聯(lián)名稱應使用動詞短語,因為它表明源對象正在目標對象上執(zhí)行動作。關聯(lián)名稱的添加如圖:關聯(lián)的修飾:74作用:為未來如下設計做鋪墊classStudent classUniversity{ {public:public:
University
u;void
uTeach();//教師授課…………voidsStudy();//學生學習}
…… }voidStudent::sStudy(){……u.uTeach();//學生通過大學里的教師授課來學習
……}作用:為未來如下設計做鋪墊classStudent75⑵角色:一個類在關聯(lián)中所扮演的角色說明:角色名稱應使用名詞或名詞短語。關聯(lián)角色的添加如圖:作用:為未來如下分析做鋪墊:
為未來如下設計做鋪墊⑵角色:一個類在關聯(lián)中所扮演的角色為未來如下設計做鋪76
⑶多重性多重性表示一個類的一個實例與另一個類的幾個實例相關聯(lián)。多重性語法表示:
修飾語義0..10或11恰為10..n或0..*0或更多1..n或1..*1或更多n或*0或更多1..51至5個例如:⑶多重性修飾語義077多重性的添加如圖:作用:為未來如下分析、設計做鋪墊多重性的添加如圖:作用:為未來如下分析、設計做鋪墊78聚合關系(Aggregation)
聚合關系表示類間的關系是整體與部分的結構關系。C++描述:classClassW{……private:classClassU{……}u;classClassV{……
}v;……}UML描述:例:聚合關系(Aggregation)C++描述:class79實現(xiàn)(Realize):
是一種語義關系,表示一個事物只繼承另一個事物的行為,而不繼承結構。實現(xiàn)關系圖形表示如下:
說明:
⑴UML用實現(xiàn)關系來建立接口和實現(xiàn)接口的類或組件之間的關系或:或:實現(xiàn)(Realize):說明:或:或:80⑵而通過“接口”訪問“實現(xiàn)接口的類”的類和接口之間的關系是依賴關系??匆粋€例子:注意:在這里實現(xiàn)接口的類自動繼承了接口類的函數(shù)⑵而通過“接口”訪問“實現(xià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://內部工作部分
voidFunction(){printf("%s\n","通過接口IInterface::iFunction()調用CRealizeInterface::Function()成功!");
}voidMethod(){
printf("%s\n","通過接口IInterface::iMethod()調用CRealizeInterface::Method()成功!");}};上述關系圖的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)的運行結果:實現(xiàn)的運行結果:84§3.3類圖建模技術
一、為機制(較大范圍的協(xié)作)建模機制:代表了需要被模擬的部分系統(tǒng)的功能和行為,這些功能和行為是由類、接口等元素交互作用產(chǎn)生的。機制建模步驟:1.確定要為之建模的機制。2.對于每個機制,確定參與這個機制的類、接口和其他的機制。3.確定這些元素間的關系。4.根據(jù)機制的腳本,發(fā)現(xiàn)遺漏的模型部分,以及簡單的語義錯誤。腳本是描述機制的對象間動態(tài)行為的圖,如狀態(tài)圖等5.確定對象的屬性和操作。
例:基于“圖書管理系統(tǒng)”的用例圖我們按步驟進行分析§3.3類圖建模技術一、為機制(較大范圍的協(xié)作)建模85邊界邊界Query
(查詢)邊界邊界邊界Query邊界861.確定機制。根據(jù)機制(協(xié)作)的定義(模擬部分系統(tǒng)的功能和行為),顯然可得到如下機制(協(xié)作):總體機制讀者機制工作人員機制管理人員機制2.確定參與每個機制的類
⑴考慮系統(tǒng)邊界,基于“用例圖之“參與者─>用例”建立邊界類
基于業(yè)務人員機制,邊界類有:業(yè)務員登錄窗口業(yè)務窗口:為操作“借書”和“還書”用例設置的邊界類基于讀者機制,邊界類有:查詢窗口:為操作“查詢圖書”和“查詢借閱情況”用例設置的邊界類基于管理人員機制,邊界類有:管理員登錄窗口管理窗口:為操作“維護圖書”和“維護讀者”用例設置的公共邊界類
1.確定機制。根據(jù)機制(協(xié)作)的定義(模擬部分系統(tǒng)的功能和87⑵考慮問題域,建立實體類(數(shù)據(jù)庫/文件)借閱者:教工借閱者、學生借閱者借閱圖書文件圖書圖書借閱明細借閱歷史檔案
工作人員⑶考慮系統(tǒng)責任,基于“用例圖---用例”建立控制類
借書業(yè)務:實現(xiàn)“借書”用例操作控制類還書業(yè)務:實現(xiàn)“還書”用例操作控制類
查詢:實現(xiàn)“查詢”用例操作控制類注冊圖書、更新圖書:實現(xiàn)“維護圖書”用例操作控制類注冊讀者、注冊讀者:實現(xiàn)“維護讀者”用例操作控制類注意:用子窗體/對話框來實現(xiàn)
⑷考慮同外部系統(tǒng)或組件的聯(lián)系,確定接口類無!⑵考慮問題域,建立實體類(數(shù)據(jù)庫/文件)88類類名類類名邊界類:實體類:業(yè)務員登錄窗口LibrarianLogin借閱者ReaderInf管理員登錄窗口Adm
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度智能房產(chǎn)交易平臺參展合作合同范本3篇
- 二零二五年度城市更新項目承包商履約保函服務合同3篇
- 二零二五年度屋頂隔熱保溫維修服務協(xié)議3篇
- 二零二五年度數(shù)據(jù)中心搬遷補償及環(huán)保協(xié)議3篇
- 幼兒園音樂活動方案范文(2篇)
- 項目立項管理制度(2篇)
- 中班感恩節(jié)活動策劃方案例文(2篇)
- 2025年度安全生產(chǎn)應急救援物資儲備合同6篇
- 2025年振興中華從我做起演講稿大學生范文(2篇)
- 2025年冀教版七年級語文上冊階段測試試卷含答案
- 2024年關愛留守兒童工作總結
- GB/T 45092-2024電解水制氫用電極性能測試與評價
- 《算術平方根》課件
- 2024版房屋買賣合同范例:房屋質量保證條款3篇
- 網(wǎng)絡加速器提供商服務合同
- 轉讓押金協(xié)議合同范例
- 《工業(yè)用二氟草酸硼酸鋰》
- 學校辦公室副主任述職報告范文
- 電力各種材料重量表總
- 電纜壓降計算用表格
- 淺談境外工程項目勞動用工的薪酬管理
評論
0/150
提交評論