On 4/23/07, Jean-Sebastien Delfino <[EMAIL PROTECTED]> wrote:

ant elder wrote:
> Currently o.a.t.assembly.Implementation is extending
> o.a.t.assembly.ComponentType, is there a reason for this, I guess I
> though
> an Implementation would have a ComponentType rather than be a
> ComponentType?
>
>   ...ant
>

Yes there is a reason for this. The current assembly model is designed
to be a logical model, a logical representation of the concepts of
component, componentType, constrainingType, independent of any syntax
used to describe them in XML, annotations or other artifacts.

So in a logical model, IMO a Component is an instance of a ComponentType
(in other words a Component has a ComponentType). An Implementation
exposes Services, requires References, declares Properties, and is a
(concrete) ComponentType.

The fact that aspects of the componentType are partly described in the
implementation artifact itself and (sometimes) in a separate
.componentType file does not change the Implementation -> ComponentType
relationship to a has-a instead of an is-a relationship. Actually, if we
were going to change the relationship to a has-a type relationship we
would realize quickly that both ends of the relationship always have
1..1 cardinality, which shows that it wouldn't be right.

Is there a specific issue with the fact that Implementation extends
ComponentType instead of pointing to it?


No specific issue, was just trying to understand what was there. You email
has clarified it, thanks :)

   ...ant

Reply via email to