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