2006年11月10日

オブジェクト指向が何となく解ってきた

先日書きました今読んでいる本の一冊「オブジェクト指向でなぜつくるのか」。3分の2ほど読んだところです。

オブジェクト指向でなぜつくるのか
平沢 章著
日経BP社 (2004.6)
通常24時間以内に発送します。


最初に思ったよりも薄い内容(同じようなことを何度も言っている)ことをさっ引いたとしても、広く浅く全体を網羅するように書いてあるので、入門用にはいいと思います(ただし、初めて「オブジェクト指向」という言葉を聞いたという人にはムリかなぁ。一度勉強しようとしたけど挫折したとか、実際にやり始めたけど全体像が掴めていないという人向き?)。

特に一番最初の「用語の洪水、譬喩の乱用、なんでもオブジェクト症候群」が理解を妨げている、という部分に納得。譬喩は譬喩として割り切ると解ってきました。

よく言われる「鯛焼きの型」と「鯛焼き」が、「クラス」と「インスタンス」の関係だとか言われる譬喩。

new で新しい string オブジェクトを作ったとき、その変数が表す「もの(オブジェクト=インスタンス)」はまだ値を何も持っていない訳で、何でもないけど、string オブジェクトなんです、と。

どこが鯛焼きなんだ!

とちんぷんかんぷんになっていました。その変数が表しているのは、つまりそのような(今で言えば「文字列を扱う」という)性質を持った「箱」になったということなんですね。文字列はリバースしたり、最初の一文字を取り出したり、文字数を数えたりできるということは string クラスの中で定義されている、と。その場合、「+」の記号は文字列の結合を意味するメソッドといういう風に勝手に変化しているわけです。

また、本質的には、それ以前は「処理」を中心に、

元データ →(入力)→ 処理 →(出力)→ 結果データ

という流れがあって、どう処理するか、という発想だったのを、

(元データ).メソッド

という形で、元のデータ(つまりオブジェクト)の「性質」として、メソッドを働かせると、何らかの結果がデータに対して行われる、と。それを新しいオブジェクトで受け止める場合もあれば、元のオブジェクトを変更する(Ruby では破壊的メソッド)場合もある。つまり、オブジェクトを中心として、そのオブジェクトに「成形しろ」「抽出しろ」と命令するようにプログラムを組む仕組みな訳なんでしょう。

今の理解は、こんなところです。

しかし、実際にプログラミングを重ねないと解らないでしょうね。
posted by n_shimizu at 02:29| Comment(1) | TrackBack(1) | 日記
この記事へのコメント
相変わらず勉強に励んでますね。すごいです。
私は10年以上前、C言語を学んでいるとき「ポインタ」がわからず苦労しました。(よくあるパターンらしいです)「実態がない概念的な定義」というのは理解が難しいですよね。

そして、「ポインタのポインタ」が出てきたり、「配列とポインタの違い」など、さらに苦労の連続でしたが、わかってきたときは本当に面白いですよね。楽しんで学んでください。

…といいつつオブジェクト指向はわかっていな私でした。(^^;
Posted by 田中 洋 at 2006年11月10日 21:29
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/1690073
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック

「オブジェクト」ってなーに?
Excerpt: 「ドリトルについて」シリーズ番外編です。 このブログにも何度かオブジェクト指向が分からんとか、少し分かったとか書いてきました(オブジェクト指向が何となく解ってきた、オブジェクト指向−クラスとオブジェ..
Weblog: 情報科雑感
Tracked: 2009-02-15 00:54