クラスの間には、依存関係(uses-a)、集約(has-a)、継承(is-a)の3つの最も一般的な関係があります。
これらの3つの関係の概念を詳細に説明するための例として、オンライン書店注文システムを見てみましょう。
オンライン書店の注文システムの主な機能は次のとおりです。登録ユーザーは、オンライン書店にログインして書籍を購入し、オンライン注文に記入し、書籍の購入料金を支払うことができます。書店が購入の支払いを受け取ったことを確認すると、本はユーザーが残した住所に従って郵送されます。下の図に示すように、本、アカウント、注文、住所などを含む、このシステムでいくつかのカテゴリを確立できます。
依存関係(outes-a)
依存関係は、クラスで最も一般的な関係です。たとえば、注文クラスはユーザーアカウントクラスにアクセスする必要があるため、アカウントクラスは注文クラスで参照する必要があります。つまり、注文クラスはアカウントクラスに依存しますが、本クラスはアカウントクラスに依存する必要はありません。
アカウントクラスを変更すると、注文クラスに影響します。依存関係の本質は、クラス内のメソッドが別のクラスのインスタンスを操作できることです。実際のプログラミングでは、相互依存のクラスの数を最小限に抑えることをお勧めします。下の図に示すように:
集約(has-a)
注文には注文する本を示す必要があるため、これには本のカテゴリ、つまり、本のカテゴリが含まれます。集約と依存関係の違いは、注文クラスがすべてのアカウントクラスオブジェクトを所有しているわけではなく、すべての本クラスのオブジェクトを所有する必要があることです。
継承
継承とは、あるクラスが別のクラスのすべてのデータメンバーを呼び出すことができ、現在のクラスで再定義する必要がないことを意味します。この章では、すでに非常に明確に説明しています。