【发布时间】:2016-10-26 13:41:41
【问题描述】:
我在当前正在进行的项目中遇到了类似的情况。我尝试用一些一般上下文来模拟相同的内容。按照下面的代码:
interface Receptor
{
public void recept();
}
class Human
{
private void bloodCirculate(String receptor)
{
System.out.println("Blood flows in " + receptor);
}
public class Eye implements Receptor
{
@Override
public void recept()
{
bloodCirculate("eye");
System.out.println("Look");
}
}
private class Ear implements Receptor
{
@Override
public void recept()
{
bloodCirculate("ear");
System.out.println("Listen");
}
}
private void recept(Receptor receptor)
{
receptor.recept();
}
public void look()
{
recept(new Eye());
}
public void listen()
{
recept(new Ear());
}
}
我试图确定这两个类之间的关系。这不是继承,因为外部类的私有方法可以在内部类中访问。由于内部类的对象保存在外部类中,因此看起来有点关联关系。
【问题讨论】:
-
至少对于 Ear 来说,它显然是 Composition,因为 Human 可以完全控制其生命周期。
-
是的,在 UML 术语中,人眼和人耳关系都是聚合类型 = 复合的关联。
-
@www.admiraalit.nl 由于
Eye是具有公共构造函数的公共,因此另一个类可能会获得它自己的实例。那会违反构图。 -
很高兴看到公众的眼睛。你能借我一只眼睛吗?在德语中,“借给我你的耳朵”很常见(请听我说)。所以这可能是来自不同文化的实现;-)
-
@MarkoTopolnik。不。如果 Human 端的多重性为“0..1”,则可能存在不包含在任何 Human 实例中的 Eye-instances。
标签: java uml relationship inner-classes class-diagram