속성은 일반 EMF에서는 재정의 할 수 없지만 OCL을 통해 해결 방법이 있습니다. (물론 자바 코드를 생성하고 필요에 따라 속성을 구현할 수 있지만 메타 모델을 만든 Eclipse 인스턴스에서는 작동하지 않습니다.)
트릭은 EMF에서 작업을 재정의 할 수 있다는 것입니다. 및 OCL을 통해 필요에 따라 작업을 구현할 수 있습니다.
다음은 클래스 A
및 B
으로 구성된 메타 모델을 정의하는 최소 예 (OCLinEcore 편집기로 작성)입니다. A
클래스에는 label
이라는 속성이 있으며 이는 computeLabel()
작업으로 리디렉션됩니다. 클래스 'B'는 computeLabel()
작업에 대해 다른 구현을 제공합니다.
package workaround : workaround = 'workaround' {
class A {
operation computeLabel() : String {
body: 'labelA';
}
attribute label : String {
derivation: computeLabel();
}
}
class B extends A {
operation computeLabel() : String {
body: 'labelB';
}
}
}
당신은 클래스 B
의 동적 인스턴스를 생성 표준 Sample Reflective Ecore Model Editor
에 B.xmi
파일을 열어 그것을 테스트 할 수 있습니다. 그런 다음 볼 수 있습니다 :
![enter image description here](https://i.stack.imgur.com/oxhOA.png)
사물의 이러한 종류의 생성 된 코드에 달성 될 수있다. 나는 이것을 모델에서 직접 수행하는 방법을 알지 못한다. (당신이 원한다고 가정 할 때?) – sxc731