私が現在取り組んでいるプロジェクトと同様のシナリオが発生しました。私はいくつかの一般的な文脈で同じことをシミュレートしようとしました。以下のコードに従ってください:インナー・アウター・クラスの関係
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());
}
}
私は2つのクラス間の関係を特定しようとしていました。内部クラス内で外部クラスのプライベートメソッドにアクセスできるので、継承ではありません。内部クラスのオブジェクトは外部クラス内に保持されているため、少しアソシエーション関係になります。
少なくとも、耳にとっては、人間がライフサイクル全体を完全に制御できるため、Compositionというのは明らかです。 –
はい、UMLの用語では、人間 - 目関係と人間 - 耳関係の両方は、集約種別=合成の関連です。 –
@ www.admiraalit.nl 'Eye'はpublicコンストラクタで公開されているので、別のクラスはそれ自身のインスタンスを取得することがあります。それは構成に違反します。 –