association owned by classifier and association ow

2019-01-08 02:03发布

问题:

7.3.3 Association(from kernel) ,page 36,UML superstructure ,v2.4.1:

an association either owned by classifier or by relationship.

Is there a real-life example in UML about association owned by classifier and association owned by relationship?

回答1:

Chriss

I hope this simple example helps.

Guess you have a Java class

public class A {
   private B b;
   ...
}

In UML you would model this relationship as an association from A to B:

A -> B

with the following modeling elements:

Class B
Class A
  + Property b : B [0..1]    (owned by the class)
Association A_to_B
  + Property from_a : A [1]  (owned by the association)

Where the association A_to_B would have 2 association (member) ends referring two the properties showed above (A::b and A_to_B::from_a):

Now, let's think the following situation

public class A {
   private B b;
   ...
}
public class B {
   private A a;
   ...
}

In UML, you could the model the association (navigable in both ways) between A and B:

A <-> B

Whose model elements would be:

Class B
  + Property a : A [0..1]  (owned by the class)
Class A
  + Property b : B [0..1]  (owned by the class)
Association A_B

Where the association A_B would have 2 association (member) ends referring the two the properties showed above (A::b and B::a).



回答2:

  • Before other things you should understand what the association A to B is.
    • Basically it is a solid line between A and B. It can represent one structure that connects class/instanc(es) of A with the class/instances of B. The structure can be of any sort and belong anywhere. All information, written about the line, describes this structure.
    • If there are two structures, one structure, that connects one instance of A with instance(s) of B and another structure that connects instance of B with instance(s) of A, you can show them both in ONE association. Then, information written about its B end describes the first structure (b->a) and info about the other end describes the other structure.
    • If you'll have more than one structure guiding from A to B, you have to draw two different associations.
    • If a joining structure is complex, you could represent it as an Association Class. There you can define more details.
    • A joining structure can connect more than two classes, then it will be shown as a large diamond with solid branches to these classes. It is still association! Attention: these two more complex associations are very badly supported by existing tools. You can easily create something absolutely senseless with them. And they are difficult. Use carefully.


In C++ instance A can have the B instance not by pointer, but directly. There is NO special UML sign for it, it should be shown in the same way as normal, pointer attribute.