HOW TO:建立項目與關聯性

在 Visual Studio Ultimate 擴充功能的程式碼中,您可以建立及刪除項目和關聯性。

建立模型項目

Ee330929.collapse_all(zh-tw,VS.110).gif命名空間匯入

您必須包含下列 using 陳述式。

建立方法會定義為此命名空間中的擴充方法:

using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Uml;

Ee330929.collapse_all(zh-tw,VS.110).gif取得您要建立之項目的擁有者

模型會形成單一樹狀結構,如此除了模型根項目之外,每一個項目都會有一個擁有者。模型根項目的型別為 IModel,它是屬於 IPackage 的型別。

如果您建立將在特殊圖表中顯示的項目,例如使用者目前的圖表,通常應該在連結至該圖表的封裝中建立該項目。例如:

IPackage linkedPackage = Context.CurrentDiagram.Element as IPackage;

本表摘要說明通用模型項目的擁有權:

要建立的項目

擁有者

IActor, IUseCase, IComponent, IClass, IInterface, IEnumeration

IActivity, IInteraction

IPackage, IModel

IAttribute, IOperation

IClass, IInterface

IPart, IPort

IComponent

IAction, IObjectNode

IActivity

ILifeline, IMessage, ICombinedFragment

IInteraction

Ee330929.collapse_all(zh-tw,VS.110).gif在擁有者上叫用 Create 方法

方法名稱的格式為:CreateOwnedType()。例如:

IUseCase usecase1 = linkedPackage.CreateUseCase();

某些型別的建立方法較為複雜,尤其是在順序圖表中。請參閱HOW TO:使用 UML API 編輯順序圖表

針對某些類型的項目,您可以在其存留期內使用 SetOwner(newOwner) 變更項目的擁有者。 

Ee330929.collapse_all(zh-tw,VS.110).gif設定名稱和其他屬性

usecase1.Name = "user logs in";

 

Ee330929.collapse_all(zh-tw,VS.110).gif範例

 using Microsoft.VisualStudio.Uml.Classes;
 using Microsoft.VisualStudio.Uml.Extensions;
 ...
  void InstantiateObserverPattern (IPackage package, string namePrefix)
  {    IInterface observer = package.CreateInterface();
       observer.Name = namePrefix + "Observer";
       IOperation operation = observer.CreateOperation();
       operation.Name = "Update";
       IClass subject = package.CreateClass();
       subject.Name = namePrefix + "Subject"; ...

建立關聯

若要建立關聯

  1. 取得關聯的擁有者,這通常是包含關聯性來源端的封裝或模型。

  2. 在擁有者上叫用必要的 Create 方法。

  3. 設定關聯性的屬性,例如其名稱。

    例如:

    IAssociation association = subject.Package.CreateAssociation(subject, observer);
    association .Name = "Observes";
    
  4. 設定關聯性各端的屬性。固定會有兩個 MemberEnds。例如:

    association .MemberEnds[0].Name = "subject";   // role name
    association .MemberEnds[1].Name = "observers"; // role name
    association .MemberEnds[1].SetBounds("0..*");         
                // multiplicity defaults to "1"
    association.MemberEnds[0].Aggregation = AggregationKind.Composite;
    

建立一般化

IGeneralization generalization = 
  subclass.CreateGeneralization(superClass);

刪除模型的項目、關聯性或一般化

anElement.Delete();

當您從模型刪除項目時:

  • 也會刪除與項目連結的每一個關聯性。

  • 也會刪除在圖表上表示該項目的每一個圖形。

 

請參閱

概念

擴充 UML 模型與圖表

HOW TO:在圖表上顯示模型