What is the effect of setting the association end ownership from "association" to "classifier" on the code that gets generated?
In other words,
0) I start with an empty diagram
1) I create class A and class B
2) I connect A and B with an association A-B
3) the association end at A is named as a
4) the association end at B is named as b
5) the association end ownership for a is set to class B (by default it is set to the association A-B itself)
6) I generate Java code for this diagram
How and why does (should) the generated code now differ if I omit step 5 ? I.e. if I use the default value ?
What is the meaning of setting the association end ownership of a to class B ? What difference does it make ?
In visual paradigm the diagrams differ as follows (second diagram shows if step 5 is omitted) :
EDIT:
In VP-UML, the generated code in both cases is the same :
public class A {
B b;
}
public class B {
A a;
}
So in this sense the ownership does not matter ? This is a little confusing.
Ownership means that class or its instance has not only reachable way to instance of another class, but has it as an attribute (direct reference or simply contains it). Ownership does NOT belong to strict features of UML.
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.
I could give you a general approach about how a general UML 2 source code generator might work (UML spec doesn't specify how to generate code from UML models)
From my point of view, if the association ends (property) belongs to the UML class, then a field should be generated in the source code class, whereas if it belongs to the association no field is generated (allows you to model unidirectional or bidirectional associations between classes). Have a look to the example I've recently posted