オブジェクトコンポジションとはクラス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メソッド)を委譲していることがわかる。