|
前
-
コピー
-
次
-
目次
入門・オブジェクト指向オブジェクト指向というのは最近の流行り言葉である.なんでも 「オブジェクト指向〜」というとなにか恰好良く聞こえるから不思 議だ.rubyもオブジェクト指向スクリプト言語などという肩書を持っ ている.じゃあ,そもそもオブジェクト指向ってなんだろう? どうも,この辺の定義の話をはじめるとちょっと詳しい人達の間で も結構議論が起きたりするので,もしかしたら,みんなそれぞれちょっ とずつ定義が違うのかもしれない.けれど,それじゃ説明にならな いので,ちょっと大胆に定義してみよう.「オブジェクト指向」と いうのは結局はものの見方の問題で(こういうのをパラダイムと呼 ぶ人もいる),簡単に言うと モノを中心に考える見方 である.モノだから英語でObjectと呼ぶわけだ.これだけだとなん だか良く分からないので,昔ながらの見方と比較してみよう. コンピュータの世界で昔ながらの見方では,システムが解決すべき 問題問題を「データ」とそれに対する「手続き」としてとらえてき た歴史がある(ようだ).データは変数とか,配列とか構造体とかい うような入れ物に入っていて,それを手続き(関数と呼ぶ場合もあ る)に渡すと,計算結果が別の入れ物に入って出て来ることになる. 正しいデータと手続きの組合せはユーザが保証してあげないといけ ない. 例えば,給与データ(の入れ物)を給与計算という手続きに渡すと僕 の今月の給料の額が結果として出て来る,という感じだ.プログラ ムっぽい表現をしてみよう. 今月の給料 = 給与計算(松本の給与データ) 僕の今月の給料を計算するのに,間違って部長の給与データを給与 計算の手続きにかけると僕の給料は増えることになる(が,きっと 後で誰かが怒られる). 一方,オブジェクト指向では問題をモノとその相互作用としてとら える.例えばさっきの給料の例だと,給与台帳というモノが基本給 のデータを管理している.オブジェクト指向におけるモノはただの データと違って,インテリジェントなので,いろいろと質問できる. 僕の今月の給料を知りたい時には,給与台帳オブジェクトに対して, 「松本の今月の給料はいくらだ?」と質問することになる.すると 給与台帳オブジェクトは内部のデータから僕の給料を計算して,答 えてくれる.こんな感じだ. 今月の給料 = 給与台帳.給料(今月, '松本') このやり方だと,将来給料の計算方法(データの構造とか持ち方と か,松本の契約形態とか)が変わっても,「給与台帳オブジェクト に質問する」という基本的な部分に変更は無い. なんか分かったような,分からないような説明だが,パラダイムな どという目に見えないものの説明はそういうものかもしれない. とにかく,こういう「モノ中心の考え方」にはいくつかメリットが ある.
ただし,これらのメリットはいつでも成立するわけではない.まあ, 上手にやれば,という前提があるのはいつものことだ.オブジェク ト指向は魔法の薬ではないので,下手に使えば苦労が増えることだっ て当然ある.実際,苦労している人は,僕自身を含めて結構多い気 がする. さて,オブジェクト指向一般に関する説明はここまでだ.これ以上 の説明はたくさん出ている専門の本を参照して欲しい.本当はここ で良い本を紹介したいのだが,あいにく適当な本が思い付かない. なんでもそうなのかもしれないけど,オブジェクト指向に関する本 で,正確な本は難しいし,やさしい本は時々嘘や不適切なことが書 いてある.困ったものだ. 愚痴はこれくらいにして,本題に戻ろう.rubyは「オブジェクト指 向スクリプト言語」という肩書があるだけに,オブジェクト指向に 基づいてプログラムするのに便利な機能をいくつか備えている.今 後しばらくそれらを紹介することにしよう. 前 - コピー - 次 - 目次 |