第一篇:基于UML的功能設(shè)計(jì)
內(nèi)蒙古工業(yè)大學(xué)信息工程學(xué)院
實(shí) 驗(yàn) 報(bào) 告
課程名稱: UML2面向?qū)ο蠓治雠c設(shè)計(jì) 實(shí)驗(yàn)名稱: 基于UML的功能設(shè)計(jì) 實(shí)驗(yàn)類型: 驗(yàn)證性□ 綜合性□ 設(shè)計(jì)性□ 實(shí)驗(yàn)室名稱: 班級(jí): 學(xué)號(hào): 姓名:
組別: 同組人:
成績:
實(shí)驗(yàn)日期: 2014.5.21
內(nèi)蒙古工業(yè)大學(xué)信息工程學(xué)院
報(bào)告類型: 實(shí)驗(yàn)報(bào)告√ 預(yù)習(xí)報(bào)告□
報(bào)告成績: 指導(dǎo)教師審核(簽名): 年 月 日
[實(shí)驗(yàn)名稱]
基于UML的功能設(shè)計(jì) [實(shí)驗(yàn)?zāi)康腯
1、熟練使用Rational rose2003。
2、掌握組件圖的繪制方法。
3、掌握布局圖的繪制方法。
4、雙向工程的實(shí)施過程。[實(shí)驗(yàn)環(huán)境] Rational rose2003,Windows 7。
[實(shí)驗(yàn)內(nèi)容] 題目1:選課系統(tǒng)的組件圖設(shè)計(jì)
描述:在選課系統(tǒng)中,包括MainProgram類(主程序)、People類、FormObject類、ControlObject類、Student類、Registrar類(管理員)、Course類和DataBase類。People類是Student類和Registrar類的基類,所以Student類和Registrar類依賴People類。FormObject類和ControlObject類都和Course類相關(guān),F(xiàn)ormObject類和ControlObject類依賴Course類,ControlObject類和DataBase類相關(guān),ControlObject類依賴DataBase類。
完成:
1)繪制選課系統(tǒng)的組件圖。題目2:選課系統(tǒng)的布局圖的設(shè)計(jì)
描述:服務(wù)器使用了兩臺(tái)主機(jī),一臺(tái)作為數(shù)據(jù)庫服務(wù)器,使用了Oracle服務(wù)器,另一臺(tái)是同一局域網(wǎng)上的機(jī)器,作為HTTP服務(wù)器,上面運(yùn)行了HTTP服務(wù)器進(jìn)程以及業(yè)務(wù)邏輯,同時(shí)連接了打印機(jī)。而客戶端則是在因特網(wǎng)上任意具有Web瀏覽功能的機(jī)器,客戶端和HTTP服務(wù)器通過因特網(wǎng)連接,從HTTP服務(wù)器獲取信息。完成: 1)繪制選課系統(tǒng)的布局圖。題目3:選課系統(tǒng)的正向工程 描述:見題目1。
完成:
第1頁
內(nèi)蒙古工業(yè)大學(xué)信息工程學(xué)院
1)使用Rose的正向工程,為類People、Student和Registrar生成代碼;
2)使用同樣的方法,為其它類也生成代碼。題目4:選課系統(tǒng)的逆向工程
描述:根據(jù)題目3正向工程執(zhí)行的結(jié)果,在類Student的代碼中增加一個(gè)TestOperation的空操作。完成:
1)使用Rose的逆向工程,為Student的代碼建立同步模型。
[實(shí)驗(yàn)提示] 1)組件圖的繪制
(1)打開組件圖窗口
在瀏覽器窗口打開“Component View”文件夾-〉雙擊“Main”圖標(biāo)。(2)建立新組件
瀏覽器中右鍵單擊“Component View”-〉“New”-〉“Component”建立了新組件;(3)修改組件屬性
右鍵單擊所建立的組件-〉“Open Specification”-〉在“General”選項(xiàng)卡中設(shè)置組件名稱、組件版型和實(shí)現(xiàn)的語言。
在“Files”選項(xiàng)卡中-〉列表框中單擊右鍵-〉“Insert File”,建立Main.java文件。(4)組件圖中增加組件 將所建立的組件拖入組件圖即可。
使用上面的方法建立組件,然后打開組件的屬性框,選擇“Realizes”選項(xiàng)卡,右鍵單擊類名,選擇“Assign”,可以建立類和組件之間的關(guān)系。
2)布局圖的繪制
(1)打開布局圖窗口
在瀏覽器中選擇“Deployment View”并雙擊,打開了布局圖窗口。
(2)增加處理器
在布局圖窗口工具欄上選擇“Processor”圖標(biāo)-〉放置到“布局圖”窗口中。
第2頁
(2)設(shè)置組件和類的關(guān)系
內(nèi)蒙古工業(yè)大學(xué)信息工程學(xué)院
(3)設(shè)置處理器屬性
右鍵單擊新建的處理器-〉“Open Specification”-〉選擇“Detail”選項(xiàng)卡-〉在“Processes”列表框中單擊右鍵-〉“Insert”-〉設(shè)置處理器上運(yùn)行的進(jìn)程。
3)正向工程的實(shí)現(xiàn)
(1)一般性檢查
“Tools”-〉“Check Model”,如果模型有問題,將在日志窗口中給出。
(2)發(fā)現(xiàn)訪問問題
“Report”-〉“Show Access Violations”,在訪問問題窗口中顯示訪問問題。
(3)語言獨(dú)立檢查
假設(shè)使用Java語言,“Tools”-〉“Java”-〉“Syntax Check”。
(4)生成代碼
“Tools”-〉“Java”-〉“Genenate Codes”。
4)逆向工程的實(shí)現(xiàn)
“Tools”->“Java”-〉“Reverse Engineer Java…”。
[實(shí)驗(yàn)結(jié)果] 題目1:選課系統(tǒng)的組件圖設(shè)計(jì)
選課系統(tǒng)組件圖
題目2:選課系統(tǒng)的布局圖的設(shè)計(jì)
第3頁
內(nèi)蒙古工業(yè)大學(xué)信息工程學(xué)院
選課系統(tǒng)布局圖題目3:選課系統(tǒng)的正向工程 1)正向工程生成代碼Registrar.java //Source file: D:xy Registrar.java
public class Registrar extends People {
/**
* @roseuid 51BFDB9802E9
*/
public Registrar()
{
} } 2)正向工程生成代碼People.Java //Source file: D:xy People.java
public class People {
public MainProgram theMainProgram;
/**
* @roseuid 51BFD71203A3
*/
public People()
{
第4頁
內(nèi)蒙古工業(yè)大學(xué)信息工程學(xué)院
} } 3)正向工程生成代碼Student.java //Source file: D:xy Studnet.java
public class Studnet extends People {
/**
* @roseuid 51BFD7570025
*/
public Studnet()
{
} } 4)正向工程生成代碼ControlObject.java //Source file: D:xy ControlObject.java
public class ControlObject {
/**
* @roseuid 51BFDBA103D5
*/
public ControlObject()
{
} } 5)正向工程生成代碼FormObject.java //Source file: D:xy FormObject.java
public class FormObject {
/**
* @roseuid 51BFDBA90119
*/
public FormObject()
{
} }
第5頁
內(nèi)蒙古工業(yè)大學(xué)信息工程學(xué)院
6)正向工程生成代碼MainProgram.java //Source file: D:xy MainProgram.java
public class MainProgram {
public People thePeople;
public Course theCourse;
/**
* @roseuid 51BFD862029F
*/
public MainProgram()
{
} } 題目4:選課系統(tǒng)的逆向工程
Student類圖
[實(shí)驗(yàn)心得] 通過本次實(shí)驗(yàn),熟悉了如何使用rose繪制UML組件圖與布局圖,了解了組件圖與布局圖的作用,鞏固了相關(guān)的課堂知識(shí),加深了對(duì)其的認(rèn)識(shí)。除此之外,還掌握了如何使用rose的正向工程和逆向工程,學(xué)會(huì)了通過rose快速生成代碼的方法,極大的方便了以后的編程。同時(shí)也為以后的學(xué)習(xí)與工作打下了一定的基礎(chǔ)。
第6頁
第二篇:視頻教學(xué)功能設(shè)計(jì)
功能設(shè)計(jì) 項(xiàng)目名稱:視頻會(huì)議 班級(jí):軟件101 組長:趙美婷
組內(nèi)成員:王立芹、夏葉、王亞如、靳會(huì) 時(shí)間:2012年10月9日引言
1.1編寫目的:
目前,作為新型技術(shù)的視頻會(huì)議,已經(jīng)成為開發(fā)和研究的熱點(diǎn)。作為計(jì)算機(jī)專業(yè)的學(xué)生,也應(yīng)該將視頻會(huì)議的學(xué)習(xí)和研究列為課程設(shè)計(jì)內(nèi)容。1.2背景說明:
視頻會(huì)議也叫電視會(huì)議,經(jīng)歷了模擬電視會(huì)議和數(shù)字電視會(huì)議兩個(gè)階段。模擬會(huì)議電視是早期的會(huì)議電視,在70年代就有了這種通信業(yè)務(wù)。當(dāng)時(shí)傳送的是黑白圖像,并且只限于在兩個(gè)地點(diǎn)之間舉行會(huì)議。盡管如此,電視會(huì)議還是要占用很寬的頻帶,費(fèi)用很高,因此這種電視會(huì)議沒有得到發(fā)展。視頻會(huì)議進(jìn)入中國初期,政府是視頻會(huì)議市場的最大也是最主要的用戶。近些年來,更多的行業(yè)用戶開始意識(shí)到視頻會(huì)議的重要性,視頻設(shè)備用戶數(shù)量不斷增加,用戶行業(yè)分布領(lǐng)域也越來越廣泛,由最初的政府和電信部門,發(fā)展到公安、檢察院、法院、銀行、證券、保險(xiǎn)、教育、稅務(wù)等各個(gè)行業(yè)。和歐美國家相比,雖然中國的遠(yuǎn)程教育和遠(yuǎn)程醫(yī)療剛剛起步,視頻會(huì)議系統(tǒng)在這兩個(gè)領(lǐng)域的應(yīng)用范圍還不夠廣泛,但從發(fā)展的角度可以看到,最近兩年,上述兩個(gè)領(lǐng)域的應(yīng)用正呈現(xiàn)出蓬勃發(fā)展的勢頭,未來將是快速發(fā)展的行業(yè)。目前,國內(nèi)市場視頻會(huì)議主要應(yīng)用于下列行業(yè):政府;金融、證券、銀行;能源;交通、公安軍隊(duì);外資企業(yè)及大型企業(yè);醫(yī)療與教育行業(yè)。隨著政府信息化的不斷深入,以及各地電子政務(wù)的開展,各地黨政專網(wǎng)的二期、三期擴(kuò)建工程,今后幾年中,對(duì)于視頻會(huì)議需求最大的還將來自政府部門。由于資金和觀念等因素的影響,視頻會(huì)議在教育、醫(yī)療方面的應(yīng)用并沒有取得預(yù)期的效果,各廠商在這兩個(gè)領(lǐng)域中的占有率都很有限。但由于視頻會(huì)議在技術(shù)上有著明顯的特點(diǎn)和優(yōu)勢,其應(yīng)用價(jià)值必將會(huì)得到教育界、醫(yī)學(xué)界的進(jìn)一步承認(rèn)。中小型企業(yè)應(yīng)是今后著重關(guān)注的領(lǐng)域,這部分用戶數(shù)量巨大,一般對(duì)于設(shè)備終端的要求較低,而且連接點(diǎn)數(shù)較少。這就要求廠商能夠提供價(jià)格相對(duì)低廉的產(chǎn)品、全套的解決方案,以及高質(zhì)量的售后服務(wù),同時(shí),由于這部分潛在用戶數(shù)量巨大,因此廠商和代理商的市場推廣力度應(yīng)該進(jìn)一步加強(qiáng)。技術(shù)實(shí)力差距不大的情況下,價(jià)格將成為競爭取勝的一個(gè)關(guān)鍵因素。目前國內(nèi)廠商在設(shè)備的價(jià)格上具有很大的優(yōu)勢,廠商在推廣時(shí),應(yīng)注意減輕產(chǎn)品價(jià)位偏高所帶來的影響??傮w設(shè)計(jì)
2.1需求規(guī)定
(1)能夠?qū)崿F(xiàn)音視頻交互。
(2)有良好的帶寬處理機(jī)制、有強(qiáng)大網(wǎng)速的適應(yīng)能力。(3)支持多種網(wǎng)絡(luò)環(huán)境,并且跨越各種不同的網(wǎng)絡(luò)環(huán)境。(4)支持文檔共享、電子白板、網(wǎng)頁同步等多種文本交互手段。(5)支持屏幕廣播、程序共享等多種協(xié)同辦公的功能。(6)針對(duì)不同的用戶群體、用戶數(shù)量,有相對(duì)應(yīng)的會(huì)議機(jī)制。(7)能同時(shí)支持多個(gè)會(huì)議通道,保障各會(huì)議通道的相對(duì)獨(dú)立和信息安全性。
(8)能進(jìn)行遠(yuǎn)程的web方式管理,組織會(huì)議和會(huì)議授權(quán)簡單、方便。
(9)有較強(qiáng)的控制功能,能夠把不遵守紀(jì)律的會(huì)議成員請(qǐng)出會(huì)議室。
(10)有豐富的輔助功能,保證在突發(fā)情況下視頻會(huì)議能無干擾地正常進(jìn)行。
(11)能實(shí)現(xiàn)無延遲的音視頻傳輸、保證音視頻的同步性。(12)能進(jìn)行會(huì)議錄制,把會(huì)議信息完全記錄下來。
(13)有良好的擴(kuò)展功能,支持服務(wù)器集群、分發(fā)式服務(wù)器和二級(jí)服務(wù)器。2.2運(yùn)行環(huán)境
網(wǎng)絡(luò)視頻會(huì)議的進(jìn)行,必須要有良好的硬件支持。NetMeeting對(duì)硬件要求如下: 1.聲卡。最好采用全雙工的聲卡。
2.麥克風(fēng)。連接在聲卡上或內(nèi)置在計(jì)算機(jī)中。在語音會(huì)議時(shí),應(yīng)對(duì)著麥克風(fēng)說話。3.音箱或耳機(jī)。連接在聲卡上或內(nèi)置在計(jì)算機(jī),可從其中聽到對(duì)方的聲音。4.網(wǎng)卡或調(diào)制解調(diào)器(Modem)。保證能夠接入互聯(lián)網(wǎng)。5.?dāng)z像頭。讓對(duì)方看到自己的圖像。2.3基本設(shè)計(jì)概念和處理流程
一個(gè)網(wǎng)絡(luò)視頻系統(tǒng)主要由三大部分組成:一個(gè)會(huì)議控制中心;接入因特網(wǎng)的多個(gè)辦公局域網(wǎng);若干個(gè)通過有線或無線方式接入因特網(wǎng)或辦公局域網(wǎng)的用戶終端。
右圖是一款商業(yè)化的網(wǎng)絡(luò)視頻系統(tǒng)——智星網(wǎng)絡(luò)視頻會(huì)議系統(tǒng)的實(shí)際組成圖
2.4結(jié)構(gòu)
一、音頻的錄制與播放問題
這一部分的開發(fā)相對(duì)簡單。其一,這種功能的API從Windows 3.1開始就已經(jīng)提供(winmm.lib+mmsystem.h);其二,如今借助于方便的因特網(wǎng),我們完全可以搜到現(xiàn)成的包裝類。在本文中,我們直接借用了提供了兩個(gè)現(xiàn)成的RecordSound與PlaySound類。這兩個(gè)類都派生于CWinThread類,用戶可以“死搬硬套”地使用它們。下面代碼展示了這兩個(gè)類的使用,具體包裝類定義請(qǐng)參考下載源碼文件。
//創(chuàng)建并啟動(dòng)錄音線程
record=new RecordSound(this);record->CreateThread();//創(chuàng)建并啟動(dòng)播放線程 play=new PlaySound1(this);play->CreateThread();//開始錄制
record->PostThreadMessage(WM_RECORDSOUND_STARTRECORDING,0,0);//開始播放
play->PostThreadMessage(WM_PLAYSOUND_STARTPLAYING,0,0);//在音頻錄制期間,我們可以在RecordSound類的OnSoundData //回調(diào)函數(shù)中使用這些數(shù)據(jù)。在此,你可以放置你要發(fā)送到遠(yuǎn)程宿主的數(shù)據(jù)…… //播放接收自遠(yuǎn)程宿主的音頻數(shù)據(jù)
play->PostThreadMessage(WM_PLAYSOUND_PLAYBLOCK,size,(LPARAM)data);//停止錄制
record->PostThreadMessage(WM_RECORDSOUND_STOPRECORDING,0,0);//停止播放
play->PostThreadMessage(WM_PLAYSOUND_STOPPLAYING,0,0);//最后,停止錄音線程
record->PostThreadMessage(WM_RECORDSOUND_ENDTHREAD,0,0);//停止播放線程
play->PostThreadMessage(WM_PLAYSOUND_ENDTHREAD,0,0);上面已經(jīng)加了注釋,使用方法一目了然。
二、視頻捕獲的問題
當(dāng)前,在Windows平臺(tái)下開發(fā)視頻應(yīng)用一般采用兩種方案。一種是基于視頻采集卡所附帶的二次軟件開發(fā)包SDK進(jìn)行。此方式的優(yōu)點(diǎn):幫助資料齊全,直接套用現(xiàn)成的API,易于上手;但缺點(diǎn)也是明顯的:硬件依賴性強(qiáng),缺乏應(yīng)有的靈活性,因此,不能充分滿足開發(fā)通用的視頻應(yīng)用的需要。
另一種方案是基于微軟公司的VFW(Video for Windows)進(jìn)行。這個(gè)SDK為開發(fā)Windows平臺(tái)下的視頻應(yīng)用程序提供也現(xiàn)成的軟件工具包(一組API),開發(fā)人員可以通過它們很方便地實(shí)現(xiàn)視頻捕獲、視頻編輯及視頻播放功能,特別是可利用其中內(nèi)置的回調(diào)函數(shù)開發(fā)出更為復(fù)雜的視頻應(yīng)用程序。因此,這種方案的優(yōu)點(diǎn)是播放視頻時(shí)不需要專用的硬件設(shè)備(大多數(shù)的視頻采集卡驅(qū)動(dòng)程序都支持VFW接口),應(yīng)用靈活,可以滿足視頻應(yīng)用程序開發(fā)的需要。值得慶幸的是,如今的Windows版本都內(nèi)置安裝了VFW相關(guān)組件,而VC++自4.0以來就支持VFW,從而大大簡化了視頻應(yīng)用程序的開發(fā)。目前,基于PC的多媒體應(yīng)用程序的視頻部分,大都是利用VFW API開發(fā)的。
VFW以消息驅(qū)動(dòng)方式實(shí)現(xiàn)對(duì)視頻設(shè)備進(jìn)行訪問,便于開發(fā)者控制設(shè)備數(shù)據(jù)流的工作過程。簡言之,這個(gè)框架主要包括VICAP.DLL、MSVIDEO.DLL、MCIAVI.DRV、AVIFILE.DLL、ICM、ACM等多個(gè)動(dòng)態(tài)連接庫,這些組件協(xié)同合作,共同完成視頻的捕獲、視頻壓縮及播放功能。有關(guān)這些模塊的具體介紹見MSDN,在此略過。
(一)視頻捕獲
視頻數(shù)據(jù)的實(shí)時(shí)采集,主要通過AVICAP模塊中的消息、宏函數(shù)、結(jié)構(gòu)以及回調(diào)函數(shù)來完成。視頻捕獲的大致過程如下:(1)建立捕獲窗口
利用函數(shù)capCreateCaptureWindow()建立視頻捕獲窗口,它是所有捕獲工作及設(shè)置的基礎(chǔ)。其主要功能包括:①動(dòng)態(tài)地同視頻和音頻輸入器連接或斷開;②設(shè)置視頻捕獲速率;③提供視頻源、視頻格式以及是否采用視頻壓縮的對(duì)話框;④設(shè)置視頻采集的顯示模式為Overlay或?yàn)镻review;⑤實(shí)時(shí)獲取每一幀視頻數(shù)據(jù);⑥將一視頻流和音頻流捕獲并保存到一個(gè)AVI文件中;⑦捕獲某一幀數(shù)字視頻數(shù)據(jù),并將單幀圖像以DIB格式保存;⑧指定捕獲數(shù)據(jù)的文件名,并能將捕獲的內(nèi)容拷貝到另一文件。(2)登記回調(diào)函數(shù)
登記回調(diào)函數(shù)用來實(shí)現(xiàn)用戶的一些特殊需要。在以一些實(shí)時(shí)監(jiān)控系統(tǒng)或視頻會(huì)議系統(tǒng)中,需要將數(shù)據(jù)流在寫入磁盤以前就必須加以處理,達(dá)到實(shí)時(shí)功效。應(yīng)用程序可用捕獲窗來登記回調(diào)函數(shù),以便及時(shí)處理以下情況:捕獲窗狀態(tài)改變、出錯(cuò)、使用視頻或音頻緩存、放棄控制權(quán)等,相應(yīng)的回調(diào)函數(shù)分別為capStatusCallback(),capErrorCallback(),capVideoStreamCallback(),capWaveStreamCallback(),capYieldCallback()。(3)獲取捕獲窗口的缺省設(shè)置
通過宏capCaptureGetSetup(hWndCap,&m_Parms,sizeof(m_Parms))來完成。(4)設(shè)置捕獲窗口的相關(guān)參數(shù)
通過宏capCaptureSetSetup(hWndCap,&m_Parms,sizeof(m_Parms))來完成。(5)連接捕獲窗口與視頻捕獲卡
通過宏capDriveConnect(hWndCap,0)來完成。(6)獲取采集設(shè)備的功能和狀態(tài)
通過宏capDriverGetCaps(hWndCap,&m_CapDrvCap,sizeof(CAPDRIVERCAPS))來獲取視頻設(shè)備的能力,通過宏capGetStatus(hWndCap,&m_CapStatus,sizeof(m_CapStatus))來獲取視頻設(shè)備的狀態(tài)。(7)設(shè)置捕獲窗口顯示模式
視頻顯示有Overlay(疊加)和Preview(預(yù)覽)兩種模式。在疊加模式下,捕獲視頻數(shù)據(jù)布展系統(tǒng)資源,顯示速度快,視頻采集格式為YUV格式,可通過capOverlay(hWndCap,TRUE)來設(shè)置;預(yù)覽模式下要占用系統(tǒng)資源,視頻由系統(tǒng)調(diào)用GDI函數(shù)在捕獲窗顯示,顯示速度慢,它支持RGB視頻格式。
(8)捕獲圖像到緩存或文件并作相應(yīng)處理
若要對(duì)采集數(shù)據(jù)進(jìn)行實(shí)時(shí)處理,則應(yīng)利用回調(diào)機(jī)制,由capSetCallbackOnFrame(hWndCap,FrameCallbackProc)
完
成單
幀
視
頻
采
集;
由capSetCallbackOnVideoStream(hWndCap,VideoCallbackProc)完成視頻流采集。如果要保存采集數(shù)據(jù),則可調(diào)用capCaptureSequence(hWnd);要指定文件名,可調(diào)用capFileSetCapture(hwnd,Filename)。(9)終止視頻捕獲斷開與視頻采集設(shè)備的連接
調(diào)用capCatureStop(hWndCap)停止采集,調(diào)用capDriverDisconnect(hWndCap),斷開視頻窗口與捕獲驅(qū)動(dòng)程序的連接。由于上面這些API密切相關(guān),所以為了使用方便,我們干脆把它們打包到一個(gè)視頻捕獲類VideoCapture中。
下面的代碼片斷展示了這個(gè)類的使用思路: //創(chuàng)建視頻捕獲類的實(shí)例 vidcap=new VideoCapture();//當(dāng)幀捕獲完成時(shí),下面這一句將用于調(diào)用主對(duì)話框類的顯示函數(shù) vidcap->SetDialog(this);//下一行完成初始化工作:連接到驅(qū)動(dòng)程序;設(shè)置使用的視頻格式等。//如果成功地連接到視頻捕獲設(shè)備返回TRUE。vidcap-> Initialize();//如果連接成功,那么,我們就可以得到與視頻格式相關(guān)的BITMAPINFO //結(jié)構(gòu)。后面將用之顯示捕獲的幀 this->m_bmpinfo=&vidcap->m_bmpinfo;//現(xiàn)在,你可以正式開始視頻捕獲了…… vidcap->StartCapture();//一旦捕獲開始,捕獲的幀將到達(dá)回調(diào)函數(shù)—VideoCapture類的OnCaptureVideo函數(shù)。//在此回調(diào)函數(shù)中,你可以調(diào)用顯示函數(shù)實(shí)現(xiàn)幀顯示(見下一節(jié))//停止捕獲
vidcap->StopCapture();//成功捕獲后,釋放視頻捕獲類 vidcap->Destroy();【注意】為了順利編譯和鏈接,你需要在類實(shí)現(xiàn)文件(VideoCapture.cpp)的前面加上如下語句:
#pragma comment(lib,“vfw32”)#pragma comment(lib,“winmm”)
(二)顯示捕獲的視頻幀
對(duì)于顯示捕獲的視頻幀方面(也就是顯示圖像的問題),顯然存在多種方案。例如,我們可以使用SetDIBitsToDevice()方法實(shí)現(xiàn)直接顯示捕獲的視頻幀。但是,這種方案速度非常慢,因?yàn)樗腔趫D形設(shè)備接口(GDI)的函數(shù)。相比之下,更好一些的方法是使用DrawDib API來繪制幀,因?yàn)檫@個(gè)函數(shù)可以直接寫向視頻內(nèi)存,因此能夠提供更好的性能。下面的代碼片斷展示了如何使用DrawDib函數(shù)顯示捕獲的視頻幀: //初始化DIB以便繪制
HDRAWDIB hdib=::DrawDibOpen();//然后,使用適當(dāng)?shù)膮?shù)調(diào)用這個(gè)函數(shù)…… ::DrawDibBegin(hdib,...);//現(xiàn)在,已經(jīng)作好準(zhǔn)備—可以調(diào)用這個(gè)函數(shù)進(jìn)行幀顯示了 ::DrawDibDraw(hdib,...);//最后,結(jié)束幀繪制 ::DrawDibEnd(hdib);::DrawDibClose(hdib);其實(shí),上面代碼非常類似普通位圖繪制過程。
三、選擇適當(dāng)?shù)木幋a/解碼庫
在本文中,我們選用Roalt Aalmoes的開源的快速H.263編碼器庫。
(一)使用編碼器代碼示例 //初始化壓縮器 CParam cparams;cparams.format = CPARAM_QCIF;InitH263Encoder(&cparams);//如果你需要從RGB24轉(zhuǎn)換到Y(jié)UV420格式,那么應(yīng)該調(diào)用下面的函數(shù) InitLookupTable();//創(chuàng)建回調(diào)函數(shù)
//OwnWriteFunction是編碼期間返回編碼數(shù)據(jù)時(shí)調(diào)用的全局函數(shù) WriteByteFunction = OwnWriteFunction;//壓縮數(shù)據(jù)必須使用YUV420格式 //在壓縮之前調(diào)用下面這個(gè)方法
ConvertRGB2YUV(IMAGE_WIDTH,IMAGE_HEIGHT,data,yuv);//壓縮幀……
cparams.format=CPARAM_QCIF;cparams.inter = CPARAM_INTRA;cparams.Q_intra = 8;cparams.data=yuv;//數(shù)據(jù)是YUV格式 CompressFrame(&cparams, &bits);//你可以從開始時(shí)你已經(jīng)注冊(cè)的回調(diào)函數(shù)中取得壓縮的數(shù)據(jù) //最后,終止編碼器 // ExitH263Encoder();
(二)解碼器編程
注意,原始的H.263編碼器庫以C方式進(jìn)行編碼,而且提供了其它更多的細(xì)節(jié)實(shí)現(xiàn)。在本文中,我們以C++重新進(jìn)行了改寫。下面是解碼器的使用示例代碼框架: //初始化解碼器 InitH263Decoder();//解壓幀……
//rgbdata必須足夠大以便存儲(chǔ)輸出數(shù)據(jù); //解碼器以YUV420格式生成圖像數(shù)據(jù); //解碼之后,把它再轉(zhuǎn)換成RGB24格式…… DecompressFrame(data,size,rgbdata,buffersize);//最后一步,終止解碼器 ExitH263Decoder();
四、運(yùn)行應(yīng)用程序
為了試驗(yàn)本文示例應(yīng)用程序,應(yīng)該把可執(zhí)行文件復(fù)制到一個(gè)LAN中的兩臺(tái)不同的機(jī)器上;然后,分別運(yùn)行之。從一臺(tái)機(jī)器上選擇“連接”菜單項(xiàng),并在彈出對(duì)話框內(nèi)輸入另一臺(tái)機(jī)器的名字或IP地址,最后點(diǎn)擊“連接”按鈕。此時(shí),在另一臺(tái)機(jī)器上應(yīng)該彈出一個(gè)“接受/拒絕”的對(duì)話框窗口,點(diǎn)擊“接受”按鈕。之后,在第一臺(tái)機(jī)器上將顯示通知對(duì)話框。按“OK”即可開始你的視頻會(huì)議(聊天……)了。
第三篇:圖書館網(wǎng)站網(wǎng)站功能設(shè)計(jì)
圖書館網(wǎng)站網(wǎng)站功能設(shè)計(jì)
用戶分類
1.管理員 1).超級(jí)管理員平臺(tái)設(shè)置: 數(shù)據(jù)庫管理(備份、恢復(fù))公告管理 底部欄目管理(關(guān)于我們、購物指南、配送方式、支付方式)添加管理員 學(xué)校管理: 添加學(xué)校、學(xué)院、班級(jí) 商品管理: 商品分類(2 級(jí)分類)商品添加 商品查詢(可以按分類查詢和修改商品的庫存、價(jià)格等信息)缺貨登記管理(商品添加應(yīng)有圖書名稱、出版社、作者、ISBN,出版時(shí)間、版次等信息)(商品價(jià)格體系共有三個(gè):進(jìn)價(jià)、定價(jià)、小管家價(jià)。網(wǎng)站網(wǎng)頁上顯示的是小管家價(jià) 和定價(jià),其中小管家價(jià)就是本網(wǎng)站的售價(jià),因?yàn)榫W(wǎng)站名叫校園小管家,定價(jià)就是圖 書的定價(jià),進(jìn)價(jià)就是圖書的進(jìn)貨價(jià),在網(wǎng)站后臺(tái)添加,不顯示在網(wǎng)頁上,小管家價(jià) 與進(jìn)價(jià)之間差價(jià)的 30%就是小管家的收益)
訂單管理: 按日期,班級(jí),姓名等查詢訂單信息和處理訂單。會(huì)員管理: 普通會(huì)員管理(會(huì)員的刪除、查看、鎖定)(會(huì)員刪除指的是會(huì)員畢業(yè)信息將被刪除。會(huì)員鎖定指的是租書規(guī)定時(shí) 期內(nèi)未還的會(huì)員的賬號(hào)將被鎖定,將無法進(jìn)行提交訂單)小管家管理(設(shè)置小管家、解除小管家、提現(xiàn)申請(qǐng)?zhí)幚恚┙y(tǒng)計(jì)報(bào)表: 銷售明細(xì) 租賃明細(xì) 可以按照日期、學(xué)校、學(xué)院、班級(jí)小管家、會(huì)員查詢 2)管理員 學(xué)校管理: 添加學(xué)校、學(xué)院、班級(jí) 商品管理: 商品分類(2 級(jí)分類)商品添加 商品查詢(可以按分類查詢和修改商品的庫存、價(jià)格等信息)缺貨登記管理(商品添加應(yīng)有圖書名稱、出版社、作者、ISBN,出版時(shí)間、版次等信息)(商品價(jià)格體系共有三個(gè):進(jìn)價(jià)、定價(jià)、小管家價(jià)。網(wǎng)站網(wǎng)頁上顯示的是小管家價(jià) 和定價(jià),其中小管家價(jià)就是本網(wǎng)站的售價(jià),因?yàn)榫W(wǎng)站名叫校園小管家,定價(jià)就是圖 書的定價(jià),進(jìn)價(jià)就是圖書的進(jìn)貨價(jià),在網(wǎng)站后臺(tái)添加,不顯示在網(wǎng)頁上,小管家價(jià) 與進(jìn)價(jià)之間差價(jià)的 30%就是小管家的收益)
訂單管理: 按日期,班級(jí),姓名等查詢訂單信息和處理訂單。會(huì)員管理: 普通會(huì)員管理(會(huì)員的刪除、查看、鎖定)(會(huì)員刪除指的是會(huì)員畢業(yè)信息將被刪除。會(huì)員鎖定指的是租書規(guī)定時(shí) 期內(nèi)未還的會(huì)員的賬號(hào)將被鎖定,將無法進(jìn)行提交訂單)小管家管理:(設(shè)置小管家、解除小管家、提現(xiàn)申請(qǐng)?zhí)幚恚┙y(tǒng)計(jì)報(bào)表: 銷售明細(xì) 租賃明細(xì) 可以按照日期、學(xué)校、學(xué)院、班級(jí)小管家、會(huì)員查詢 2.班級(jí)小管家 班級(jí)訂單管理:可以對(duì)班級(jí)內(nèi)成員下單情況進(jìn)行查看。我的訂單: 我的收益: 余額: 申請(qǐng)?zhí)岈F(xiàn) 缺貨登記: 歷史查詢:會(huì)員可以在登陸之后查詢自己的租書和買書的歷史記錄。普通用戶: 我的訂單: 申請(qǐng)成為班級(jí)小管家。缺貨登記:
歷史查詢:會(huì)員可以在登陸之后查詢自己的租書和買書的歷史記錄。所有用戶和非用戶均可查看全站圖書全部信息。只有注冊(cè)用戶可下訂單。非注冊(cè)用戶下單時(shí)會(huì)提示需要注冊(cè)。
會(huì)員注冊(cè)功能 注冊(cè)郵箱(必填)創(chuàng)建密碼(必填)真實(shí)姓名(必填)性別(必填)學(xué)校、學(xué)院、班級(jí)(必填)學(xué)歷(必填)入學(xué)時(shí)間(必填)郵箱激活
男、女 管理員后臺(tái)添加,會(huì)員選擇 ???、本科、管理員后臺(tái)添加,會(huì)員選擇
歷史查詢功能 描述:會(huì)員可以在登陸之后查詢自己的租書和買書的歷史記錄。購物車功能 描述:用戶登陸后,可以在瀏覽圖書時(shí)將圖書進(jìn)行加入購物車,購物車內(nèi)圖書永久存在,不會(huì)因?yàn)殛P(guān)閉瀏覽器而消失,用戶可手動(dòng)刪除和修改數(shù)量。
圖書查詢
描述:搜索圖書,搜索類別包括書名、作者、ISBN。
圖書詳情 描述:顯示有關(guān)該圖書所有已錄入信息,包括租賃價(jià)格和新書價(jià)格。幫助功能 在網(wǎng)站底欄顯示,類似當(dāng)當(dāng)網(wǎng)
分:關(guān)于我們、購物指南、配送方式、支付方式 幫助信息 具體內(nèi)容后臺(tái)添加即可 支付 描述:分為貨到付款 和 供)。
支付寶(需自行于支付寶簽約,并提供接口密碼)(待提
貨到付款情況描述: 用戶提交訂單(選擇支付方式:貨到付款)------用戶訂單情況同時(shí)提交到班級(jí)小管家 和管理員后臺(tái)(訂單狀態(tài)顯示為等待買家付款)-------網(wǎng)站發(fā)貨到班級(jí)小管家(小管家可先 行墊付或早些收款支付給網(wǎng)站送貨人員,小管家在班級(jí)訂單上找到該用戶訂單,并點(diǎn)擊已 收貨和付款----送貨人員返回把貨款交與網(wǎng)站管理人員,并點(diǎn)擊已付款,完成。完成單筆交 易。
第四篇:UML實(shí)驗(yàn)報(bào)告
一:需求分析
在我國十年前ATM(自動(dòng)取款機(jī))還是一個(gè)很新鮮的事物,現(xiàn)在在城市的大街小巷隨處可見。我們?cè)谌粘I钪幸步?jīng)常和ATM打交道。本章我們將以簡化的ATM系統(tǒng)為例將前面幾章中學(xué)到的用例圖、類圖、順序圖、狀態(tài)圖、活動(dòng)圖及協(xié)作圖知識(shí)運(yùn)用到此例中。二:銀行ATM機(jī)系統(tǒng)UML建模設(shè)計(jì) 1.用例圖
參與者“銀行儲(chǔ)戶”和ATM機(jī)。簡化后的ATM機(jī)僅有取款、存款及其余功能。其余功能不做詳細(xì)說明。
銀行儲(chǔ)戶在ATM機(jī)上完成取款、存款及其他業(yè)務(wù)。2.類圖
整個(gè)銀行系統(tǒng)包括了帳戶庫、銀行儲(chǔ)戶庫及ATM系統(tǒng)。
許多單個(gè)的帳戶組成了帳戶庫。帳戶具有帳戶類型、帳戶號(hào)、余額三個(gè)屬性,均為private,其類型分別為char,int,double。六個(gè)操作分別為setType、getType、getAccountNumbe、setAccountNumbe、caculateBalance、getBalance,除caculateBalance為protected其余均為public。
setType設(shè)置帳戶類型,返回類型為void,參數(shù)類型為char,輸入帳戶類型。getType獲取帳戶類型,返回類型為char,無參數(shù)。
setAccountNumbe設(shè)置帳戶號(hào),返回類型為void,參數(shù)類型為int,輸入帳戶號(hào)。getAccountNumbe獲取帳戶號(hào),返回類型為int,無參數(shù)。
caculateBalance計(jì)算余額,返回類型為void,參數(shù)為double,第一個(gè)參數(shù)為輸入存取款數(shù)額,第二個(gè)參數(shù)為存款余額,既為輸入也為輸出。getBalance獲取帳戶余額,返回類型為double,無參數(shù)。
許多銀行儲(chǔ)戶組成了儲(chǔ)戶庫。ATM系統(tǒng)包含了許多ATM機(jī)。銀行儲(chǔ)戶及ATM機(jī)兩個(gè)類包含哪些屬性,哪些操作,它們的可見性及操作的返回類型、參數(shù)個(gè)數(shù)、參數(shù)類型從類圖上都一目了然。更多的屬性及操作都可以一一加上,使這個(gè)類圖更詳細(xì)更完整,從而使參與項(xiàng)目的每個(gè)成員都能無歧義的明了整個(gè)設(shè)計(jì)的類的結(jié)構(gòu)。同樣對(duì)于一個(gè)真正的銀行系統(tǒng),這個(gè)類圖過于簡單。比如帳戶類型我們可以先定義一個(gè)abstract class,它包含一個(gè)帳戶最基本的屬性及操作。而有些操作先定義為abstract,如余額的計(jì)算。然后再繼承這個(gè)abstract class,我們可以有saving account 和checking account等等。不同的帳戶有不同的余額計(jì)算方法,我們可以加上具體的算法。對(duì)于不同的帳戶可能還有一些它特有的操作,我們也可以加上,比如saving account在存款達(dá)到多少時(shí)可以享受機(jī)票打折的優(yōu)惠。通過類圖不僅可以使設(shè)計(jì)者明確的表達(dá)自己的設(shè)計(jì)意圖,也能幫組自己整理思路,充實(shí)及優(yōu)化自己的設(shè)計(jì)。
3.順序圖
描述顧客在ATM機(jī)上取款時(shí)信息的流動(dòng)情況。以時(shí)間為順序。因?yàn)槭鞘纠龍D,所以整個(gè)過程是沒有出現(xiàn)任何故障時(shí)的流程,并且只畫到了取款結(jié)束。通過這個(gè)圖,我們可以看出消息是如何在系統(tǒng)中不同對(duì)象之間進(jìn)行交互。
通過流程圖我們可以很清楚地看到系統(tǒng)是如何工作的,系統(tǒng)各部分之間的信息及控制是如何發(fā)送的,整個(gè)流程是否合理。流程圖對(duì)我們的設(shè)計(jì)起到了很好的幫助作用。注意在本圖沒有一個(gè)生命線終端有一個(gè)“X”,這是因?yàn)檫@個(gè)流程中還未遇到有對(duì)象生命結(jié)束。當(dāng)有對(duì)象生命結(jié)束時(shí)需在對(duì)應(yīng)的生命線終端畫“X”,表明這個(gè)對(duì)象在這時(shí)被銷毀。
首先銀行儲(chǔ)戶將ATM卡插入讀卡機(jī),讀卡機(jī)將信息傳給客戶管理,客戶管理提出查詢密碼,顯示部分將輸入密碼請(qǐng)求顯示出來….銀行儲(chǔ)戶讀卡機(jī)顯示輸入設(shè)備客戶管理點(diǎn)鈔機(jī)事務(wù)管理1: 插入ATM卡2: 接受ATM卡3: 查詢密碼4: 顯示輸入密碼請(qǐng)求5: 輸入密碼6: 密碼傳遞7: 請(qǐng)求確認(rèn)密碼的合法性8: 確認(rèn)密碼的合法性9: 詢問服務(wù)類別10: 顯示輸入服務(wù)類別請(qǐng)求11: 輸入取款請(qǐng)求12: 取消請(qǐng)求13: 詢問取款數(shù)額14: 顯示輸入數(shù)額請(qǐng)求15: 輸入取款數(shù)額16: 傳遞取款數(shù)額17: 詢問取款數(shù)額確認(rèn)18: 顯示確認(rèn)數(shù)額請(qǐng)求19: 輸入確認(rèn)20: 傳遞確認(rèn)信息21: 數(shù)額合法性確認(rèn)請(qǐng)求22: 確認(rèn)數(shù)額的合法性23: 計(jì)算儲(chǔ)戶余額24: 出鈔請(qǐng)求25: 出鈔26: 取鈔27: 傳遞余額并詢問是否需要其它服務(wù)28: 顯示儲(chǔ)戶余額并顯示其它服務(wù)
第五篇:UML實(shí)驗(yàn)報(bào)告[推薦]
UML實(shí)驗(yàn)報(bào)告
班 級(jí):軟件0841
姓 名:張文成 學(xué) 號(hào):081842173
實(shí)驗(yàn)內(nèi)容:
用例建模、分析建模、設(shè)計(jì)建模(1)、設(shè)計(jì)建模(2)
實(shí)驗(yàn)一:用例建模
[實(shí)驗(yàn)?zāi)康腯 〃掌握客戶需求分析的方法和步驟
〃了解以用例驅(qū)動(dòng)的軟件開發(fā)方法 〃識(shí)別并編寫用例
〃掌握用Rose 進(jìn)行用例建模的具體方法和步驟
[實(shí)驗(yàn)內(nèi)容] 要求學(xué)生根據(jù)周圍的實(shí)際情況,自選一個(gè)小型應(yīng)用項(xiàng)目,分析業(yè)務(wù)需求,識(shí)別并編寫用例、繪制用例圖以理解系統(tǒng)需求。亦可采用教師指定的“企業(yè)綜合信息管理系統(tǒng)”中的“進(jìn)銷存管理子系統(tǒng)”
[實(shí)驗(yàn)原理和步驟] 建模原理:
(1)需求獲取。以任務(wù)和客戶為中心,通過會(huì)議、面談等手段對(duì)客戶需求進(jìn)行調(diào)研,獲得系統(tǒng)目標(biāo)、范圍和功能要求的初步說明。(2)用例分析。確定用例,同時(shí)采用分層思想,對(duì)用例的層次級(jí)別進(jìn)行劃分(高層用例、子系統(tǒng)級(jí)、用戶目標(biāo)級(jí))
(3)用例描述。分層繪制用例圖,撰寫用例的文字描述(采用單欄格式)。
步驟:
(1)需求獲取。自選題目,與相關(guān)客戶、領(lǐng)域?qū)<业确磸?fù)商討,獲得系統(tǒng)目標(biāo)、范圍和功能要求的初步說明。(也可采用教師指定的題目:“企業(yè)綜合信息管理系統(tǒng)”中的“進(jìn)銷存管理子系統(tǒng)”,但要仔細(xì)研讀“企業(yè)現(xiàn)狀”、“系統(tǒng)目標(biāo)、范圍和功能要求”等文字說明)。(2)用例分析。確定系統(tǒng)范圍和邊界、確定參與者、確定用例。(3)用例描述。分層繪制用例圖、描述用例。
畫圖原理:
采用Rose 軟件進(jìn)行用例建模必須建立在完好的系統(tǒng)用例分析基礎(chǔ)之上.只有做好系統(tǒng)用例分析,系統(tǒng)用例建模才能這到預(yù)期的效果。步驟:
(1)分層繪制用例圖,每層采用“包”進(jìn)行管理。
(2)以“企業(yè)綜合信息管理系統(tǒng)”-> “進(jìn)銷存管理”子系統(tǒng)-> “銷售管理”-> “合同管理”->“收款單處理”為主線,完成附錄2 中的操作過程(亦可選擇“企業(yè)綜合信息管理系統(tǒng)”-> “進(jìn)銷存管理”子系統(tǒng)-> “庫存管理”-> “原材料出庫”->“領(lǐng)料單處理”主線)
[ 實(shí)驗(yàn)結(jié)果]
實(shí)驗(yàn)2 分析建模
[ 實(shí)驗(yàn)?zāi)康腯(1)理解面向?qū)ο笙到y(tǒng)分析和對(duì)象類建模(概念建模)的概念(2)了解和掌握面向?qū)ο笙到y(tǒng)分析的方法和步驟(3)了解和掌握尋找待開發(fā)系統(tǒng)中類(概念)的方法和技巧(4)掌握使用ROSE 繪制概念模型的方法
[ 實(shí)驗(yàn)內(nèi)容] 在用例分析的基礎(chǔ)上,選擇第一個(gè)迭代周期打算開發(fā)的用例,建立相關(guān)的概念模型。
[ 實(shí)驗(yàn)原理和步驟] 建模原理:
(1)使用概念目錄列表(見下圖)和非正式分析法(識(shí)別出問題域的文本描述中的名詞短語,然后將其作為概念或?qū)傩缘暮蜻x對(duì)象。)相結(jié)合的方法識(shí)別概念。因此,待開發(fā)用例的文字描述中,名詞可能成為概念或?qū)傩缘暮蜻x對(duì)象;表示行為的動(dòng)詞詞組有可能成為事務(wù)型或過程型對(duì)象;形容詞詞組有可能對(duì)應(yīng)抽象的名詞型概念。
采用的技術(shù)基本上就是:ER 圖+純行為+OO 的聚合、泛化。(2)最終關(guān)聯(lián)的數(shù)量介于“需要知道”型關(guān)聯(lián)與【“需要知道”型關(guān)聯(lián)+“需要理解”型(從通用關(guān)聯(lián)列表中派生出 的,見下圖)】之間。
步驟:
(1)識(shí)別關(guān)鍵用例作為第一個(gè)迭代周期的開發(fā)目標(biāo)(一般是在用例圖中被依賴得比較多的用例)??梢赃x“企業(yè)綜合信息管理系統(tǒng)”-> “進(jìn)銷存管理”子系統(tǒng)-> “庫存管理”-> “原材料出庫”->“領(lǐng)料單處理”主線中的“領(lǐng)料單處理”用例;也可以選“企業(yè)綜合信息管理系統(tǒng)”-> “進(jìn)銷存管理”子系統(tǒng)-> “銷售管理”-> “合同管理”->“收款單處理”主線中的“增加銷售合同”或“收款單處理”用例。(其實(shí),選“庫存管理”主線更合適;當(dāng)然,如果要實(shí)現(xiàn)產(chǎn)銷一體化,以銷售訂單指導(dǎo)生產(chǎn)和采購,并實(shí)現(xiàn)零庫存目標(biāo),那么一切工作就以銷售管理為中心。即便如此,首選“增加合同”用例也更為合適。)
(2)識(shí)別概念和重要屬性。
(3)建立概念間的關(guān)聯(lián)。
畫圖原理:
(1)可以采用“邏輯視圖”下的類圖描述概念模型,只不過每個(gè)類中只有類名和屬性,沒有方法。在概念建模 階段也沒有必要確定屬性的類型和訪問屬性。
(2)概念間的關(guān)聯(lián)可以采用一般關(guān)聯(lián)(無方向?qū)嵕€),當(dāng)然,對(duì)于聚合和泛化,應(yīng)采用相應(yīng)的連線(組合:實(shí)心菱形+實(shí)線;聚合:空心菱形+實(shí)線;泛化:空三角形+實(shí)線)
步驟:
(0)前提條件:第一個(gè)迭代周期可以選“企業(yè)綜合信息管理系統(tǒng)”
-> “進(jìn)銷存管理”子系統(tǒng)-> “庫存管理”->“原材料出庫”->“領(lǐng)料單處理”主線中的“領(lǐng)料單處理”用例;也可以選“企業(yè)綜合信息管理系統(tǒng)”->“進(jìn)銷存管理”子系統(tǒng)-> “銷售管理”-> “合同管理”->“收款單處理”主線中的“增加銷售合同”或“收款單處理”用例。做好與此用例相關(guān)的概念模型
(1)建立相關(guān)的概念模型的基礎(chǔ)上,在“邏輯視圖”下的類圖中描述概念模型,可以直接在類圖main 中繪制,也可采用類似用例圖中用過的分包機(jī)制
(2)繪制概念和重要屬性。(3)繪制概念間的關(guān)聯(lián)。
[ 實(shí)驗(yàn)結(jié)果]
[ 實(shí)驗(yàn)總結(jié)] ① 對(duì)重點(diǎn)實(shí)驗(yàn)結(jié)果進(jìn)行分析;
② 實(shí)驗(yàn)中的問題和提高:對(duì)自己的分析或設(shè)計(jì)進(jìn)行評(píng)價(jià),指出合理和不足之處,提出改進(jìn)的方案。
③ 收獲與體會(huì):篩選概念的要點(diǎn);區(qū)分概念與屬性的要點(diǎn);關(guān)聯(lián)取舍的要點(diǎn);畫圖時(shí)如何防止關(guān)聯(lián)重名。
實(shí)驗(yàn)3 設(shè)計(jì)建模(1)
[ 實(shí)驗(yàn)日期]2011年5月20日 [ 實(shí)驗(yàn)?zāi)康腯(1)理解順序圖的基本概念
(2)了解和掌握軟件工程中用例邏輯時(shí)序的分析方法(3)掌握使用ROSE 創(chuàng)建順序圖的方法
[ 實(shí)驗(yàn)內(nèi)容] 在用例模型和概念模型的基礎(chǔ)上,對(duì)首選的用例進(jìn)行事件分解,識(shí)別出系統(tǒng)事件(系統(tǒng)操作),(并寫出契約的后置條件);為每個(gè)系統(tǒng)事件畫順序圖,為對(duì)象分配職責(zé)。
[ 實(shí)驗(yàn)原理和步驟] 原理:
(1)在系統(tǒng)順序圖中,所有的系統(tǒng)都被當(dāng)成黑盒子看待,順序圖的重點(diǎn)是參與者發(fā)起的跨越系統(tǒng)邊界的事件。
(2)系統(tǒng)事件是由某參與者發(fā)起的指向系統(tǒng)的輸入事件。一個(gè)事件的發(fā)生能夠觸發(fā)一個(gè)響應(yīng)操作的執(zhí)行。
(3)請(qǐng)仔細(xì)研究下圖,考察它是如何從左邊的“購買商品”用例的文字描述中分解出3 個(gè)系統(tǒng)事件的。
(4)參照用例模型和概念模型,為每個(gè)系統(tǒng)操作估計(jì)后置條件。(實(shí)例創(chuàng)建、形成關(guān)聯(lián)、屬性修改)(5)按照設(shè)計(jì)模式為對(duì)象分配職責(zé)。
步驟:
(1)分析首選用例的文字描述,按事件進(jìn)行分解,識(shí)別出系統(tǒng)事件。(下面以“企業(yè)綜合信息管理系統(tǒng)”-> “進(jìn)銷存管理”子系統(tǒng)-> “銷售管理”-> “合同管理”->“收款單處理”主線中的“收款單處理”用例為例)。
我們暫不考慮批處理。第一個(gè)核對(duì),因?yàn)橐獙ⅰ柏浛罱痤~填寫到合同中”。后置條件顯然有“銷售合同”的屬性修改。此合同顯然已經(jīng)存在,不需要?jiǎng)?chuàng)建,但需要根據(jù)合同編號(hào)find,然后形成關(guān)聯(lián)。第二個(gè)核對(duì)需要根據(jù)合同明細(xì)到倉庫的“存貨明細(xì)”(概念模型中還沒有)中去查。此核對(duì)發(fā)生前雖然敲了一下鍵盤,但隨后并沒有新的消息穿越系統(tǒng)邊界,因此這仍然是同一個(gè)系統(tǒng)事件。先考慮成功場景,應(yīng)該向庫存系統(tǒng)發(fā)提貨單(概念模型中還沒有)就結(jié)束了。后續(xù)的削減庫存(核銷)、預(yù)警顯然不是銷售管理員的職權(quán),并且真正的核銷必須由倉庫的發(fā)貨人執(zhí)行,才能保證貨帳一致。并且“生產(chǎn)廠家”與“郵購公司”的運(yùn)作方式不同,后者是自己的員工取貨并郵寄,而前者還有可能是來人來車取貨,這時(shí)倉庫收到取貨單后并不能立即自動(dòng)處理(開發(fā)貨單),必須等取貨人到達(dá)才能處理。
根據(jù)題意,本項(xiàng)目應(yīng)該是“生產(chǎn)廠家”模式。這又存在一個(gè)問題,如
果在開出提貨單后不修改庫存,可能影響并發(fā)用戶和后續(xù)付款單的處理。所以有必要設(shè)計(jì)一個(gè)“臨時(shí)存貨明細(xì)”(概念模型中還沒有)(不是真實(shí)的“存貨明細(xì)”)供修改,何時(shí)按存貨明細(xì)”進(jìn)行刷新應(yīng)該是庫存管理系統(tǒng)的事(比如每天夜里刷新,但因?yàn)橛暄┨鞖?,取?人遲遲不提貨,是提貨單作廢(相當(dāng)于退回銷售系統(tǒng),付款單變?yōu)槲刺幚恚┻€是就強(qiáng)行刷新(此時(shí)有沖突危險(xiǎn))?)失敗場景。向“生產(chǎn)調(diào)度部門”發(fā)送“產(chǎn)品生產(chǎn)申請(qǐng)單”。如果是專門為此單進(jìn)行生產(chǎn),那么還應(yīng)該有庫存系統(tǒng)發(fā)來的“產(chǎn)品入庫通知處理”用例來調(diào)用本用例進(jìn)行發(fā)貨。本題顯然一概根據(jù)付款單運(yùn)作,因此如果失敗,就不處 理付款單,但按日期把它排在待處理付款單的前面。從前面的分析來看,就一個(gè)系統(tǒng)事件,我們就命名為“付款單處理(pb:付款單)”(2)為每個(gè)系統(tǒng)事件估計(jì)后置條件。(以上已做了部分分析)(3)按設(shè)計(jì)模式進(jìn)行設(shè)計(jì)。
首先考慮控制者,領(lǐng)域控制者選參與者角色,即“銷售人員”。為了避免使用FORM,窗口等表示層對(duì)象,我們?nèi)嗽煲?個(gè)類”應(yīng)用協(xié)調(diào)者”向控制者發(fā)送消息。
[ 實(shí)驗(yàn)結(jié)果]
① 對(duì)重點(diǎn)實(shí)驗(yàn)結(jié)果進(jìn)行分析;
② 實(shí)驗(yàn)中的問題和提高:對(duì)自己的分析或設(shè)計(jì)進(jìn)行評(píng)價(jià),指出合理和不足之處,提出改進(jìn)的方案。
③ 收獲與體會(huì):事件分解的要點(diǎn);控制者選擇的要點(diǎn);繪制順序圖的要點(diǎn)。
[ 實(shí)驗(yàn)總結(jié)] ① 對(duì)重點(diǎn)實(shí)驗(yàn)結(jié)果進(jìn)行分析;
② 實(shí)驗(yàn)中的問題和提高:對(duì)自己的分析或設(shè)計(jì)進(jìn)行評(píng)價(jià),指出合理和不足之處,提出改進(jìn)的方案。
③ 收獲與體會(huì):事件分解的要點(diǎn);控制者選擇的要點(diǎn);繪制順序圖的要點(diǎn)。
實(shí)驗(yàn)4 設(shè)計(jì)建模(2)
[ 實(shí)驗(yàn)日期] 2011年5月27日 [ 實(shí)驗(yàn)?zāi)康腯(1)理解面向?qū)ο箢愔g關(guān)聯(lián)關(guān)系的概念(2)了解和掌握分析類之間的關(guān)聯(lián)關(guān)系的方法
(3)了解和掌握待開發(fā)系統(tǒng)中類之間關(guān)聯(lián)關(guān)系的分析方法(4)完善設(shè)計(jì)類圖,掌握使用ROSE 對(duì)關(guān)聯(lián)進(jìn)行建模的過程
[ 實(shí)驗(yàn)內(nèi)容] 根據(jù)設(shè)計(jì)建模(1)中的交互分析,進(jìn)一步設(shè)計(jì)關(guān)聯(lián)和對(duì)象可見性(補(bǔ)
上遺漏的關(guān)聯(lián)),完善設(shè)計(jì)類圖。
[ 實(shí)驗(yàn)原理和步驟] 建模原理:
(1)關(guān)聯(lián)關(guān)系描繪了給定類的對(duì)象個(gè)體之間的語義連接,是類與類之間的連接。關(guān)聯(lián)可以分為一般關(guān)聯(lián)、聚合關(guān) 聯(lián)、組合關(guān)聯(lián)和依賴關(guān)聯(lián)等。
(2)一般關(guān)聯(lián)包括一對(duì)類的二元關(guān)聯(lián)及多個(gè)類之間的多元關(guān)聯(lián)。
(3)聚合(Aggregation)表示整體和部分之間較強(qiáng)的關(guān)聯(lián)關(guān)系,聚合關(guān)系的多重性大于1,則稱為共享聚合。
(4)組合(Composition)關(guān)系表示整體和部分之間有比聚合關(guān)系更強(qiáng)的關(guān)系,它們之間是一對(duì)一的關(guān)系,即同生死共存亡,組合關(guān)系不能共享。
(5)依賴關(guān)系是一種使用關(guān)系,表現(xiàn)為一個(gè)對(duì)象僅僅調(diào)用了另一個(gè)對(duì)象的服務(wù)??梢允褂孟铝械闹笇?dǎo)方針列出暫時(shí)性的關(guān)系:
(1)存在兩個(gè)或兩個(gè)以上的類相互之間就可能有關(guān)聯(lián)。(2)類的操怍(成員函數(shù))的參數(shù)列表里出現(xiàn)其他類的對(duì)象。(3)一個(gè)類包含另一個(gè)類的對(duì)象(對(duì)象成員)。(4)根據(jù)一般常識(shí)可能會(huì)出現(xiàn)的關(guān)聯(lián)。步驟:
(1)分析已建立的設(shè)計(jì)類圖和交互圖,進(jìn)一步設(shè)計(jì)關(guān)聯(lián)和
對(duì)象可見性(補(bǔ)上遺漏的關(guān)聯(lián))。(下面以“企業(yè)綜合 信息管理系統(tǒng)”-> “進(jìn)銷存管理”子系統(tǒng)-> “銷售管理”-> “合同管理”->“收款單處理”主線中 的“收款單處理”用例為例)。
在銷售管理子系統(tǒng)中,定義的各個(gè)類之間一般都有關(guān)系發(fā)生。銷售人員和客戶(大客戶)共同簽署銷售合同,銷售合同中涉及到多種可以銷售的產(chǎn)品,合同經(jīng)公司經(jīng)理審查并簽字后該合同才能生效,付款單需要客戶付款,銷售人員簽發(fā)催款單向客戶催繳欠款,銷售人員制定銷售計(jì)劃,銷售人員要檢查督促執(zhí)行期合同按合同執(zhí)行、履 約,履約后的合同轉(zhuǎn)到履約合同數(shù)據(jù)庫存檔備查等等。例如:
(a)銷售人員與客戶:一般關(guān)聯(lián),多對(duì)多
(b)銷售合同與合同明細(xì),銷售計(jì)劃與計(jì)劃明細(xì):組合。(c)付款單與客戶:依賴關(guān)系?!度绻犊顔晤愔杏小敖y(tǒng)計(jì)付款金額(客戶類客戶對(duì)象)”操作的話,付款 單類就依賴客戶類》(2)完善設(shè)計(jì)類圖 畫圖原理:
(1)關(guān)聯(lián)關(guān)系描繪了給定類的對(duì)象個(gè)體之間的語義連接,是類與類之間的連接。關(guān)聯(lián)可以分為一般關(guān)聯(lián)、聚合關(guān) 聯(lián)、組合關(guān)聯(lián)和依賴關(guān)聯(lián)等。
(2)一般關(guān)聯(lián)包括一對(duì)類的二元關(guān)聯(lián)及多個(gè)類之間的多元關(guān)聯(lián)。
(3)聚合(Aggregation)表示整體和部分之間較強(qiáng)的關(guān)聯(lián)關(guān)系,聚合關(guān)系的多重性大于1,則稱為共享聚合。
(4)組合(Composition)關(guān)系表示整體和部分之間有比聚合關(guān)系更強(qiáng)的關(guān)系,它們之間是一對(duì)一的關(guān)系,即同生死共存亡,組合關(guān)系不能共享。
(5)依賴關(guān)系是一種使用關(guān)系,表現(xiàn)為一個(gè)對(duì)象僅僅調(diào)用了另一個(gè)對(duì)象的服務(wù)。步驟:
(1)在關(guān)聯(lián)和對(duì)象可見性分析的基礎(chǔ)上,補(bǔ)充一般關(guān)聯(lián)、組合,泛化、依賴
(a)一般關(guān)聯(lián)關(guān)系要注意關(guān)聯(lián)的命名以及哪個(gè)是role A 哪個(gè)是role B。
(b)一般關(guān)聯(lián)選中role B detail 中的aggregate,就變成聚合;再選中by value 就變成組合。(c)依賴畫虛線箭頭。(2)完善設(shè)計(jì)類圖
[實(shí)驗(yàn)結(jié)果] ① 對(duì)重點(diǎn)實(shí)驗(yàn)結(jié)果進(jìn)行分析;
② 實(shí)驗(yàn)中的問題和提高:對(duì)自己的分析或設(shè)計(jì)進(jìn)行評(píng)價(jià),指出合理和不足之處,提出改進(jìn)的方案。
③ 收獲與體會(huì):分析依賴關(guān)系的要點(diǎn),繪制關(guān)聯(lián)的要點(diǎn)。通過實(shí)驗(yàn)了解UML的建模的步驟和方法,了解用例圖和類圖等的畫法,了解系統(tǒng)的分析和建模方法。增加動(dòng)手和思維能力,使自己更加的了解軟件系統(tǒng)前期開發(fā)的軟件定義和分析方法。