> So far i have always thought that an associative class is "only"
> useful if the cardinality "multiplicity" between to classes is greater
> then 1.
>
The association class is *required* for *:* associations because such
associations cannot be resolved with a simple referential attribute on
one side or the other. Essentially the association class is a
placeholder for a more complex underlying implementation. Thus quite
commonly the association will be reified at OOP time into something like
<pre>
[Assoc]
|
* | R1 *
[Client] ---------------------- [Service]
goes to
* R1A 1 1 R1B *
[Client] ------------- [Assoc] ---------------- [Service]
or some other combination of 1:* multiplicities.
</pre>
However, association classes are also useful when the relationship
itself is qualified in the problem space. For example,
<pre>
[Contract]
+ expiration
|
1 | R1 1
[Buyer] ----------------------- [Vendor]
</pre>
In this case the notion of 'contract' applies to How the entities are
related, not Who participates. Now the association object is a true
problem space abstraction with its own intrinsic responsibilities.
--
Life is the only flaw in an otherwise perfect nonexistence
-- Schopenhauer
H. S. Lahman
H.la...@verizon.net
software blog: http://pathfinderpeople.blogs.com/hslahman/index.html