私は単なるエンジニアであって学者や研究者ではないため、ここに書いてある内容は科学的に吟味されたものではありません。
しかし、普段の仕事の中で気付いた合理性のある内容だと思っています。
これから説明するオブジェクト指向に関する原則は、実際の開発現場で皆さんが実践することを目的に書いています。いわば、「開発現場で役立つオブジェクト指向の本質」を解き明かすために書きました。
オブジェクト指向設計に関してはデザインパターンという形で様々な本が書かれていますが、パターンは有用ではあるものの全部を一々覚えてはいられません。そもそもパターンというのは、オブジェクト指向の本質を理解した人が設計した有用な常套手段に名前を付けたものです。囲碁で言う定石です。
しかし定石には必ず理由があり、それらの根底には共通する原則があります。このサイトでは、オブジェクト指向設計における原則を記述しています。つまり、定石を産み出すための原理です。囲碁で言えば手筋(てすじ)が近いでしょうか。
これを理解してしまえばパターンに頼ることなく正しい設計にたどり着けると私は考えています。パターンを否定しているのではありません。パターンの奥に隠れた本質を理解することが大切なのです。
それでは次ページから、「本には書いてないオブジェクト指向」の始まりです。
責務はクラスではない
クラスにするもの
小物クラス
リンゴ一個とリンゴ一山は異なるクラス
関数とユーティリティクラスは禁止
privateメソッド禁止
どのメソッドをどのクラスで実装すべきか
しかし、普段の仕事の中で気付いた合理性のある内容だと思っています。
オブジェクト指向って?#
オブジェクト指向の最初の説明として良く出てくるのが、- 隠蔽
- 継承
- 多態性
これから説明するオブジェクト指向に関する原則は、実際の開発現場で皆さんが実践することを目的に書いています。いわば、「開発現場で役立つオブジェクト指向の本質」を解き明かすために書きました。
オブジェクト指向設計に関してはデザインパターンという形で様々な本が書かれていますが、パターンは有用ではあるものの全部を一々覚えてはいられません。そもそもパターンというのは、オブジェクト指向の本質を理解した人が設計した有用な常套手段に名前を付けたものです。囲碁で言う定石です。
しかし定石には必ず理由があり、それらの根底には共通する原則があります。このサイトでは、オブジェクト指向設計における原則を記述しています。つまり、定石を産み出すための原理です。囲碁で言えば手筋(てすじ)が近いでしょうか。
これを理解してしまえばパターンに頼ることなく正しい設計にたどり着けると私は考えています。パターンを否定しているのではありません。パターンの奥に隠れた本質を理解することが大切なのです。
このサイトを読む上での注意点#
このサイトに書いてある内容には、皆さんのこれまでの常識をくつがえすものが多々あります。今までの常識にとらわれずに読んで下さい。可能ならば頭を白紙の状態にして、書いてある内容を純粋に吟味してみて下さい。皆さんの開発にきっと役立つはずです。それでは次ページから、「本には書いてないオブジェクト指向」の始まりです。
本には書いてないオブジェクト指向のページ一覧#
クラスとはデータ構造責務はクラスではない
クラスにするもの
小物クラス
リンゴ一個とリンゴ一山は異なるクラス
関数とユーティリティクラスは禁止
privateメソッド禁止
どのメソッドをどのクラスで実装すべきか
添付ファイルの追加
ログイン済のユーザのみが添付ファイルをアップロード出来ます。
添付ファイル一覧
Kind | Attachment Name | Size | Version | Date Modified | Author | Change note |
---|---|---|---|---|---|---|
png |
aggregation.png | 1.4 kB | 2 | 19-9-2011 00:08 | ytp | |
png |
aggregation2.png | 3.2 kB | 1 | 18-7-2011 01:13 | ytp | |
png |
aggregation3.png | 3.2 kB | 1 | 18-7-2011 01:13 | ytp | |
png |
association.png | 1.0 kB | 1 | 20-9-2011 00:04 | ytp | |
png |
composite.png | 1.4 kB | 1 | 18-7-2011 01:13 | ytp | |
png |
extend.png | 1.4 kB | 1 | 18-7-2011 01:13 | ytp | |
png |
generalize.png | 3.2 kB | 1 | 18-7-2011 02:28 | ytp | |
png |
implement.png | 1.9 kB | 1 | 18-7-2011 01:13 | ytp |
«
This particular version was published on 12-7-2011 02:52 by ytp.