オブジェクトコンポジションとはクラスAの変数として、クラスBを定義することである。これによるメリットは、詳細な計算等を他のクラスに委譲することで、簡明なプログラミングを実現できることである。
以下に例を示す。
class Person {
String name;
int age;
Plan p;
・・・・・・・・
pay = p.charge();
}
class Plan{
int base;
int nocharge;
public int charge(){
・・・・・・・・
}
}
この例ではPersonクラスで変数としてPlanクラスを定義することで、Personクラスがplanクラスに詳細な計算(chargeメソッド)を委譲していることがわかる。