다음 표는 어떤 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#이 특성을 자동으로 구현함 특성 클래스 구성원에는 본문 블록 없이 get 및 set 액세서가 둘 다 있습니다. |
| 클래스 | 이름 및 가시성이 같은 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# 오퍼레이터 오퍼레이션의 이름은 다음 중 하나입니다.
|
| 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