[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[news.eclipse.tools.uml2] Re: Is Feature Refinement supported ?

Kenn,

is there any documentation available that describes these extensions? I couldn't find any - apart from the source code, of course :-)

Thanks,
Lutz

Kenn Hussey wrote:
Antonio,

Feature refinement (redefinition and subsetting) is supported by the UML2 code generator extension...

Kenn

"Antonio Carrasco Valero" <acv@xxxxxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message news:ehlcbp$kmk$1@xxxxxxxxxxxxxxxxxxxx
Hi Ed!

Should we consider thes limitation,
of eCore not allowing redefinition of features in subclasses,
as something to resolve in the future ?

This seriously impairs the ability to reuse Eclipse UML implementation in DSLs.

I believe that that, in the very honest goal
of keeping EMF codegen straightforward,
those honestly interested in the reuse of Eclipse UML in their DSLs,
will be seriously discouraged to do so.

This limitation forces to do all kinds of nasty hacks in the metamodels,
that´s why it is used all over the UML2 specification
(and why package merge and UML flattening is possible).

Other ways of constraining, apart from subclassing UML,
still leave a metamodel that is exactly like the original, unrefined one,
when inspected reflectively.
This amounts the same as creating Profiles of UML
- as many are so intelligently doint, given the obstacles to derive DSLs from UML.


Cheers,
Antonio Carrasco Valero
Model Driven Development ltd.




"Ed Merks" <merks@xxxxxxxxxx> wrote in message news:ehkt0k$ehc$1@xxxxxxxxxxxxxxxxxxxx
Antonio,

This is possible in UML2 but not in Ecore. The UML2 Ecore importer will create new features (with a different name)s for such a cases. Narrowing the multiplicity isn't even possible with Java , i.e., List<X> getX can't be overridden with X getX(), and narrowing the type would only be possible for single valued features in Java 5.0, i.e., X getX() can be overridden by Y getX() if Y inherits from X, and isn't possible for multi-valued features in Java 5.0 because there is no inheritance relation between List<X> and List<Y> regardless of the inheritance relation between X and Y, i.e., List getX can be overridden by List getX but List<X> getX cannot be overridden by List<Y> getX. It's usually best to consider such refinements to be constraints rather than to expect the API itself to morph since Java is not completely capable of expressing this.


Antonio Carrasco Valero wrote:
Hi !
Is it possible to refine features in subclasses ?
i.e, define in a sub-EClass,
an EReference feature that re-defines the referenced type
to an specialization of the type referenced by the supertype,
or that narrows multiplicity from 1..n to 1..1, ...