定義套件和命名空間
在 Visual Studio Ultimate 中,「封裝」(Package) 是 UML 項目 (例如類別、使用案例和元件) 之定義的容器。 封裝也可以包含其他封裝。
在 [UML 模型總管] 中,封裝內的所有定義都以巢狀方式列於封裝底下。 UML 模型是一種封裝,並形成樹狀結構的根目錄。
本主題內容
命名空間
建立和檢視封裝
在封裝內部建立模型項目
將項目移入或移出封裝
將項目貼入封裝
封裝之間的匯入關聯性
從某個命名空間參考另一個命名空間
封裝的屬性
命名空間
封裝是用於將工作分隔成不同的區域。 每個封裝都會定義命名空間,避免不同封裝中定義的名稱彼此衝突。
每個項目的限定名稱屬性就是它所屬之封裝的限定名稱,後面接著項目自己的名稱。 例如,如果您的封裝名為 MyPackage,封裝內的類別就會具有類似 MyPackage::MyClass 的限定名稱。 因為每個項目都包含在模型內,所以每個限定名稱都會以模型的名稱為開頭。
模型也會定義命名空間,讓模型中每個項目的限定名稱都以模型的名稱為開頭。
其他模型項目也會定義命名空間。 例如,某項作業屬於其父類別所定義的命名空間,如此其限定名稱就類似於 MyModel ::MyPackage ::MyClass ::MyOperation。 動作也會以相同的方式屬於其父活動所定義的命名空間。
封裝就是容器。 如果您移動或刪除某個封裝,也會一併移動或刪除該封裝內所定義的類別、封裝和其他事項。 定義命名空間的其他項目也是如此。
建立和檢視封裝
您可以在 UML 類別圖表上或在 [UML 模型總管] 中建立封裝。
若要在 UML 類別圖表中建立封裝
開啟 UML 類別圖表,或建立新的圖表。
按一下 [封裝] 工具。
按一下圖表上的任何位置。 新的封裝圖案隨即出現。
您可以在現有的封裝內部按一下,以便在另一個封裝中建立巢狀封裝。
輸入封裝的新名稱。
若要在 UML 模型總管中建立封裝
開啟 [UML 模型總管]。 在 [架構] 功能表中指向 [視窗],然後按一下 [UML 模型總管]。
以滑鼠右鍵按一下您想要加入新封裝的封裝或模型。
注意事項 您可以在另一個封裝內部建立巢狀封裝。
指向 [加入],然後按一下 [封裝]。
新的封裝隨即出現在模型中。
輸入封裝的新名稱。
如果您已經在 [UML 模型總管] 中建立封裝,就可以在 UML 類別圖表上顯示它。 您也可以在多個 UML 類別圖表上顯示封裝。
若要在 UML 類別圖表上顯示現有的封裝
將封裝從 [UML 模型總管] 拖曳至類別圖表。
注意事項 這樣就會在此圖表上建立封裝的檢視。 但是,它不一定會顯示封裝所包含的所有項目。 若要確定您會看到所有封裝內容,請在 [UML 模型總管] 中檢視它。
在封裝內部建立模型項目
有四種方式可讓您將模型項目放置於封裝內部:
在 [UML 模型總管] 中,將新的項目加入至封裝。
在 UML 類別圖表中,將類別和其他型別加入至封裝。
設定圖表的 [LinkedPackage] 屬性,以便將圖表上建立的新項目放置於您所指定的封裝內部。 您可以用這種方式,將類別圖表、元件圖表和使用案例圖表連結至封裝。
在 [UML 模型總管] 中,將項目移入或移出封裝。
在 [UML 模型總管] 中,封裝內的項目會出現在該封裝底下,而且其限定名稱會以封裝的限定名稱為開頭。 若要查看任何項目的限定名稱,請以滑鼠右鍵按一下項目,然後按一下 [屬性]。 [Qualified Name] 屬性就會出現在 [屬性] 視窗中。
若要在 UML 模型總管中建立封裝內的項目
開啟 [UML 模型總管]。 在 [檢視] 功能表上,指向 [其他視窗],然後按一下 [UML 模型總管]。
以滑鼠右鍵按一下您想要加入新項目的封裝或模型。
指向 [加入],然後按一下您想要加入的項目種類。
新的項目就會出現在封裝底下。
輸入新項目的名稱。
注意事項 新的項目不會出現在任何圖表上。 若要建立新項目的檢視,您可以將它從 [UML 模型總管] 拖曳至圖表。 此圖表必須是可顯示這種項目的類型。
若要在 UML 類別圖表上建立封裝內的項目
開啟出現封裝的類別圖表。
建立新的封裝 (如果您尚未完成這項作業的話)。
若要讓現有的封裝出現在類別圖表上,您可以將封裝從 [UML 模型總管] 拖曳至類別圖表。
按一下類別、介面、列舉或封裝的工具。
按一下您想要放入新項目的封裝。
新的項目就會出現在封裝內部。
若要在指定的封裝中建立圖表的所有項目
建立封裝 (如果您尚未完成這項作業的話)。
開啟元件圖表、使用案例圖表或 UML 類別圖表。
開啟圖表的屬性。 在圖表的空白部分中按一下滑鼠右鍵,然後按一下 [屬性]。
在 [Linked Package] 屬性中,選擇您想要包含圖表內容的封裝。
在圖表中建立新的項目。 這些項目會放入封裝中。
每個項目的 [Qualified Name] 都會以封裝的限定名稱為開頭。
在 [UML 模型總管] 中,每個項目都會出現在封裝底下。
將項目移入或移出封裝
您可以將一個或多個項目移入或移出封裝。
如果您移動封裝,封裝內的所有項目都會與它一起移動。
若要將項目移入或移出封裝
在 [UML 模型總管] 中,將項目移入或移出其根目錄是封裝的樹狀結構。
項目的限定名稱會變更為顯示其新的主控封裝或模型。
-或-
在類別圖表中,將項目拖曳至封裝圖案。
項目的限定名稱會變更為顯示其新的主控封裝。
注意事項 如果您將封裝中的項目拖曳至圖表的空白部分,其主控封裝就不會變更。 這可讓您建立顯示來自許多封裝之項目的圖表,而不需要顯示封裝本身。
將項目貼入封裝
您可以將項目貼入封裝。 如果您將一組相關的項目貼入封裝,也會一併貼上這些項目之間的關聯性。
若要在 UML 類別圖表上將項目貼入封裝
在 UML 類別圖表上,選取您想要複製的所有項目。 以滑鼠右鍵按一下其中一個項目,然後按一下 [複製]。
以滑鼠右鍵按一下封裝,然後按一下 [貼上]。
注意事項 封裝可以位於不同的圖表上。
封裝之間的匯入關聯性
您可以使用 [匯入] 工具來定義封裝之間的匯入關聯性。
匯入表示定義於匯入之封裝中的項目 (也就是位於關聯性箭號端的項目) 實際上也會定義於匯入封裝中。 任何可視性定義為 [封裝] 的項目也會顯示在匯入封裝中。
請避免在匯入關聯性中建立迴圈。
從某個命名空間參考另一個命名空間
如果您想要從某個封裝參考另一個封裝的項目,就必須使用該項目的限定名稱。
例如,假設封裝 SalesCommon 定義型別 CustomerAddress。 在另一個封裝 RestaurantSales 中,您想要定義型別 MealOrder (具有 Customer Address 型別的屬性)。 您有兩個選項:
使用完整限定名稱 SalesCommon::CustomerAddress 來指定屬性的型別。 只有當 CustomerAddress 的 [Visibility] 屬性設定為 [Public] 時,您才能這樣做。
建立 RestaurantSales 封裝與 SalesCommon 封裝之間的匯入關聯性。 然後,您就可以使用 CustomerAddress,而不需要使用其限定名稱。
封裝的屬性
每個封裝都具有下列屬性。 若要查看屬性,請在圖表上或在 [UML 模型總管] 中,以滑鼠右鍵按一下封裝,然後按一下 [屬性]。
屬性 |
預設值 |
說明 |
---|---|---|
Name |
(新名稱) |
封裝名稱。 您可以在圖表上或在 [屬性] 視窗中進行變更。 |
Qualified Name |
Container :: package name |
完整名稱,前面加上包含此封裝之封裝或模型的名稱。 如需詳細資訊,請參閱命名空間。 |
Profiles |
(空白) |
連結至此封裝的設定檔清單。 這些設定檔會提供可套用至封裝內部項目的造型。 如需詳細資訊,請參閱使用設定檔和造型自訂您的模型。 |
Visibility |
Public |
封裝在其父封裝外部的可視性。 |
Work Items |
(空白) |
連結的工作項目清單。 如需詳細資訊,請參閱 HOW TO:從模型項目連結至工作項目。 |
Definition Location |
(名稱) |
儲存封裝詳細資料的檔案名稱。 這些檔案都位於 [ModelDefinition] 專案資料夾內。 這項資訊可用於原始檔控制目的。 |
Description |
(空白) |
封裝的描述。 |
Stereotypes |
(空白) |
套用至此封裝的造型。 可用的造型清單是由您為此封裝及其父封裝所選擇的設定檔所決定。 如需詳細資訊,請參閱使用設定檔和造型自訂您的模型。 |
封裝的儲存方式
在建立新的封裝時,會在 ModelDefinition 專案資料夾中建立新的 .uml 檔案。 根模型同時也是封裝,因此也會儲存在 .uml 檔案中。
此外,每個圖表都會儲存在兩個檔案中,一個是代表圖表圖案的檔案,另一個則是會記錄圖案位置的 .layout 檔案。