実践でそのまま使えるオブジェクト指向の考え方を学べるのが本書の特徴です。オブジェクト指向自体を解説する場合、抽象度が高く言っている意味はわかるけど、それがなんなの?ってなることが多い中、本書は開発現場でそのまま使える知識にまで落として解説しています。
例えば、「検索」という機能をオブジェクト指向でいうクラスの責務に併せて考える場合、どのクラスのメソッドとして実装すればしっくりくるのかということを解説していました。本書の中では、この例の場合は、static メソッドして、本の検索ならば本クラスに、著者の検索ならば著者クラスに実装する方法が解説されていました。
特徴
本書の特徴は、実践で使えるオブジェクト指向の知識を解説している点にあると思います。現場で開発を行ってきた著者ならでわの視点で、かゆいところに手が届く説明がいろんなところにありました。
例えば、検索で返された結果のページ処理(次へ・前へ)の公式や、ドキュメントは追跡可能でなければならない(プレーンテキストでドキュメントを書くより、HTMLで書いたほうがリンクが使える!)など、「確かになぁ」という発見がありました。
オブジェクト指向に関する本の中では、サイズも小さく量も少ないと思います。それでもよくまとまっていて、ほんとにわかりやすいの一言です。オブジェクト指向を始めてみたい人や開発の現場でほんとにオブジェクト指向ってこれでいいのか?という人に本書をおすすめします。
本書の目次です。(一部抜粋)
- オブジェクト指向とは
- オブジェクト指向に向くもの、向かないもの
- オブジェクトとは?
- オブジェクトを定義するということ
- カプセル化・メッセージ・継承
- メソッドサーチ 受動性と自立性
- 要求定義
- オブジェクト指向分析
- 分析でするべきこと
- オブジェクト候補の切り出し
- オブジェクトの抽出
- オブジェクト間の関連
- オブジェクト指向設計
- インターフェースを考慮する
- オブジェクトの同一性
- オブジェクトの永続性とデータベース
- デザインパターン
- オブジェクト指向プログラミング
- 状態管理の実装
- 倉庫の実装(シングルトンの実装)
- ラッパーの実装
- リスナーの実装(オブザーバの実装)
- 複製の実装(cloneの実装)
- データベース周りの実装
- よりよりオブジェクト指向開発のために
覚書き
ページ処理の公式
検索機能を実行して、結果を取得した場合に件数が多いと1ページにすべては表示できません。そこで、ページ遷移処理が入ることが多々あります。そんなページ処理の公式(デザインパターン)です。
ページ遷移時に表示する項目として通常、「全検索件数」、「総ページ数」、「現在の表示ページ」、「前ページ」、「次ページ」の5つの情報があります。これらの情報を導くためには、
- 検索結果の全件数(X)
- 1ページに表示する件数(Y)
- 現在のページが何ページ目か(Z)
という3つの情報が必要になります。
3つの情報を用意したら、下の要領で表示項目を求めることができます。
概要 | 内容 |
---|---|
全検索件数 | X |
総ページ数 | X ÷ Y の切り上げ整数 |
現在の表示ページ | Z |
前ページ | (Z - 1) >= 1 の場合は Z - 1 |
次ページ | (Z + 1) <= (総ページ数) の場合は Z + 1 |
同一性と同値性の区別
オブジェクト指向において、オブジェクト同士が同一なのか同値なのかを区別することは非常に大切です。例えば、「よくわかる最新オブジェクト指向の基本と仕組み」という本オブジェクトがあるとします。同値つまり同じ内容を表しているかどうかは、本の場合はISBNを比較すればわかります。同一の内容を表す本であれば同じISBNを持つはずです。
しかし、オブジェクトが同一であるかは判定できません。1つはAさんの持つ本。もう1つはBさんの持つ本である場合、2つの本は同一のものとはいえません。
そこで、同一性を確認するために、古くからデータベースなどでは「主キー」というものを使い同一性のチェックを行っていました。この考えをオブジェクトにも反映させて、同じキーを持つものを同一と保証するようにします。
状態を問い合わせるメソッド
オブジェクト指向において、オブジェクトの状態がどうであるかはオブジェクト自身に問い合わせるようにするべきです。これにより、簡素な記述ができる場面が増えると思われます。
参考
- オブジェクト指向を体にしみこませたい人はこれをおすすめ。読みやすく、わかりやすいです。
- 図解シリーズUML編はどうですか?