亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 課堂 > 技術開發 > 正文

UML系列內容之十三:組件圖

2023-06-17 18:00:44
字體:
來源:轉載
供稿:網友

今天,本站帶領大家來熟悉一下UML中的組件圖。

1 什么是組件圖

組件圖(Component Diagram)又稱構件圖,是UML中描述一個系統中的物理方面的圖形,它是用來描述構成系統的各個組件、組件提供的接口與需求的接口、端口以及它們之間關系的圖。

這種圖在基于組件開發的系統建模中很重要。

組件圖可以幫助用戶理解系統的結構。

2 組件圖的構成

組件圖中主要包括組件、接口及其它們之間的關系三種元素。

2.1 組件

組件(Component)是定義了良好接口的、可重用的、可替代的物理實現單元,它一般表示實際存在的、物理的物件。

程序源代碼、可執行文件、子系統、一個腳本、動態鏈接庫(DLL)、ActiveX控件都可以成為系統中的組件。

組件隱藏了內部實現的細節,僅通過接口提供服務。

我們可以把組件理解為一個黑盒子,這個黑盒子使用接口來公開其公共可見的屬性及操作,這一點與類非常相似。

在UML1.x版本中,一個標準的組件使用如下的圖形來表示。

UML1.x中的組件表示圖形

而在UML2.x中一般使用如下的圖形來表示一個組件。

UML2.x中的組件

也可以使用類似類的矩形框加上構造型<<component>>來表示組件,如下圖所示:

帶構造型的組件表示方法

2.2 接口

組件中的接口主要分為兩類:提供接口(Provided Interface)和需求接口(Required Interface)。

提供接口又稱導出接口,是組件提供的服務的集合。

提供接口是由組件本身直接實現的接口、或者是由實現組件的類之一實現的接口,或者是由組件的公共端口提供的接口。

提供接口可以使用接口與組件之間的實現關系來表示。

提供接口可以在組件圖標的邊框上使用類似棒棒糖式(lollipop)的圖標來表示。如下圖所示:

帶提供接口的組件

這個圖表示WeatherServices組件提供或實現了WeatherForecast接口。

它可以認為是下圖的簡化表示方法:

組件的實現關系1

需求接口又稱導入接口,是組件請求其它組件相應服務時遵循的接口。

需求接口通過依賴關系來表示,需求接口可以使用插座(Socket)的圖標連接到組件邊框上來表示,如下圖所示:

組件的需求接口

上面這個圖表示UserServices組件需要(依賴)IOrderServices接口。

它可以認為是下圖的簡化表示方法:

組件和接口間的依賴關系

作為一種可選方式,可以把組件的接口或組件的操作和屬性列在組件圖標下邊的隔室里。

組件與接口間的表示方法

上面這個圖表示,UserServices接口提供的接口有IUserServices,需求的接口有IOrderServices。

2.3 端口

端口用于描述組件或類與它的環境、與其它類、與其它組件或內部部件的交互點。這個交互點一般是組件或類的一個屬性,默認情況下,端口具有公共可見性。

端口使用類或組件邊框上的一個小矩形來表示,如下圖所示:

組件和端口

上圖表示BorrowServices組件有一個borrowPort端口。

接口通過端口來提供服務或獲得服務,下圖表示了這種情況:

組件的接口通過端口來提供服務或獲得服務

3 組件圖中的關系

組件圖中的關系主要包括兩種:依賴關系和實現關系

3.1 依賴關系

組件圖中的依賴關系與類圖中相同,都是“供應者-客戶”關系(supplier-client),使用虛線箭頭由客戶(client)組件指向供應者(supplier)組件。

下圖表示組件“borrowBook”依賴于組件“Book”,其中,“borrowBook”是客戶組件,Book是供應者組件。

組件之間的依賴關系1

下圖也表示了兩個組件之間的依賴關系,它表示了borrowBook組件的一個需求接口依賴于Book組件的一個提供接口:

組件和接口的依賴關系2

一般這種依賴關系都是從插座接口引出指向棒棒糖接口。

上圖也可以簡化成下面的形式:

組件和接口的依賴關系3

上面這個圖表示了borrowBook使用某個需求接口與Book組件的提供接口產生依賴關系。

這種圖在UML2.x中被定義為連接。

3.2 實現關系

組件之間的實現關系表示一個組件實現了另外一個組件。這與類和接口之間的實現關系相同。

下面第一個圖表示組件borrowBook實現了組件IBorrowBook。

