オブジェクト指向
オブジェクト指向プログラミングは4つの要素をもつ
カプセル化
データ(フィールド)と、それを扱う動作(メソッド)をひとつの「オブジェクト」にまとめる。
外から直接データをいじらせないで、動作を通して操作させる
→privateとpublicの宣言は必須
抽象化
共通する性質・動作をクラスにまとめ、不要な細部を隠す
→メソッドを細分化する必要がある
継承
共通部分を親クラスにまとめて、子クラスが再利用できる
→何度も使う処理をメソッドにして、派生的に都度呼び出す
ポリモーフィズム
同じ「動作の名前」でも、オブジェクトごとに違うふるまいをさせられる
単一責任の原則
AのクラスはAの動作を担うのであって、それ以外の動作は別のクラスに切り出す、といった考え方
「特定の動作以外のものを共存させない」こと
やみくもに分離させるということではない
オブジェクト指向において、複数のクラスに分離するコーディングをするにあたり、
意識すべきことはクラスに属性と操作を持たせ、そのクラス特有の振る舞いを持たせることを目的とする
このとき、
- 属性にあたる部分は変数
- 操作に当たる部分はメソッド
をそれぞれ使っていく
たとえば計算する処理と文章を表示する処理を同じメソッド内で行う、ということは単一責任の原則に則っていないと言える
例)
下のコードでは、コンストラクタ内でクラス内の属性にあたる変数の処理と文字列表示の処理をしている
対して、下のコードはコンストラクタ内では変数処理と文字列表示の処理をそれぞれで分けられている
コンストラクタ内で不必要な処理をさせないように心がけよう...という戒めでした