This is a page of the online appendix of our paper on Structural Essence.
There are three possible kinds of bidirectional associations, and we have thought of two options for transforming them into the distilled model.
Option | |||
Case | Association | 1 split association (chosen) | 2 avoid cycles |
1 | A 1<->1 B | A->B B->A (essence=1) |
AB (essence=0) |
2 | A 1<->* B | A->*->B B->A (essence=2) |
A->*->B B->*' (essence=1) |
3 | A *<->* B | A->*->B B->*->A (essence=3) |
A->*->B B->*' (essence=2) |
A 1<->1 B should mean that a given A object points to one B object, and that B object points to THE SAME A object. Example: class Pacman { World w; } class World { Pacman p; }.
A 1->1 B plus B 1->1 A should mean that a given A object points to one B object, a given B object is pointed to by one A object, a given B object points to one A object, and a given A object is pointed to by one B object. This is less restrictive, meaning that a given A object points to one B object, and that B object may point to any single A object; it does not have to point back to the SAME A object).