如果IBorrowBook組件僅包含一個接口的話,也可以使用第二個圖來表示(見上面關于組件提供接口的說明)。

組件和接口的實現關系

組件實現了一個接口意味著組件支持接口中的所有操作。

4 組件圖建模技術

Scott W.Ambler在其著作《The Object Primer:Agile Model-Driven Development with UML 2.0》第三版中給出了關于組件建模技術的一些方法和技巧:

敏捷模型驅動的建模UML2.0

在實際組件建模中可以采用自頂向下的方法,也可以使用自底向上的方法。

使用自頂向下的建模方法可以使設計人員能夠更清晰的了解軟件的未來架構,但這種方法容易導致系統的過度架構化,從而導致系統的過度建模,易使設計人員過度關注細節,而忽略了客戶的真正需求。

使用自底而上的方法可以在類建模的基礎上把已設計的類進行組件化,把系統中可重用的部分分離出來,或者將應用程序進行拆分,以便把任務輕松地分配給相應的團隊。

在組件建模中可以使用如下步驟或原則進行建模:

(1)保持組件的內聚性

一個組件應保持其功能單一性或功能相關性。如,一個組件僅包含某類用戶的用戶界面、或者僅包含大規模領域概念的業務類,或者僅包含公共基礎概念的技術類。

(2)將用戶界面類分配給應用程序組件

用戶界面類,如頁面、報告以及實現相關邏輯的類,應該放在帶有“application”構造型的組件中。如Java中JSP頁面、servlet和Swing類等。

(3)把技術類分配到基礎架構組件中

實現系統級服務的類,如安全、持久性或中間件,應該分配到帶有“infrastructure”構造型的組件中。

(4)定義類的契約

類契約是指能夠直接響應其它對象發送的消息的方法(操作)。

如在Books類中很可能包括getBookInfo()這樣的方法,這樣的方法能夠響應來自其它組件中對象發送的消息。

為了很好的識別組件,你可以忽略所有非類契約的操作,原因是這些操作對促進分布在不同組件中的對象之間進行通信不會提供太大幫助。

(5)把一個具有層次結構的所有類(如類的繼承或聚合層次結構)分配到相同組件中。

(6)識別領域組件

若干類相互協作以完成特定的任務,這些類滿足內聚要求,從而成為一個領域組件。其它類或組件能夠通過向該領域組件發送消息以請求獲得信息或執行操作。領域組件對外顯示出其簡單性,但其內部通常很復雜。領域組件設計的目標是減少網絡通信,而使大多數信息流發生在其內部。

(7)確定業務類的協作類型

服務器類是接收消息但不發送消息的類;客戶類是發送消息但不接收消息的類;客戶/服務類是兼有發送消息和接收消息的類;在確定好每個類的分布類型后,就可以開始確定潛在的領域組件了。

(8)把服務器類歸為一個組件中

純服務器類屬于領域組件,他們是應用程序中消息流的“最后一站”。

(9)將僅為某客戶端類服務的組件合并到其客戶組件中

如果一個領域組件僅為某一個組件提供服務,那么可以把這兩個組件合并為一個組件。

(10)單純的客戶端類不應歸到領域組件中

客戶端類只生成消息而不接收消息,不應屬于領域組件。領域組件的目的是響應消息。客戶端類很可能屬于應用程序組件。

(11)高度耦合的類應歸為一個組件中

兩個頻繁協作的類應位于相同的領域組件,以減少兩個類之間的網絡流。即,高度耦合的類應放在一起。

(12)遵循最小化組件間的消息流原則

在確定一個客戶類/服務類屬于哪個組件時,要充分考慮流入和流出類的信息流。組件內的通信通常是在內存中對象之間簡單的消息發送。組件間的通信往往需要消息的轉換、傳輸等額外的支出。

(13)定義組件的契約

每個組件應向客戶提供服務,這樣的服務即為組件的契約。

5. 使用Rational Rose繪制組件圖

Rational Rose支持1.x的組件圖繪制方法,其能表示組件與接口之間的實現關系以及組件之間的依賴關系,但不能繪制“Socket”插座式的需求接口形式。用戶在實際中可以通過接口之間的依賴來表達。

5.1 新建組件視圖

在Rose中,在組件視圖(Component View)中創建組件圖,可以在Rose中左側的瀏覽器中的“Component View”上右擊,然后選擇“New”->“Component Diagram”。

5.2 新建組件

使用組件圖創建工具欄中的“組件”可以創建一個組件。

