UML에서 C#으로 변환에 의해 변환되는 UML 요소

변환에서 변환되는 C# 요소는 소스 UML 요소와 해당되는 특성에 따라 결정됩니다.

다음 표는 어떤 UML 요소가 어떤 C# 요소로 변환되는지를 나열합니다.

UML 요소 C# 요소
모델 C# 프로젝트
맵핑 모델의 패키지 C# 프로젝트에서 이름이 같은 폴더
모델의 패키지 C# 네임스페이스
«analysis» 또는 «Analysis» 키워드가 있는 모델의 패키지 무시됨
속성 C# 필드
«CSharp Field»가 있는 속성 C# 필드
«CSharp Event» 스테레오타입이 있는 속성 C# 이벤트

스테레오타입 «CSharp Event»에 이벤트에 액세서(추가 및 제거)가 지정되어 있는지 여부를 표시하는 부울 특성 액세서가 있습니다. true 값은 추가 및 제거 액세서가 명시적으로 지정되어 있음을 표시하고 false는 이벤트 액세서가 내재적임을 표시합니다.

«CSharp Property» 스테레오타입이 있는 속성 String 유형의 field_name 속성이 있는 C# 특성 클래스 구성원.
«CSharp Property» 스테레오타입이 있고 스테레오타입의 액세서 특성이 auto로 설정된 속성 C#이 특성을 자동으로 구현함

특성 클래스 구성원에는 본문 블록 없이 getset 액세서가 둘 다 있습니다.

클래스 이름 및 가시성이 같은 C# 클래스
«CSharp Delegate» 스테레오타입이 있는 클래스 C# 위임

호출 메소드 및 해당되는 서명은 UML 클래스 내에서 UML 오퍼레이션을 사용하여 맵핑됩니다. 이 오퍼레이션의 이름은 "invoke()"여야 합니다.

«CSharp Struct» 스테레오타입이 있는 클래스 C# 구조체
«CSharp Partial» 스테레오타입이 있고 둘 사이에 종속 관계가 있는 두 개의 클래스 C# 부분 클래스
두 개 이상의 종속 클래스가 있는 클래스. 첫 번째 클래스에 대한 종속 관계에 «CSharp Partial» 스테레오타입이 있습니다. 오퍼레이션은 이름이 같은 각각의 종속 클래스에 존재합니다(하나에는 «CSharpPartialDeclaration» 스테레오타입이 있고 다른 하나에는 «CSharp PartialDefinition» 스테레오타입이 있음). C# 부분 메소드

두 개의 부분 구현이 있는 클래스가 작성됩니다. «CSharpPartialDeclaration» 스테레오타입이 있는 오퍼레이션을 포함하는 부분 파트에는 메소드 본문 없이 메소드 선언이 있습니다. «CSharpPartialDefinition»이 있는 오퍼레이션을 포함하는 부분 파트에는 메소드와 해당 본문이 있습니다.

일반화 관계가 있는 클래스 C# 클래스가 지정된 수퍼클래스를 확장함
구현 C# 클래스가 지정된 인터페이스를 구현함
클래스와 인터페이스 사이의 실현(realization) 관계 C# 클래스는 템플리트 인터페이스를 포함하여 지정된 인터페이스를 구현합니다. 변환은 구현된 인터페이스에서 클래스의 메소드, 특성, 이벤트 및 색인에 대한 코드를 생성합니다.
인터페이스 이름 및 가시성이 동일한 C# 인터페이스
일반화 관계가 있는 인터페이스 C# 인터페이스는 지정된 인터페이스를 확장함
열거 기초를 이루는 기본 유형이 "int"이고 상수 표현식이 있는 열거 구성원이 전혀 없는 동일 이름의 C# 열거
열거 리터럴 이름 및 가시성이 같은 C# 필드
오퍼레이션 이름 및 가시성이 같은 C# 메소드
이름에 "implicit/explicit operator" 또는 "operator"와 기호가 있는 오퍼레이션 C# 오퍼레이터
오퍼레이션의 이름은 다음 중 하나입니다.
  • 단항 또는 2진 오퍼레이션 정의에 대한 operator unary_or_binary_operator_symbol. 이러한 오퍼레이션의 리턴 유형은 단항/2진 오퍼레이터에 의해 리턴되는 결과의 유형입니다.
  • 내재적 또는 명시적 오퍼레이터에 대한 implicit operator 또는 explicit operator. 이러한 오퍼레이션의 리턴 유형은 변환의 대상 유형이 됩니다. 변환의 소스 유형은 UML 매개변수 유형이 됩니다.
isStatic 특성이 있는 오퍼레이션 true인 경우 C# 메소드는 정적임
isAbstract 특성이 있는 오퍼레이션 true인 경우 C# 메소드는 추상임
isVirtual 특성이 있는 오퍼레이션 true인 경우 C# 메소드는 가상임
해당 클래스와 이름이 같은 오퍼레이션 C# 생성자
해당 클래스와 동일한 이름과 "~"이 있는 오퍼레이션 C# 소멸자
«CSharp Indexer» 스테레오타입이 있는 오퍼레이션 C# 색인기

색인기에 대한 정규 매개변수 목록은 UML 오퍼레이션의 정규 매개변수로 표시됩니다.

isStatic 특성과 «CSharp ExtensionMethod» 스테레오타입이 있는 오퍼레이션

오퍼레이션은 «CSharp Class» 스테레오타입이 있고 스테레오타입의 static 특성이 True로 설정된 클래스의 구성원이어야 합니다.

C# 확장 메소드

this 메소드는 오퍼레이션의 첫 번째 매개변수에 적용됩니다.

유형 부울, 정수, 문자열 및 UnlimitedNatural 유형 부울, Int32, 문자열 및 UInt32
주:

이름에 마침표가 포함되는 모델의 UML 패키지는 이름에 밑줄이 포함되는 C# 네임스페이스로 변환됩니다. 이 변환 동작은 포함된 요소에 대해 단일 네임스페이스를 보존합니다. 예를 들어, UML 폴더 com.ibm.samples에 클래스 C1이 있다고 가정합니다. UML에서 C#으로 변환을 적용하면 UML 클래스 C1을 표시하는 C# 아티팩트는 다음 네임스페이스에서 선언됩니다.

namespace com_ibm_samples

피드백