フクの非日常

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

なぜ、あなたはJavaでオブジェクト指向開発ができないのか

とても挑戦的なタイトルである。
いや、むしろ痛いところを突くタイトルというほうが正直か。

なぜ、私はJavaでオブジェクト指向開発ができないのか。
誰か知ってる人がいたら教えてほしい。
常々そう思っているソフト開発者は多いに違いない。
そこにこのタイトルときたら、触手が伸びること間違いなし。
普段から英語が使えるようになりたい、と考えている人に
「どうして英語が使えない」と言う本が目にとびこんだようなモノだと思ったらよいかな。

Javaでオブジェクト指向開発ができない人には2種類ある。
①Cなどの非オブジェクト言語しか扱ったことが無い人。
②Javaを使っているが、オブジェクト指向開発ができない人。

おもうに、80年~90年代から開発をしてる人が①で、
最近の人は②なのではないかな。
自分などは、確実に①の部類である。
クラスやメソッドというより、レジスタやポートの方が仲良しだったりする。
しかし!いまや組み込みOS AndroidはJavaベースの開発環境。
Cでガチガチの開発は今で言うCOBOL的存在になる日も近いのではなかろうか。

# ちなみに、今日時点では組み込み製品はCPUやメモリの制約が強いため
# 効率よいコードを書く必要があり、ASMやCがまだまだ幅を利かせている。
# いまのところマイコンのクロス環境といえばC、ではないかな。

閑話休題。
本書ではオブジェクト指向の利点を示す工夫が施してある。
まずは、簡単なプログラムを非オブジェクト指向言語でコーディングしている。
いったん完成、めでたしめでたしとした後で、じゃあこんな変更を入れてみようか!
という地獄の仕様変更モードに突入し、変更のため原型を留めなくなってしまう
哀れなプログラムを例に取り上げている。
ああ、もう作り直すしか手はないのか。。。
そのとき、変更に強いオブジェクト指向の出番なのである。
同じ機能を持つプログラムをオブジェクト指向で書き直すことで
これまでの非オブジェクト指向との違いを見ていくのだな。

オブジェクト指向のコーディングに変えたといっても変更にコツがあるのだそうだ。
むやみにクラスの継承をしても、効率的なプログラムにはならないとか。
インターフェースを使うとか。うーん、やっぱり難しいんだね。オブジェクト指向。

でもまあ、あれこれと説明を読んでいると「おっ、そういうことか」と思うことがでてくる。
よくマンガとかでひらめいた時には電球マークが頭の上に点くが、
自分の場合「カリッ」と音がして頭の中の線が繋がったような感じがした。
非オブジェクト指向言語では、変数はメモリに領域を取っただけのもの。
それを参照したり、代入したり、ポインタで指したりして使う。
変数定義も単独だったり配列だったりする。
オブジェクト指向の場合、変数というより、変数を扱うための動作つきのクラスとして
つくり、1つ作るか、配列で作るかはクラスの実態を単独で持つか、Array(配列)
で持つかの違いなのだろうなー。

変更への強さの秘密は、クラスにあるんじゃないかな。
非オブジェクト指向言語では、ある変数の役割が変わると
その変数に関する参照、変更の操作全てを見直す必要がある。
それに対し、オブジェクト指向ではクラスのインスタンスを考慮すればよいということ。
非オブジェクト指向でも正しく構造化(カプセル化)できていれば、
同じことがいえようー。
ということでな、ようやく「オブジェクト」指向ってのがモノ(クラス?)中心の考え方を
するんだねえというのがじんわりわかってきたところ。

なぜ、あなたはJavaでオブジェクト指向開発ができないのか―Javaの壁を克服する実践トレーニングなぜ、あなたはJavaでオブジェクト指向開発ができないのか―Javaの壁を克服する実践トレーニング
(2004/12)
小森 裕介

商品詳細を見る

コメント


管理者にだけ表示を許可する
 

 

トラックバック

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。