First thought is that this level of abstraction may be not appropriate to show such an issue all the time. For example, consider that we have three packages,
org.example.foo
, org.example.bar
,
and org.example.foobar
.The package
org.example.foo
has the classes A
and B
.
package org.example.foo; public class A { ... }and
package org.example.foo; import org.example.foobar.G; public class B { G g_ref; }The package
org.example.bar
has:
package org.example.bar; import org.example.foo.A; public class C { A a_ref; }and
package org.example.bar; public class E { ... }The package
org.example.foobar
has:
package org.example.foobar; import org.example. public class F { E e_ref; }and
package org.example.foobar; public class G { ... }The UML diagram the depicts the dependencies follows.
If i am not mistaken, this is a cyclic dependency, but not in our case ... why? Because the classes are dependent in pair and they do not form a full cycle. Look at the code some more to see my point. The diagram that shows the real picture follows.
Notations are usefull :), but be always sure that you see the real picture.