我正在研究的一个项目遇到了类似的情况。我尝试在一些通用上下文中模拟相同内容。请遵循以下代码:
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());
}
}
我试图确定两个类之间的关系。这不是继承,因为外部类的私有方法可以在内部类中访问。因为内部类的对象保留在外部类中,所以它看起来有点关联关系。
最佳答案
根据UML规范的11.4.3.1
类充当其范围内定义的各种分类器(包括类)的命名空间。嵌套分类器是所包含类的名称空间的成员。分类器嵌套用于信息隐藏的原因。
因此,在您的情况下,“眼睛”和“耳朵”嵌套在“人”中。不幸的是,规范没有为类提供嵌套操作符。您可以在其他隔离专区中展示它们(UML在除了4个必填项之外的其他隔离专区中提供了很大的灵活性),如组件嵌套类的建议(请参见11.6.5,尤其是图11.45)。最终,您还可以考虑一种特定于Packages的符号,即在嵌套Package处带有一个加号的圆圈(在您的情况下为人方)。这在12.2.5中给出,尤其是在图12.5中。但是请注意,从形式上讲,第二种表示法仅适用于包,不适用于类。