組件圖中的工具箱如下圖所示:

UML提供的組件圖工具

選“組件”工具后,在繪圖區點擊一下即可以完成一個組件的創建。

5.3 修改組件的名稱

(1)用戶在創建組件時,可以直接修改組件的名稱;

(2)在左側瀏覽器中,選中要修改名稱的組件,然后右擊后選擇“Rename”,最后,輸入新的名稱即可,具體如下圖所示:

Rose中為組件重命名

(3)在繪圖區中,在對應的組件上右擊后,在彈出的快捷菜單中選擇“Open Standard Specification...”。

這個操作會打開如下圖所示的對話框:

Rose中組件的詳述對話框

在這個對話框的“Name”中可以輸入新的組件名稱。

5.4 刪除一個組件

在Rose中,要徹底刪除一個組件,可以通過以下幾種方式:

(1)在繪圖區中,右擊要刪除的組件,在彈出的快捷菜單中選擇“Edit”->“Delete from Model”菜單項;

(2)選中要刪除的組件,按下“Ctrl+D”組合鍵,則可以快速刪除組件;

(3)選中要刪除的組件,選擇菜單欄中的“Edit”->“Delete from Model”菜單項;

(4)在左側瀏覽器中,在要刪除的組件上右擊后,在彈出的菜單中選擇“Delete”。

以上的四種操作方法,將會把組件在所有模型中徹底刪除。

如果其它模型中使用了該組件,且只是把組件從當前模型中的話,用戶可以選中組件后,直接按下鍵盤中的“Delete”鍵即可,或者右擊要刪除的組件后,在快捷菜單中選擇“Edit”->“Delete”也可以實現該操作。

5.5 定義組件的接口

在Rose中,可以為組件指定其要實現的接口(提供接口——Provided Interface),具體操作方法如下:

(1)右擊要設置的組件,在彈出的快捷菜單中選擇“Open Standard Specification...”;

(2)在彈出的對話框中選擇“Realizes”選項卡,該選項卡中列出了模型中所有的類和接口,具體情形如下圖所示:

Rose中實現一個接口的方法

(3)在要實現的接口上右擊后,選擇“Assign”(分配)菜單項。

操作情形如下圖所示:

Rose中分配一個接口到組件

分配完接口后的組件及操作對話框后的情形如下圖所示:

Rose中分配接口之后的情形

我們可以看到,組件上多了兩個接口(提供接口),同時在“Realizes”列表中,以分配到該組件的接口上將出現紅色的“√”符號。

為組件指定實現的接口后的樣子如下圖所示:

Rose中帶實現接口的情形

它表示IBook和IReader接口在組件BorrowBooks中實現的,也表示BorrowBooks提供了IBook和IReader兩個接口(提供接口)。

如果用戶想把一個接口從組件中移除,用戶可以在列表中的組件上右擊后,在彈出的菜單中選擇“Remove Assignment”菜單項。

實際上,以上操作相當于定義了組件和接口之間的實現關系。

用戶也可以使用同樣的方法,把組件中包含的類分配到某個組件中。

(4)添加依賴關系

組件圖中的依賴關系需要借助工具欄中的“依賴”工具來實現。

具體操作辦法如下:

①用戶點擊“依賴”工具;

②在依賴元素上點擊后,一直按住鼠標左鍵,拖動鼠標到被依賴元素上松開鼠標左鍵,則完成了元素之間的依賴關系。

如下圖顯示了組件“Fine”和接口“IFineRecords”之間的依賴關系。

Rose中接口與組件的依賴

它相當于組件的需求接口(Required Interface)。

6. 使用Visio繪制組件圖

Visio中雖然提供了一些繪制UML圖的模板,但沒有提供專門繪制組件圖的模板。但用戶可以在Pavel Hruby博士的網站上下載專門用于繪制UML圖的Visio模具包。

Visio中繪制組件圖

這個Visio模具包叫“Visio Stencil for UML”。

該模板可以支持UML2.5中的各種圖形,包括用例圖、類圖、時序圖、包圖、狀態機圖、組件圖等。

可以在微信搜索“優雅的代碼”訂閱號,關注后,消息中回復“visio uml”關鍵字來獲取該模板的下載地址。

下載后,把這個模具包解壓縮到你的電腦某個磁盤中的某個目錄中以備使用。

6.1 把下載的模具加載到Visio中

Visio Stencil for UML針對不同的Visio版本有不同的模具。正常情況下高版本的Visio可以支持低版本的Visio Stencil for UML。

