UML에서 Java로 변환 재실행을 위한 고려사항

UML에서 Java로(사용되지 않음)(UML-to-Java (deprecated)) 변환 및 UML에서 Java로(UML-to-Java) 변환은 생성된 특정 요소에 @generated 태그를 추가합니다. 변환을 재실행할 때 변환이 요소 위에 @generated 태그를 겹쳐씁니다. 또한 변환은 클래스의 규정자 및 구성원과 메소드의 규정자, 매개변수 및 본문도 겹쳐씁니다.

UML에서 Java로 변환을 실행하기 전에 변환에서 겹쳐쓰지 않으려는 요소로부터 @generated 태그를 제거할 수 있습니다. 대신 @ 문자 뒤에 문자를 삽입하여 @generated 태그를 편집할 수도 있습니다(예: @wasgenerated). 문자를 삽입하면 변환을 재실행할 때 변환이 겹쳐쓰지 않는 생성된 코드를 쉽게 식별하는 데 도움이 됩니다.

변환에서 생성되는 요소

UML에서 Java로 변환은 생성된 특정 요소에 @generated 태그를 추가합니다.
  • 클래스
  • 인터페이스
  • 필드
  • 메소드

생성된 코드 보호

UML에서 Java로 변환을 재실행할 때 기본적으로 변환은 변환에서 생성되거나 사용자가 작성하는 메소드 본문을 겹쳐쓰지 않습니다. @generated 태그를 제거 또는 편집하는지 여부에 관계없이, 변환은 항상 주석 // begin-user-code// end-user-code 사이에 메소드 본문을 보존합니다.

변환이 항상 메소드 본문을 보존하더라도, 메소드에서 @generated 태그를 제거하거나 편집하여 메소드에 대한 구조적 변경사항을 보존해야 합니다. 예를 들어, 메소드 서명을 변경하거나 메소드 이름을 바꾼 경우 메소드에 대한 @generated 태그를 제거하거나 편집해야 합니다.

@generated 태그를 제거하거나 편집하지 않으면 변환은 @generated 태그가 적용되는 요소 위에 겹쳐씁니다.

주: 소스 UML 모델에 메소드를 추가하려면 역변환을 실행하십시오.
이 예제에서는 소스 UML 모델에 attribute라는 정수 속성을 포함하는 Class1 UML 클래스와 매개변수가 없는 Operation1 및 Operation2 오퍼레이션이 있습니다. 다음 표에서는 변환이 보존되고 겹쳐쓰는 요소의 예를 나열합니다. 수정된 코드 열에는 다음 변경사항이 포함되는 코드가 나열됩니다.
변환을 재실행할 경우 다음 사항을 수행합니다.
  • @generated 태그가 제거되었으므로 상속을 보존합니다.
  • @generated 태그가 제거되지 않았으므로 Operation1 메소드에 대한 메소드 서명 변경사항을 겹쳐씁니다.
  • 변환에서 새 메소드 본문이 속하는 메소드를 찾을 수 없으므로 Operation1 메소드 본문에 대한 변경사항이 보존되지 않습니다.
  • Operation2 메소드 본문에 대한 변경사항을 보존합니다.
UML 모델 요소 생성된 코드 수정된 코드 변환을 재실행한 후 생성된 코드
이 이미지는 이전 단락에서 설명한 Class1의 UML 클래스를 보여 줍니다. Class1.java:
/** 
 * @generated "UML to Java V5.0 (com.ibm.xtools.transform.uml2.java5.internal.UML2JavaTransform)"
 */
public class Class1 {
	/** 
	 * @generated "UML to Java V5.0 (com.ibm.xtools.transform.uml2.java5.internal.UML2JavaTransform)"
	 */
	private Integer attribute1;

	/** 
	 * @generated "UML to Java V5.0 (com.ibm.xtools.transform.uml2.java5.internal.UML2JavaTransform)"
	 */
	public void Operation1() {
// begin-user-code
		// TODO Auto-generated method stub

// end-user-code
	}

	/** 
	 * @generated "UML to Java V5.0 (com.ibm.xtools.transform.uml2.java5.internal.UML2JavaTransform)"
	 */
	public void Operation2() {
// begin-user-code
		// TODO Auto-generated method stub

// end-user-code
	}
}
Class1.java:
/** 
  */
public class Class1 extends MyClass {
	/** 
	 * @generated "UML to Java V5.0 (com.ibm.xtools.transform.uml2.java5.internal.UML2JavaTransform)"
	 */
	private Integer attribute1;

	/**
	 * @generated  "UML to Java V5.0 (com.ibm.xtools.transform.uml2.java5.internal.UML2JavaTransform)"
	 */
	public void Operation1(int parameter1) {
// begin-user-code
		// TODO Auto-generated method stub
		int i = 2;
		System.out.println(i);
// end-user-code
	}

	/**
	 * @generated "UML to Java V5.0 (com.ibm.xtools.transform.uml2.java5.internal.UML2JavaTransform)"
	 */
	public void Operation2() {
// begin-user-code
		// TODO Auto-generated method stub
		int j = 2;
		System.out.println(j);
// end-user-code
	}
}
Class1.java:
/**
 * 
 */

public class Class1 extends MyClass {
	/** 
	 * @generated "UML to Java V5.0 (com.ibm.xtools.transform.uml2.java5.internal.UML2JavaTransform)"
	 */
	private Integer attribute1;

	/**
	 * @generated  "UML to Java V5.0 (com.ibm.xtools.transform.uml2.java5.internal.UML2JavaTransform)"
	 */
	public void Operation1() {
// begin-user-code
		// TODO Auto-generated method stub

// end-user-code
	}

	/**
	 * @generated "UML to Java V5.0 (com.ibm.xtools.transform.uml2.java5.internal.UML2JavaTransform)"
	 */
	public void Operation2() {
// begin-user-code
		// TODO Auto-generated method stub
		int j = 2;
		System.out.println(j);
// end-user-code
	}
}

새 코드 보호

사용자가 고의로 @generated 태그를 요소에 추가하지 않는 한, 변환은 사용자가 생성된 코드에 추가하는 Java™ 요소를 겹쳐쓰지 않습니다.
주: 소스 UML 모델에 Java 요소를 추가하려면 역변환을 실행하십시오.

@generated 태그와 사용자 정의 섹션이 가능한 문제점을 피하기 위한 융통성을 제공하여도, 생성된 코드 대신 소스 UML 모델에 대한 구조적 변경을 작성해야 합니다. 또한 역변환을 실행하여 새 메소드나 속성을 소스 UML 모델에 추가할 수도 있습니다.


피드백