Entry

今読んでる本 - 『JavaとUMLで学ぶオブジェクト指向の考え方』

2010年09月06日

引越しで荷物を整理したら,部屋から本がすっかりなくなってしまいました。つことで,かばんに入れている本を紹介。

JavaとUMLで学ぶオブジェクト指向の考え方―オブジェクト指向分析・設計入門 (OOP Foundations)
マット ワイスフェルド
翔泳社
売り上げランキング: 610604
おすすめ度の平均: 3.5
2 オブジェクト指向設計過渡期の産物か
4 わかりやすい
4 オブジェクト指向設計の入門書

随分前に出版された OOP 本。原書が出版された 2000 年というと,Java も J2SE/J2EE 1.3 がリリースされた頃で,大部分は Java2 SE 1.2 か 1.1 系を使っている(人は使っている)頃でした。UML にいたっては,UML 1.3 くらいだったので,「何だそれ?食えるんか?」的な人も多かったはず。Ruby のような OOP に特化したスクリプト言語も出はじめていたけれども,オブジェクト指向な言語というと C++ や Smalltalk を指している,といった感覚の人が多かったかもしれません。時代背景としてはそゆ書籍です。

時代背景としては古いんですけれど,しかし,本書はオブジェクト指向を「考え方」の時点から基礎固めするには,とてもよい良書だと思います。というか,オブジェクト指向な言語や設計技法が一般化した今日では曲解されているところが,きれいに説明されている。変な手垢がついていないと言ってもいい。

例えば,本書で「オブジェクト」をどのように説明しているかというと,こんな風に説明している。

オブジェクトは、オブジェクト指向プログラムの構成単位です。オブジェクト指向技術を利用したプログラムは、基本的にオブジェクトの集まりになります。

『JavaとUMLで学ぶオブジェクト指向の考え方』(Matt Weisfeld,萩本順三 他,翔泳社,2002年,p6)

最近のオブジェクト指向本で,ここまで要を得た説明はないんじゃないだろうか。オブジェクトは,あくまでもプログラムの構成単位に過ぎないわけで,猫オブジェクト的なものを持ち出して,やたらと「ニャーニャー」鳴かせたところで何の意味もない。

犬やら猫やらを鳴かせる比喩を,オブジェクト指向の説明に持ち出すことの意味のなさはどこからくるのか。それは,プログラムやシステムの存在を全く措定していないところにあります。たしかに,犬や猫は身近です。しかしながら,犬や猫を使ったシステムやプログラムは一般的ではない。つまるところ,こうした比喩を使うということは,システムやプログラムから離れた一般的な概念の中でも,オブジェクト指向で「一般的に」記述可能であることを暗黙のうちに前提にしているわけです。しかし,直感的にも分かる通り,そうは問屋が卸さない。

少なくとも,ソフトウェアエンジニアリングにおけるオブジェクト指向は,分析/設計/実装のいずれの局面においても,システムやプログラムを作り上げかつ保守するために考案されました。したがって,少なくとも,ソフトウェアエンジニアリングにおいて必要な範囲で「オブジェクト」の内容を記述できればそれで必要十分だし,それ以上の比喩は要求されていません。世の中にあるあらゆる出来事をオブジェクト指向的に解釈/記述できると信じたまま,そうする必要が全くない場面で,大上段に構えたばかりに破綻している説明は少なくありません。

この点,本書でも犬の例を持ち出しているわけですけれど,あくまでも汎化-特化の関係で「is-A とはどういうことか」を説明する箇所に限定しているし,「飼育中のすべての犬を追跡するシステム」のような背景も(多少無理はあるが)前提にしています。やたらと,犬や猫を使っているわけではありません。

また,本書では,変な訳語が少ないことも,理解を助けていると思います。例えば,dynamic binding の訳語に「動的束縛」なんてもんがあるけれども,こんな日本語のセンスのかけらもないような訳語は出てこない。英語以上に難しい訳語を作るくらいなら,英語のままの方がマシです。

本書の原題は「The Object-Oriented Thought Process」で,直訳すると「オブジェクト指向の思考過程」となります。その意味で言うと,個人的には邦題の「JavaとUMLで学ぶオブジェクト指向の考え方」というのは,焦点をぼかしてしまっている感じもします。Java や UML は説明のために引き合いに出されているだけで,本書は Java 本でも UML 本でもありません。ページ数が少ない割に要を得た説明があるので,研修なんかには重宝しそうです。今読んでもおすすめ。

Trackback
Trackback URL:
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN