|
オブジェクト指向の大家、ピーターコードによる初めてのJava設計解説書
Javaについて、プログラミングではなく設計を学びたい人にとって最適の良書です
|
|
|
[著者] ピーター・コード , マーク・メイフィールド
[訳者] 依田 光江
[監訳者] 依田 智夫 , 今野 睦
[出版社] 株式会社ピアソンエデュケーション
ISBN4-89471-014-5
定価 3,400円+税 |
|
|
「第2版への序文」の要約
Java Designが出版されてから2年が経過しましが、その間Javaは広く受け入れられてきました。
第1版ではプログラミングよりはむしろ設計に重きを置きました。Javaプログラミングの本の入れ替わりは激しいのですが、
設計について述べた本書は2年間にわたりベストセラーであり続けました。 第2版での目で見てわかる最大の特徴はUML(統一モデリング言語)表記法に統一したことです。
内容的な特徴としては新しいセクションが68ページも増えたことがあります:
■「インターフェースを用いた設計」の章で戦略を8つ追加(第3章)
■いつ安全に終了できるかを自分で知っているスレッド、「ResponsibleThread」についての記述を追加(第4章)
■インターフェース・アダプターをカプセル化するための内部クラスの使い方を追加(第5章)
■通知メカニズムの補足の追加(第5章)
Source-Listener
Source-support-listener(JavaBeans-style notification)
Producer-bus-consumer(InfoBus-style notification)
Model-view-controller(Swing-style notification)
Source-listener across a network(Enterprise JavaBeans-style
notification)
第1章:例題による設計
第2章:継承でなくコンポジションを利用した設計
第3章:インターフェースを利用した設計
第4章:スレッドを利用した設計
第5章:通知を利用した設計
付録A:設計上の戦略
付録B:表記法のまとめ
付録C:Javaのスコープ
みどり色の戦略は第2版で始めて登場した戦略です
第1章 例題による設計
小さな航空会社チャーリーズ・チャーター社の座席予約システムと、ゾーズ・ゾーン社のセンサー・モニタリング・システムという二つの例題を通して、Javaによるオブジェクト設計の手順がわかりやすく解説されています。
ここで紹介されている手順とは次のようなものです:
1.システムの目的と機能を識別する
2.クラスを選択する
3.UIをスケッチする
4.シナリオをもとに動的な側面を見極める
5.オブジェクトモデルを構築する
チャーリーズ・チャーター社とゾーズ・ゾーン社の事例は、本書のすべての章を通じて使用されます。
本章で登場する戦略
- 目的を識別する戦略
- 機能を識別する戦略
- クラスを選択する戦略
- UIコンテンツの戦略
- 高い価値をもたらすシナリオを優先する戦略アクション文の戦略オブジェクトモデルを構築する戦略
- アクション文の戦略
- クラス図を構築する戦略
第2章 継承でなくコンポジションを利用した設計
設計を拡張する手段として継承が適しているのは限られたコンテクストの中だけであり、ほとんどの場合、継承よりもインターフェースまたはコンポジションを使うほうがより適切であることが解説されています。継承が持つリスクとは何かが解説され、継承が適しているケースを判断するための5つの基準が紹介されています。継承のリスクとは何でしょうか。スーパークラスを変更する場合は、そのサブクラスすべてをチェックし、変更がもたらすあらゆる影響を検討しなければなりません。また時間の経過とともにサブクラスを移り変わるオブジェクトには継承の使用は適していません。継承に対してコンポジションとは、オブジェクトの特化した役割をサブクラスとしてモデル化するのではなく、独立した役割オブジェクトとしてモデル化し、あらたな関連を定義する方法です。本章ではこの継承とコンポジションを組み合わせた例も紹介されています。
本章で登場する戦略
- コンポジションの戦略
- 継承を利用するか判断する戦略
第3章 インターフェースを利用した設計
Javaの主要な特徴の一つであるインターフェースが解説されています。
従来からのオブジェクト指向設計においては柔軟性、拡張性、プラグ接続性に関して伝統的な壁がありました。インターフェースはオブジェクト間の結合の力をゆるめ、設計された部品の互換性を高め再利用の機会を増やしてくれます。インターフェースとは単に、繰り返し使用するために定義されたメソッドシグニチャの集合にすぎません。しかし、明確に定められたコンセントの仕様(つまりインターフェース)によって、コーヒーメーカーのような電気器具がどこでも簡単に使えるのと同様に、インターフェースはオブジェクトの取り外しや置き換えを容易にしてくれるのです。
本章で登場する戦略
- 個々のオブジェクト接続を調べる戦略
- 個々のメッセージ送信を調べる戦略
- リピータを抽出する戦略
- プロキシを含めて抽出する戦略
- 類似したアプリケーションのために抽出する戦略
- 将来の拡張に備えて抽出する戦略
- インターフェースを追加する場所の戦略
- 共通の機能をもとにしてインターフェースから設計を始める戦略
- 役割の組をもとにしてインターフェースから設計を始める戦略
- 集合とメンバーをもとにしてインターフェースから設計を始める戦略
- 共通する相互作用をもとにしてインターフェースから設計を始める戦略
- インターフェースの粒度の戦略
- クラス内の役割をもとにしてインターフェースから設計を始める戦略
- プラグインアルゴリズムとインターフェースを使用する状況についての戦略
- プラグインアルゴリズムの必要性をもとにしてインターフェースから設計を始める戦略
第4章 スレッドを利用した設計
プログラム実行のストリーム(流れ)であるスレッドが説明され、Javaにおける使い方と多重スレッドを使用する理由、また同期などについて解説されています。スレッドは、一度に複数の処理を行っているように見せる必要のある場合、その設計を単純化してくれます。さらに、アプリケーションの優先順位の高い部分を実行する時の応答時間も短縮します。しかし、必要のない場合は、多重スレッドを使用するべきではありません。本章ではさらに、複数の優先順位を使用する方法として、優先順位付きオブジェクトスレッドや、優先順位付きメソッドスレッドの使用方法、またこれらを組み合わせて使用する方法が説明されています。インターフェース・アダプターの節では、スレッドからrun()以外のメソッドを呼び出させる方法が紹介されています。
本章で登場する戦略
- 値へのアクセスを同期化する戦略
- 必要のあるものだけをクローズアップして同期化する戦略
- オブジェクトへのアクセスを同期化する戦略
- 値のゲートキーパーの戦略
- オブジェクトのゲートキーパーの戦略
- 4つのスレッド設計方式の戦略
- 優先順位付きメソッドの戦略
- スレッドの個数の戦略
第5章 通知を利用した設計
以下の3つの通知メカニズムが説明されています。
1.受動型
2.タイマーベース型
3.能動型
本章で登場する戦略
- ホルダ対インターフェースの戦略
- バランスのとれた設計を探る戦略
- クラス階層からインターフェースを抽出する戦略
- 不必要な前提でインターフェースを制限しない戦略
- 内向きにメッセージを発信し、外向きに通知する戦略
- リピータ使用する戦略
付録A 設計上の戦略
本書を通じて紹介された29個の設計戦略がまとめて説明されています。
付録B 表記法のまとめ
UML(Unified Modeling Language)表記法のサブセットが図解されています。
付録C Javaのスコープ
Java言語の可視性について簡単な図解が示されています。
|
|
|