今日は日記を書いていたらこの名著を紹介するのを忘れていた事に気付いたピヨ♪
オブジェクト指向入門 第2版 原則・コンセプト (IT Architect’Archive クラシックモダン・コンピューティング)
オブジェクト指向を知りたい時、この書籍は必読ピヨ♪
【目次】
パートA 諸問題
第1章 ソフトウェアの品質
1.1 外的品質要因と内的品質要因
1.2 外的品質要因
1.3 ソフトウェアの保守について
1.4 本章のまとめ
1.5 参考文献
第2章 オブジェクト指向の基準
2.1 基準について
2.2 方法論と言語
2.3 実装と環境
2.4 ライブラリ
2.5 もっと詳しい予告編
2.6 参考文献とオブジェクトのリソース
パートB オブジェクト指向への道
第3章 モジュール性
3.1 5つの基準
3.2 5つの規則
3.3 5つの原則
3.4 本章のまとめ
3.5 参考文献
3.6 演習問題
第4章 再利用性へのアプローチ
4.1 再利用性の目標
4.2 何を再利用すべきか?
4.3 ソフトウェア開発における繰り返し
4.4 「非」技術的障害
4.5 技術的な問題
4.6 モジュール構造の5つの要件
4.7 伝統的なモジュール構造
4.8 多重定義と総称性
4.9 本章のまとめ
4.10 参考文献
第5章 オブジェクト技術への道
5.1 コンピュータ処理の中身
5.2 機能による分解
5.3 オブジェクトによる分解
5.4 オブジェクト指向によるソフトウェア構築
5.5 課題
5.6 本章のまとめ
5.7 参考文献
第6章 抽象データ型
6.1 基準
6.2 実装のバリエーション
6.3 オブジェクトを抽象的に見るには
6.4 仕様記述を形式化する
6.5 抽象データ型からクラスへ
6.6 ソフトウェアを越えて
6.7 補助的な話題
6.8 本章のまとめ
6.9 参考文献
6.10 演習問題
パートC オブジェクト指向の技法
第7章 静的な構造:クラス
7.1 オブジェクトは主体ではない
7.2 ありがちな混乱を避けるために
7.3 クラスの役割
7.4 一様な型体系
7.5 単純なクラス
7.6 基本的な構文規約
7.7 オブジェクト指向的なスタイル
7.8 選択的エクスポートと情報隠蔽
7.9 すべてを1つにする
7.10 検討
7.11 本章のまとめ
7.12 参考文献
7.13 演習問題
第8章 実行時の構造:オブジェクト
8.1 オブジェクト
8.2 モデリングツールとしてのオブジェクト
8.3 オブジェクトと参照を操作する
8.4 生成プロシージャ
8.5 さらに参照について
8.6 参照に対する操作
8.7 複合オブジェクトと拡張型
8.8 アタッチメント:参照と値の意味
8.9 参照を扱うということ:利点と危険
8.10 検討
8.11 本章のまとめ
8.12 参考文献
8.13 演習問題
第9章 メモリ管理
9.1 オブジェクトに何が起きるのか
9.2 呑気なアプローチ
9.3 メモリの回収に関する諸問題
9.4 プログラマ制御による開放(デアロケーション)
9.5 部品レベルのアプローチ
9.6 自動領域管理
9.7 参照カウント
9.8 ガーベジコレクション
9.9 ガーベジコレクションの実用上の諸問題
9.10 領域管理を備えた環境
9.11 本章のまとめ
9.12 参考文献
9.13 演習問題
第10章 総称性
10.1 水平方向と垂直方向の型の汎化
10.2 型のパラメータ化の必要性
10.3 総称クラス
10.4 配列
10.5 総称性のコスト
10.6 議論:これで終わりではない
10.7 本章のまとめ
10.8 参考文献
10.9 演習問題
第11章 契約による設計:信頼性の高いソフトウェアを構築する
11.1 基本的な信頼性のメカニズム
11.2 ソフトウェアの正しさについて
11.3 仕様を書く
11.4 ソフトウェアテキストに表明を導入する
11.5 事前条件と事後条件
11.6 ソフトウェア信頼性のための契約
11.7 表明を用いた作業
11.8 クラス不変表明
11.9 クラスが正しいのはいつか?
11.10 ADTとの関係
11.11 表明命令
11.12 ループ不変表明と変化表明
11.13 表明を使う
11.14 検討
11.15 本章のまとめ
11.16 参考文献
11.17 演習問題
第12章 契約が破られるとき:例外処理
12.1 例外処理の基本概念
12.2 例外処理
12.3 例外メカニズム
12.4 例外処理例
12.5 rescue句の仕事
12.6 高度な例外処理
12.7 検討
12.8 本章のまとめ
12.9 参考文献
12.10 演習問題
第13章 支援メカニズム
13.1 非オブジェクト指向ソフトウェアへのインタフェース
13.2 引数渡し
13.3 命令
13.4 式
13.5 文字列
13.6 入出力
13.7 識別子に関する語彙的慣例
13.8 本章のまとめ
13.9 演習問題
第14章 継承入門
14.1 多角形と長方形
14.2 多相性
14.3 継承のための型付け
14.4 動的束縛
14.5 暫定特性と暫定クラス
14.6 再宣言の方法
14.7 継承の意味
14.8 暫定クラスの役割
14.9 検討
14.10 本章のまとめ
14.11 参考文献
14.12 演習問題
第15章 多重継承
15.1 多重継承の例
15.2 特性の改名
15.3 構造をフラットにする
15.4 反復継承
15.5 検討
15.6 本章のまとめ
15.7 参考文献
15.8 演習問題
第16章 継承のテクニック
16.1 継承と表明
16.2 グローバルな継承構造
16.3 凍結型特性
16.4 制約付き総称性
16.5 試行代入
16.6 型付けと再宣言
16.7 アンカー宣言
16.8 継承と情報隠蔽
16.9 本章のまとめ
16.10 参考文献
16.11 演習問題
第17章 型付け
17.1 型付けの問題
17.2 静的型付け:「なぜ」と「どうして」
17.3 共変性と子孫隠蔽
17.4 システム妥当性への最初のアプローチ
17.5 アンカー型に任せる
17.6 グローバル分析
17.7 多相的catcallに気づく
17.8 評価
17.9 完全な適合
17.10 本章のまとめ
17.11 参考文献
第18章 グローバルオブジェクトとグローバル定数
18.1 基本型の定数
18.2 定数の利用
18.3 クラス型定数
18.4 onceルーチンの応用
18.5 文字列型定数
18.6 ユニーク値
18.7 検討
18.8 本章のまとめ
18.9 参考文献
18.10 演習問題
オブジェクト技術用語集
参考文献
E.1 筆者以外の人の著作
E.2 筆者の著作
目次を見たらこの書籍の濃さは伝わると思うピヨ♪濃い本が大好きなボクは喜んで買ったピヨ♪それで、この本はどういった本なのかというと
バーランド・メイヤー氏が考えだしたオブジェクト指向方法論をみっちり解説した本だっピヨッ♪勘違いして欲しくないんだけど、これはあくまでも数あるオブジェクト指向方法論の内の一つ本だっピヨ。でもボクはこの本を読むことを強くお勧めするピヨ♪
これからその理由を話すピヨ。それは、
契約指向なオブジェクト指向を学べるからなんだ。契約指向とは何かというと、オブジェクトが果たすべき役割と責任をきっちり決めて、各メソッドの事前契約(メソッドが実行する前の契約)・事後契約(メソッドを実行した後の契約)・不変表明(どのような状態を保証するのかを定めた契約)を定めていく考え方の事を指して言っているピヨ。Windows系開発者の方は攻撃的デバッグを知っていると思う。そうこの有名な本(
.NET&Windowsプログラマのためのデバッグテクニック徹底解説
)で紹介されている事ピヨ。
それで、契約指向の何が美味しいのかというと、先ずは
ユニットテストが行いやすくなる点が挙げられるピヨ。実務でオブジェクト指向でシステム設計した時、何が問題になると思う?それは、
要求仕様が変化しても品質を保つことなんだ。開発現場に居る人にとって常識だと思うけど、お客様の要求は常に変わるピヨ。時は全てを帰るからそれも当然だよね。だけど、従来開発方法(プロセス指向・データ指向)ではその変化に対応し辛いんだ。だけど、その中で品質を保つ事はプロとして当然要求される。じゃあどうしたらいいのかというと、オブジェクト指向になるんだけど、でも
オブジェクト指向は実のところ一意な概念ではないピヨ。
オブジェクト指向をしたら、要求分析は具体的にどうすればいいの?設計は具体的にどうすればいいの?開発作業はどうやって進めればいいの?・・・といった点が問題になってくるピヨ。その時、ただ無闇に「オブジェクトで考えろ」といっても何も解決しないピヨ。そこで、バーランド・メイヤー氏は
個々のオブジェクトが果たすべき役割と責任に注目してオブジェクト指向開発をすると提唱しているんだ。
ここがポイントで、オブジェクトを契約指向で考えたらどうして品質が上がるのかの答えがここにあるピヨ。彼が個々のオブジェクト(クラス)に拘っている点に注意しよう。システム全体で常にテストをするのは難しいけど、
個々のオブジェクトだとテストするのは簡単だよね♪
おまけに、
単体で考えるから再利用しやすいクラスが作れる可能性が高いピヨ♪これが契約指向する2つ目の利点なんだ。
オブジェクト指向のメリットは再利用だとよく言われてるけど、実際に再利用しようと思ったら汎用的なオブジェクトでなければならない。特殊な環境や問題に特化したオブジェクトは再利用しようがないからね。その点、メイヤー氏のオブジェクト指向方法論は、
個々にオブジェクト(クラス)に注目し、処理順序に依存することを極力避けるので再利用しやすいオブジェクトが出来上がるピヨ♪
ここまで一生懸命説明したけど、普通はよくわからないよね?その答えは・・・この本を読もう!この本を読んだらオブジェクト指向とは一体何なのかという一つの答えが得られると思う。オブジェクト指向を真面目に学習したい人は絶対に読もう!
【補足】
他の本も知りたいという人は、
書籍レビュー目次と
書籍レビューを見ると良いピヨ♪
テーマ : 情報処理技術
ジャンル : コンピュータ