UMLに関する質問があります。私は単にプライベートアクセス修飾子を持つ内部クラスを含むクラスを持っています-他のどこからもアクセスすることはできません...通常、内部クラスリレーションを提示するために、ここのような(+)リレーションを使用できます(InnerOddIterator
):
( http://www.uml-diagrams.org/nested-classifier.html から取得)
このクラスがプライベートであることをどのように明確に強調できるかについての情報はどこにも見当たりません。そのような方法がまったく存在するかどうか知っていますか? 「はい」の場合、ここに何かリンクをお願いします。
わかりやすくするために、サンプルコードを次に示します。
public class DataStrucure {
// fields, methods, etc
private class InnerOddIterator{
// ...
};
}
UMLの観点から。分類子(クラスも)が他のクラスにネストされている場合、ネストクラスは名前空間の役割を果たします。この場合、ネストされたクラスはコンテキスト名前空間で非表示(プライベート)になります。つまり、ダイアグラムは暗黙的にプライベートな内部クラス定義を定義します。
ここに、UML超構造セクションの構造化分類子の定義の一部を示します:
「クラスは、クラスを含むスコープ内で定義されたさまざまな種類の分類子の名前空間として機能します。分類子のネストは、分類子の可視性を包含クラスの名前空間の範囲内に制限し、情報隠蔽の理由で使用されます。分類子は、包含クラスの他の分類子と同様に使用されます。」
まず、コードに何かがあり、UML表現を要求しています。しかし、私見では、その逆を見る必要があります。そのUMLアイデアをコードでどのように表現できるか。 (一部のプログラミング言語は、プライベートなネストされたクラスさえ提供していません...)。
プライベートなネストされたクラスに関しては、コンポジションを使用することをお勧めします。 Associationほど強力ですが、継承ほど強力ではありません。そして、作曲されたクラスは作曲家なしでは存在できません。ほぼ正確にプライベートなネストされたクラスです。
図面は http://www.uml-diagrams.org/association.html から取得されます。
.