Hi,
Sargasso wrote:
IMO Agregation implies navigability from container to containee. Thus [ ]<------<>[ ] implies bidirectionality - again IMO Intuitively one would agree with you, however you are wrong

[]<>-------[] does not say anything about the navigation!! In language like C++/Java or even Lisp however the "natural" implementation leads to navigatability from left to right. The container can navigate to its parts. But the same aggregation is implemented in a DB via SQL in the opposite way! The part element will have a field with the ID of the container. The whole aggregation is solved conceptually in the opposite way.
So, if you like to forget intuition and specify precisly, then we are here:
[ ] <>------ P // no navigation specified, final navigatability depends on implementation constrains
[ ] <>------> P // navigation from container to part only
[ ] <><----- P // navigation form part to container only, natural if you have a "qualified" aggregation or you are in a table based system (SQL-DB)
[ ] <><-----> P // navigation into both directions
That above was "precise". But its usually not necessary to be that precise.
What about:
[ ] (parent) <>---------------------> (child)[]
Now I added roles for both ends of the aggregation. Now its basicly specified wrong, as we used the arrow for only one direction. But we gave the component a role name. While this is formal a contradiction it looks nicer and intuitively its clear that the part should have a reference back to its owner called "parent".
angel'o'sphere