@ledsun blog

無味の味は佳境に入らざればすなわち知れず

デザインパターンとともに学ぶオブジェクト指向のこころ

この本はいいね。表紙の堅苦しさに比べたら全然難しくない。

対象

オブジェクト指向プログラミングの三大要素

を知っている人、できればそれを使ってコーディングをしたことがある人が読むと良い。

内容

オブジェクト指向プログラミングからオブジェクト指向設計

この本では、オブジェクト指向を次の三階層に分けている。

オブジェクト指向分析概念
オブジェクト指向設計仕様
オブジェクト指向プログラミング実装

第一章では抽象クラス(JavaC#ならインタフェースでもOK)を

抽象クラスによって、関連のあるクラス群に名前を割り当てる方法が与えられ、
関連のあるクラス群を1つの概念として扱えるようになるわけです。

と説明しています。つまり「抽象クラスの名前が概念で、メソッドが仕様で、実装クラスが実装に対応している」ことを教えてくれます。 オブジェクト指向プログラミングからオブジェクト指向設計/分析へと考え方を広げてくれる本です。

デザインパターンとともに学ぶオブジェクト指向のこころ (Software patterns series)

デザインパターンを通してオブジェクト指向設計を学ぶ

オブジェクト指向設計をおおざっぱに言うと「変化しそうなところに抽象クラスを挟んで実装を変えられるように準備しておくこと」です。

これには2つのアプローチがあり

  • デザインパターンを適用してみる
  • 変化しそうなところとしなさそうなところに分ける(共通性/可変性分析)

両方を実例を使って丁寧に教えてくれます。 オブジェクト指向分析のやり方については触れられていません。要求が決まっていてオブジェクトモデルが大雑把に決まっているところから始まります。 使われている例は著者が開発中に取り組んだ問題なので、我われの開発でもぶつかりそうな例になっています。

どちらのアプローチを使うにせよ、どう抽象クラスを挟むと変化に強い設計になるかは「デザインパターンが参考」になり、また「オブジェクト指向のこころ*1」を理解する鍵になると述べた本です。

蛇足

この本を読んで「俺はオブジェクト指向設計をやるぞーっ!」と実際にやってみると、オブジェクトの継承関係をリレーショナルデータベースに格納する方法に悩みます・・・orz

*1:開放/閉鎖原則、依存性の逆転原則、Liskovの置換原則の三つ