(1)打開Visio,新建繪圖;

(2)選擇“更多形狀”,然后選擇“打開模具”;

(3)選擇你解壓縮后的Visio Stencil for UML模具。

這樣,就可以把下載的模具加載到繪圖區中來了。

你也可以把下載解壓縮的文件放到Visio默認的模具路徑中,具體操作方法為:

在“文件”菜單中選擇“選項”,然后在左側選擇“保存”項,在右側列出的內容中找到“默認個人模板位置”,這里是模板保存的路徑,你可以把解壓縮后的Visio Stencil for UML文件復制到這個文件夾中。

或者你在這里直接輸入Visio Stencil for UML所在的路徑。

6.2 Visio Stencil for UML提供的主要模板

下圖顯示了這個工具中提供的繪制UML圖的全部圖形符號。

Visio中提供的繪制組件圖的圖形工具

同時,在下載的工具中也提供了一些UML其它的構造型符號供設計時使用。

6.3 往繪圖區添加組件

(1)添加一個組件

在左側形狀中,選擇“Component”(組件),然后把它拖曳到繪圖區中來。

(2)輸入名稱

雙擊組件符號,輸入或修改組件的名稱。

(3)調整組件顯示大小

如果需要調整組件的大小,可以選中組件,在其周圍會出現若干個白色的小方塊,如下圖所示:

Visio中調整圖形的大小

鼠標到上面會變成雙向箭頭的形狀,然后按住鼠標左鍵,通過拖拽來改變圖形的顯示大小。

(4)修改字體

選中組件后,在“開始”功能區的“字體”分組中可以修改字體、顏色以及字體的大小、是否加粗、是否有下劃線等設置,如下圖所示:

Visio中設置圖形中字體大小及樣式

6.4 為組件添加接口

在左側形狀中選擇“Interface,Socket”圖形,如下圖所示的圖形:

Visio中為組件添加提供或需求接口

然后把它拖曳到繪圖區中的組件附近,這時,相應的組件周圍會出現若干貼附點,如下圖所示:

Visio中為組件添加接口的情形

選擇一個貼附點,然后松開鼠標后,其會變成如下的形式:

Visio中為組件添加接口后的情形

用戶可以選中接口,通過按住圈中(接口)的黃色小方框來拉長接口的線。

Viso中調整接口與接口連接線的長度

默認是提供接口(Provided Interface)的形狀,如果想要添加需求接口(Required Interface),則只需在添加的接口上右擊,然后選擇“Socket”即可,如下圖所示:

Visio中切換需求接口和提供接口

則原來的提供接口的形狀就變成了需求接口的形狀,如下圖所示:

Visio中的改變為需求接口

6.5 為組件添加依賴關系

在這個工具中可以通過在繪圖中添加“Straight Relationship”為組件圖中添加依賴關系。

Visio中添加依賴關系

然后將其微端連接到依賴元素的貼附點上,其頭端連接到被依賴元素的貼附點上。

默認添加的“Straight Relationship”為一條直線,情形如下圖所示:

Viso中添加的依賴關系

用戶可以通過右擊這個直線,然后在菜單列表中選擇“Dependency”,即完成依賴關系的繪制。

Visio中關系的類型

下圖是修改完聯系類型的情形:

Visio中創建的依賴關系

7 一個例子

下面是圖書館借閱系統中的組件圖,這個組件圖即是使用上面介紹的Visio Stencil for UML工具創建而成的。

圖書館管理系統組件圖-Visio

下圖是在Rose中實現的例子:

