다음을 통해 공유


방법: 요소 및 관계 만들기

Visual Studio Ultimate 확장의 프로그램 코드에서 요소 및 관계를 만들고 삭제할 수 있습니다.

모델 요소 만들기

네임스페이스 가져오기

다음과 같은 using 문을 포함해야 합니다.

만들기 메서드는 이 네임스페이스에서 확장 메서드로 정의됩니다.

using Microsoft.VisualStudio.ArchitectureTools.Extensibility.Uml;

만들 요소의 소유자 가져오기

모델은 단일 트리를 구성하므로 모델 루트를 제외한 모든 항목은 소유자를 하나씩 가집니다. 모델 루트는 IPackage 형식의 IModel 형식입니다.

특정 다이어그램(예: 사용자의 현재 다이어그램)에 표시할 요소를 만드는 경우에는 일반적으로 해당 다이어그램에 연결된 패키지에 요소를 만들어야 합니다. 예를 들면 다음과 같습니다.

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();

특히 시퀀스 다이어그램의 경우 일부 형식에는 더 복잡한 만들기 메서드가 있습니다. 자세한 내용은 방법: 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"; ...

연결 만들기

연결을 만들려면

  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 모델 및 다이어그램 확장

방법: 다이어그램에 모델 표시