[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
|
[news.eclipse.tools.uml2] Re: Is Feature Refinement supported ?
|
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, ...
>>>
>>>
>>>
>>>
>>>
>
>