-
Notifications
You must be signed in to change notification settings - Fork 3
Constrained Loop
A path of one or more Associations that starts at some arbitrary origin Class and returns back to the same Class forms a loop.
Starting at some arbitrary initial Class in the loop take one arbitrary initial instance and navigate one step in any direction, clockwise for example, to obtain a set of one or more instances (depending on the Association) which we will call instance set A from the target Class.
Now starting with the same initial instance in the initial Class, navigate the opposite direction in the loop, counterclockwise in this example, back to the same target class to obtain instance set B.
A constrained loop requires that B is necessarily a subset of A.
See [HTBCM] for a a detailed illustration of the set constraints on the above example.
[MB] refers to the case where B is always an improper subset of A, in other words, B = A as an ‘equal set constraint’. The case where B is always a subset, but not necessarily equal to A, is referred to in [MB] as a ‘subset constraint’. Whether or not an equivalence or a subset constraint applies is simply the consequence of the aggregate multiplicities present in the loop. There is no need then to record the distinction in the metamodel as the statement that a loop is constrained is adequate to make the analysis intention clear.
No Association in a Constrained Loop is ‘special’. This is an important point as the notation recommended in [MB] and [HTBCM] and [OOA96] to indicate a Constrained Loop can be misinterpreted since the constraint is typically written next to a specific Association. Regardless of notation used, it is best to think of a Constrained Loop as simply a set of interconnected Relationships designated as constrained. In other words, the loop is the item of interest, not any particular component Association. See the references mentioned above for specific examples of Constrained Loops.
- CLnum + Domain
Type:
Copyright © 2021-2023 Leon Starr