これからオブジェクト指向をはじめる人に、超おすすめの一冊です。本書のサンプルはC++言語で書かれていますが、Javaで開発を行っている人も敬遠しないでください。ところどころに実装依存の話も出てきますが、全体的に抽象度が高いです。にもかかわらず読みやすく理解しやすく、楽しいのはなぜなんでしょう?

オブジェクト指向とはなんだというところから、どんな考え方が本当のオブジェクト指向なのかを気づかせてくれる、非常に秀逸な本です。繰り返し繰り返し要点を述べてくれるので、頭に残りやすいです。また、最後まで読みきれば、C++言語に関する一通りの文法も学べてしまう一石二鳥の内容となっています。

是非、オブジェクト指向をこれから始めるという方に、オブジェクト指向をもう一度勉強したいという人に読んでいただきたい良書です。自身を持っておすすめします。

特徴

本書の特徴は、段階的に繰り返し同じ事を違った角度から解説してくれるところにあります。オブジェクト指向のなんたるかが、確実に頭に残るように書かれています。それでいて、非常に読みやすくわかりやすいです。

一つ残念なのは、最近のUMLブームより前に発売されたこともあり、中で使われている記法はOMT記法となっています。ほとんどUMLと同じように読めるのですが、こういうところから古書の感じがしてしまうのが残念です。それでも、今読んでも他のオブジェクト指向解説本にくらべたら、まだまだ右に出るものは少ないと思います。

本書の目次です。

  • 誤解と混乱からの開放
  • クラスとはなにか
  • 「データ」ではなく「クラス」である理由
  • 私たち開発者にとってのメリットとは
  • なにがクラスになるのか、そしてならないのか
  • 知られざる最重要概念
  • プログラムを「作らない」ためのテクニック
  • さらに深くシステムを洞察するために
  • 複数の面をもつクラスの本質に迫る
  • オブジェクトの変化を管理するための方法
  • 有限状態マシンの本質を追求するためには
  • オブジェクトの連携の把握
  • 実際にプログラムを動かすために
  • オブジェクト指向に不可欠な実装技術
  • 動くプログラムを作る

「なにがクラスになるのか、そしてならないのか」というタイトルに、非常に興味を持ったのが本書を購入したきっかけでした。非常に読みやすく、買ったその日に全部読みきったのを覚えています。その後も、3度ほど読み返してみました。それくらい面白い本だったのです。

すべてのオブジェクト指向開発技術者におすすめする、非常に優れた本だと思います。是非読んでみてください。

覚書き

  • ユーザの視点からシステムを客観的に見たときに、そこに存在する対象(モノ)をモジュール化したモノがクラス
  • 改良の要求は「開発時の視点」ではなく、「運用時の視点」から常に発生する
  • 分析段階の成果物は、環境に依存性がないものになる
  • システムからクラスを探し出す作業は、システムの仕様から名詞を探す作業となる
  • ソフトウェア構成部品としてクラスを考えるならば、内部に隠されてしまう属性よりも、外部からの窓口となる操作のほうがはるかに重要
  • オブジェクト指向開発では、クラスの内部の変化を状態としてとらえる
  • イベントとは一瞬しか存在できないもの。時間がかかるようであれば、それはもうイベントではなく一つの状態
  • 問題領域のクラスは、基本的に処理系独自の処理や、アプリケーション独特の仕様に依存するべきではない

参考

  • オブジェクト脳を作るための本です。

  • オブジェクト指向についての疑問点の解消にどうぞ

  • これからのC++によるソフトウェア開発に欠かせない一冊になるはず