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