オブジェクトの責務を果たすための「属性」と「操作」
オブジェクト指向では、
開発者はそれぞれオブジェクト指向に乗っ取って部品化されたもの(オブジェクト)に対して、
それぞれ責務(役割、責任)を事前に割り振る
↓
コードが実行されたら、
それぞれ責務が割り振られた部品達が自分の役割を果たしながら
他の部品と連携して動いてくれる
ex.「サッカー選手」オブジェクト
「ボールを受けたら前に走る」など、あらかじめ設定された役割を果たす行動責任を負っている
「ATM口座オブジェクト」
行動責任は負わないが、「残高をしっかり覚えておく」という情報責任を負っている
⇨このような「情報保持」と「行動」の責任を果たすために、
それぞれのオブジェクトは「属性」と「操作」を持っている
どのオブジェクトがどんな属性や操作を持つかは、プログラマが部品を作成する際に決定する
[属性] その登場人物に関する情報を覚えておく箱
[操作] その登場人物が行う行動や動作の手順
ex. オブジェクト「勇者」
属性 「名前、HP、MP」
操作 「戦う、逃げる」
↑
・ オブジェクト操作を呼び出すためには、プログラムのmainメソッドや他オブジェクトから行動指示を送る
勇者よ座れ/キノコよ逃げろ
[勇者] [キノコ]
座る 逃げる
(座るという操作の中に記述された行動責任のHP回復も実行)
・ あるオブジェクトから別のオブジェクトへ操作の指示を送る事も可能
ex. mainメソッド
キノコよ、催涙ガス噴射
[キノコ]
① 勇者の操作から「眠る」を呼び出す
[勇者]
② 眠る
・ オブジェクトは他のオブジェクトの属性を取得したり、書きかえも可能
ex. mainメソッド
勇者よ、キノコと戦え
[勇者]
① キノコを攻撃する(キノコのHP属性を5減らす)
[キノコ]
② キノコのHP属性が35→30に書きかわる
・・・要するに
勇者への戦えの指示 と キノコに対してHP属性を書きかえる指示は一緒
(同時に行われる)