HOW TO:建立項目與關聯性
在 Visual Studio Ultimate 擴充功能的程式碼中,您可以建立及刪除項目和關聯性。
建立模型項目
命名空間匯入
您必須包含下列 using 陳述式。
建立方法會定義為此命名空間中的擴充方法:
using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Uml;
取得您要建立之項目的擁有者
模型會形成單一樹狀結構,如此除了模型根項目之外,每一個項目都會有一個擁有者。模型根項目的型別為 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 |
在擁有者上叫用 Create 方法
方法名稱的格式為:CreateOwnedType()。例如:
IUseCase usecase1 = linkedPackage.CreateUseCase();
某些型別的建立方法較為複雜,尤其是在順序圖表中。請參閱HOW TO:使用 UML API 編輯順序圖表。
針對某些類型的項目,您可以在其存留期內使用 SetOwner(newOwner) 變更項目的擁有者。
設定名稱和其他屬性
usecase1.Name = "user logs in";
範例
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"; ...
建立關聯
若要建立關聯
取得關聯的擁有者,這通常是包含關聯性來源端的封裝或模型。
在擁有者上叫用必要的 Create 方法。
設定關聯性的屬性,例如其名稱。
例如:
IAssociation association = subject.Package.CreateAssociation(subject, observer); association .Name = "Observes";
設定關聯性各端的屬性。固定會有兩個 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();
當您從模型刪除項目時:
也會刪除與項目連結的每一個關聯性。
也會刪除在圖表上表示該項目的每一個圖形。