圖書館管理系統組件圖-Rose

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久激情| 啊v视频在线一区二区三区| 影音先锋欧美精品| 欧日韩不卡在线视频| 夜夜嗨av色一区二区不卡| 色妞欧美日韩在线| 成人免费在线网址| 日韩欧美极品在线观看| 亚洲成色777777在线观看影院| 激情久久av一区av二区av三区| 日韩一区二区久久久| 国产日韩综合一区二区性色av| 欧美精品久久久久久久| 欧美国产日本在线| 国模视频一区二区三区| 91手机视频在线观看| 日本精品中文字幕| 国产美女精品视频免费观看| 日韩成人网免费视频| 欧美午夜片在线免费观看| 国产精品免费一区二区三区都可以| 亚洲色图17p| 国产精品永久免费观看| 日韩欧美在线一区| 精品在线欧美视频| 日韩在线欧美在线国产在线| www日韩中文字幕在线看| 久久97精品久久久久久久不卡| 亚洲电影中文字幕| 亚洲精品电影在线| 琪琪亚洲精品午夜在线| 久久精品国产免费观看| 91大神福利视频在线| 中文字幕在线精品| 91精品久久久久久久久不口人| 久久亚洲电影天堂| 两个人的视频www国产精品| 色综合五月天导航| 欧美在线视频免费| 亚洲精品美女视频| 国产精品美乳在线观看| 亚洲欧美日韩中文在线| 亚洲精品免费在线视频| 欧美激情影音先锋| 久久久久久国产免费| 欧美国产精品日韩| 欧美日韩一二三四五区| 国产精品高潮呻吟久久av无限| 精品久久久久久久中文字幕| 法国裸体一区二区| 欧洲成人免费aa| 亚洲第一av在线| 亚洲国产精彩中文乱码av| 欧美国产日韩一区| 国产精品va在线播放| 色综合老司机第九色激情| 国产欧美一区二区三区视频| 久久精品成人欧美大片古装| 亚洲成人精品在线| 国产成人福利视频| 亚洲精品动漫久久久久| 久久久久99精品久久久久| 亚洲第五色综合网| 成人午夜一级二级三级| 欧美成人精品三级在线观看| 亚洲欧美日韩视频一区| 国产精品久久综合av爱欲tv| 97色在线视频观看| 欧亚精品在线观看| 91精品在线国产| 欧美不卡视频一区发布| 欧美激情网站在线观看| 欧美性猛交xxx| 91在线高清免费观看| 久久精品一本久久99精品| 国产精品电影网站| 一区二区三区日韩在线| 日韩电影网在线| 久久综合电影一区| 免费av一区二区| 欧美精品一本久久男人的天堂| 久久精品国亚洲| 91av视频在线免费观看| 欧美日韩精品二区| 国产精品成av人在线视午夜片| 欧美激情欧美狂野欧美精品| 成人激情春色网| 欧美激情视频在线观看| 国产第一区电影| 亚洲国产欧美久久| 欧美性受xxxx白人性爽| 午夜精品久久久久久久99热浪潮| 国产一区二区三区高清在线观看| 精品动漫一区二区| 国产精品视频精品| 久久国产精品99国产精| 国产精品视频久久久久| 久久久久久国产精品美女| 国产精品视频播放| 中文日韩在线视频| 亚洲国产又黄又爽女人高潮的| 亚洲男人第一网站| 中文字幕亚洲一区二区三区五十路| 欧美午夜www高清视频| 日韩精品免费一线在线观看| 欧美性猛交xxxx乱大交蜜桃| 亚洲天堂免费观看| 青青草成人在线| 国内外成人免费激情在线视频网站| 国产精品露脸自拍| 亚洲国产精品免费| 亚洲国产成人精品电影| www.日本久久久久com.| 欧美激情国内偷拍| 国产精品一区二区在线| 久久久亚洲国产天美传媒修理工| 日韩av成人在线| 国产精品极品在线| 欧美午夜精品久久久久久人妖| 亚洲一区久久久| 日韩成人小视频| 亚洲一区二区三区毛片| 国产精品欧美日韩一区二区| 久久久在线免费观看| 欧美极品在线视频| 国产一区二区av| 97精品一区二区三区| 国产成人综合一区二区三区| 日韩成人av网址| 2018日韩中文字幕| 免费99精品国产自在在线| 一区二区日韩精品| 日韩中文字幕在线精品| 亚洲激情第一页| 亚洲欧美激情一区| 91网在线免费观看| 中文字幕少妇一区二区三区| www.亚洲一二| 亚洲第一区在线| 成人亲热视频网站| 国产精品国产三级国产aⅴ9色| 久久中文字幕在线视频| 中文字幕亚洲综合| 欧美色xxxx| 91精品国产综合久久香蕉最新版| 成人免费在线视频网址| 国产婷婷色综合av蜜臀av| 91sa在线看| 国产精品一香蕉国产线看观看| 日本高清不卡的在线| 欧美成年人在线观看| 欧美区二区三区| 亚洲国产精品悠悠久久琪琪| 国产日韩在线免费| 亚洲网站在线播放| 最新国产成人av网站网址麻豆| 亚洲国产精品热久久| 欧美日韩亚洲高清| 色999日韩欧美国产| 亚洲www在线观看| 久久精品国产69国产精品亚洲| 亚洲免费电影一区| 97**国产露脸精品国产| 亚洲日本成人网|