オブジェクト指向の考え方 5th Edition


オブジェクト指向の考え方 5th Edition (impress top gear)


インプレス


著者:Matt Weisfeld
訳者:神林靖


まえがき
 本書の範囲
 第5版で新しくなったこと
 対象読者
 本書のアプローチ
 本書で使用するソースコード
訳者まえがき
著者紹介
訳者紹介

Chapter 1 オブジェクト指向概念への招待
1.1 基本概念
1.2 オブジェクトとレガシーシステム
1.3 手続き型プログラミングとオブジェクト指向プログラミング
1.4 手続き型開発からオブジェクト指向への移行
1.4.1 手続き型プログラミング
1.4.2 オブジェクト指向プログラミング
1.5 オブジェクトは何か
1.5.1 オブジェクトのデータ
1.5.2 オブジェクトの振舞い
1.6 クラスとは何か
1.6.1 オブジェクトの生成
1.6.2 属性
1.6.3 メソッド
1.6.4 メッセージ
1.7 視聴化ツールとしてのクラス図を使用する
1.8 カプセル化とデータ隠蔽
1.8.1 インタフェース
1.8.2 実装
1.8.3 インタフェース/実装パラダイムの実世界の例
1.8.4 インタフェース/実装パラダイムのモデル
1.9 継承
1.9.1 スーパークラスとサブクラス
1.9.2 抽象化
1.9.3 is-a関係
1.10 ポリモーフィズム
1.11 コンポジション
1.11.1 抽象化
1.11.2 has-a関係
1.12 まとめ

Chapter 2 オブジェクトを用いて考える
2.1 インタフェースと実装の相違を理解する
2.1.1 インタフェース
2.1.2 実装
2.1.3 インタフェースと実装の例
2.2 抽象的な考え方を使ってインタフェースを設計する
2.3 真に最小限のユーザーインタフェースを提供する
2.3.1 ユーザーを決定する
2.3.2 オブジェクトの振舞い
2.3.3 環境による制約
2.3.4 パブリックインタフェースを特定する
2.3.5 実装を特定する
2.4 まとめ
参考文献

Chapter 3 オブジェクト指向概念の詳細
3.1 コンストラクタ
3.1.1 コンストラクタはいつ呼び出されるのか
3.1.2 コンストラクタには何があるのか
3.1.3 デフォルトコンストラクタ
3.1.4 複数のコンストラクタを使用する
3.1.5 コンストラクタの設計
3.2 エラー処理
3.2.1 問題を無視する
3.2.2 問題検出してアプリケーションを終了する
3.2.3 問題を検査して回復を試みる
3.2.4 例外をスローする
3.3 スコープの重要性
3.3.1 局所属性
3.3.2 オブジェクト属性
3.3.3 クラス属性
3.4 演算子のオーバーロード
3.5 多重継承
3.6 オブジェクトの操作
3.7 まとめ
参考文献

Chapter 4 クラス解剖
4.1 クラスの名前
4.2 コメント
4.3 属性
4.4 参照を渡す
4.5 コンストラクタ
4.6 アクセスメソッド
4.7 パブリックインタフェースメソッド
4.8 プライベート実装メソッド
4.9 まとめ
参考文献

Chapter 5 クラス設計のガイドライン
5.1 実世界システムをモデル化する
5.2 パブリックインタフェースを特定する
5.2.1 最小限のパブリックインタフェース
5.2.2 実装を隠蔽する
5.3 頑健なコンストラクタを(デストラクタも)設計する
5.4 クラス中にエラー処理を設計する
5.4.1 クラスのドキュメント化とコメントの使用
5.4.2 強調を意図したオブジェクトを構成する
5.5 再利用を意識して設計する
5.6 拡張を意識して設計する
5.6.1 記述的な名前をつける
5.6.2 移植不能なコードをカプセル化する
5.6.3 オブジェクトのコピーと比較の方法を提供する
5.6.4 スコープをできるだけ小さく保つ
5.7 保持性を意識して設計する
5.7.1 開発プロセスを繰り返す
5.7.2 インタフェースをテストする
5.8 永続イブジェクトを使用する
5.8.1 オブジェクトの直列化とマーシャリング
5.9まとめ
参考文献

