軟件開(kāi)發(fā)方法與技術(shù)(靜態(tài)模型-類(lèi)圖對(duì)象圖)課件_第1頁(yè)
軟件開(kāi)發(fā)方法與技術(shù)(靜態(tài)模型-類(lèi)圖對(duì)象圖)課件_第2頁(yè)
軟件開(kāi)發(fā)方法與技術(shù)(靜態(tài)模型-類(lèi)圖對(duì)象圖)課件_第3頁(yè)
軟件開(kāi)發(fā)方法與技術(shù)(靜態(tài)模型-類(lèi)圖對(duì)象圖)課件_第4頁(yè)
軟件開(kāi)發(fā)方法與技術(shù)(靜態(tài)模型-類(lèi)圖對(duì)象圖)課件_第5頁(yè)
已閱讀5頁(yè),還剩97頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論