-6

あるクラスのインスタンス変数は、別のクラスのオブジェクトです! 2つのクラス間の関係は何ですか。どちらも同じパッケージに入っています。

4

1 に答える 1

0

2 つのクラスは確かに関連しています。つまり、これらのクラスにはAssociationがあります。ただし、それらの関係の性質は、 AggregationまたはCompositionのいずれかになります。例を挙げて、 Inheritanceとの違いを説明します。次のクラスを検討してください。

  • Shape(基本クラス。abstractにすることができます)
  • CircleTriangleなどSquare(派生クラス)
  • Line、 (集約または構成Colourで使用されるクラス)

派生クラスのいずれか: CircleTriangleSquare 「IS-A」 Shapeも同様です。これは、サブクラスがスーパークラスのような継承Circle extends Shapeです。publicおよびprotected属性 ( areaなど) と動作 ( など) はすべてmove()継承され、子クラスからアクセスできます。

ここで、これらの形状はそれぞれLine(s)で構成されColour、これらのクラスの実際のインスタンスが形状クラス オブジェクト内の属性 (プロパティ)として存在します。

これは「HAS-A」関係として知られています。なぜなら、Shapea にSquare は a Colourと four Line(s) があるからです。この関係は、次の 2 つの形式でさらに観察できます。

  • 集約(方向性のある関連)
    ここでは、ShapeサブクラスとColour集約を持ちます。この関係は多対 1です。つまり、形状は 1 つの色のみを持つことができ、1 つ以上の形状は同じ色を持つことができます。

  • 構成(集約のより強力な形式です)
    ここで、ShapeサブクラスとLine(s) は1 対多の構成を持ちます。違いは、含まれているオブジェクトの有効期間がそのコンテナーに依存することです。

たとえば、 aTriangleが破壊された場合、それLine(s) も破壊されます。一方、赤く塗られた場合、対応するオブジェクトは、多対 1 の関係の一部として、他の形状オブジェクトからも参照される可能性があるColourため、まだ生きたままです。

参照:
Has-A 関係 (ウィキペディア)継承よりも構成
(ウィキペディア) 継承
よりも構成を優先しますか? (StackOverflow)
集約 vs 構成 vs 継承 vs 関連付け vs 依存

于 2013-07-28T11:42:59.793 に答える