Chapter 6 オブジェクトを用いて設計する
6.1 設計ガイドライン
6.1.1 適切な分析を施す
6.1.2 作業範囲記述書を作成する
6.1.3 要求事項を収集する
6.1.4 システムプロトタイプを開発する
6.1.5 クラスを特定する
6.1.6 各クラスの役割を決定する
6.1.7 クラスの相互作用を決定する
6.1.8 システムを記述するクラスモデルを生成する
6.1.9 コードを使ってユーザーインタフェースのプロトタイプを生成する
6.2 オブジェクトラッパー
6.2.1 構造型のコード
6.2.2 構造型のコードをラッピングする
6.2.3 移植不能なコードをラッピングする
6.2.4 既存のクラスをラッピングする
6.3 まとめ
参考文献

Chapter 7 継承とコンポジションをマスターする
7.1 オブジェクトを再利用する
7.2 継承
7.2.1 汎化と特化
7.2.2 設計上の決定
7.3 コンポジション
7.3.1 UMLでコンポジションを表す
7.4 なぜカプセル化がオブジェクト指向の基本なのか
7.4.1 継承はどのようにカプセル化を損なうか
7.4.2 ポリモーフィズムの詳細な例
7.4.3 オブジェクトの役割
7.4.4 抽象クラス、仮想メソッド、プロトコル
7.5 まとめ
参考文献

Chapter 8 フレームワークと再利用:インタフェースと抽象クラスを使って設計する
8.1 コード:再利用すべきかすべきでないか
8.2 フレームワークとは何か
8.3 契約とは何か
8.3.1 抽象クラス
8.3.2 インタフェース
8.3.3 すべてを統合する
8.3.4 コンパイラによる検証
8.3.5 契約を凍結する
8.3.6 システムプラグインポイント
8.4 eビジネスの例
8.4.1 eビジネスの課題
8.4.2 再利用しないアプローチ
8.4.3 eビジネスソリューション
8.4.4 UMLオブジェクトモデル
8.5 まとめ
参考文献

Chapter 9 オブジェクトの構築とオブジェクト指向設計
9.1 コンポジション関係
9.2 段階的に構築する
9.3 コンポジションの型
9.3.1 集約
9.3.2 関連
9.3.3 関連と集約を併用する
9.4 依存関係を避ける
9.5 多重度
9.5.1 複数オブジェクト関連
9.5.2 オプションとしての関連
9.6 総まとめの例
9.7 まとめ
参考文献

Chapter 10 デザインパターン
10.1 なぜデザインパターンなのか
10.2 Smalltalkのモデル/ビュー/コントローラ
10.3 デザインパターンの型
10.3.1 生成に関するパターン
10.3.2 構造に関するパターン
10.3.3 振舞いに関するパターン
10.4 アンチパターン
10.5 まとめ
参考文献

Chapter 11 依存関係と強く統合したクラスの回避
11.1 コンポジションと継承、そして依存関係の注入
11.1.1 1) 継承
11.1.2 2) コンポジション
11.1.3 依存関係の注入
11.2 まとめ
参考文献

Chapter 12 オブジェクト指向設計のSOLIDの原則
12.1 オブジェクト指向設計のSOLIDの原則
1) 単一役割の原則(Single Responsibility Principle、SRP)
2) オープン/クローズの原則(Open/Close Principle、OCP)
3) リスコフ置換の原則(Liskov Substitution Principle、LSP)
4) インタフェース分割の原則(Interface Segregation Principle、IPS)
5) 依存関係の逆転の原則(Dependency Inversion Principle、DIP)
12.2 まとめ
参考文献

索引