( eof )
実装側から見る Object Oriented Programming System
- Objectの基本中の基本のシカケを解説します .
- What is Object ? .
- `` Objectとはモノである '' , とはよく謂われる文句です .
それはそれで言い得て妙なのですが , それだけでは説明として成立しません .
それだけでは ユリオカ超特Q 氏 にネタとして使われてしまいます .
- 高位概念側だけから見ていていいのか .
- ある概念 ( system ) は低位概念の集合です .
ならば低位概念についての知識が必要です .
例えば , hardwareの知識なしに 満足な software開発をする事はできません .
- そこで実装側から見てみる .
- re-entrantを御存知でしょうか .
構造化言語においてであれ , あるsub-routine が再突入可能である時 ,
そのsub-routine は re-entrantであると呼ばれます .
実は Objectの実装は re-entrantの実装に似ています .
- Re-entrant機構のシカケは ? .
- 極普通の例ですが , あるsub-routine に local変数 が存在する事を想像して下さい .
local変数の中身を何も考えずに保存するなら ,
そのsub-routine の範囲の特定address のmemory か , 一定のdata section の特定address ,
にそのまま放り込む事になります .
しかし , 変数の中身を stackなり 他のdb なりに保存するとどうなるでしょう .
- Sub-routine自体は何度呼び出されても汚染されない .
- `` data保存用db なり '' を用意すると ,
そのsub-routine の各呼び出し元に特化した各data は
そのsub-routine とは別に保存されるので ,
そのsub-routine は , data領域が溢れない限り , 再利用可能な状態を保つ事が実現されます .
余談ですが , その仕掛けは , OS-9を見ても分かりますが systemの ROM化 にも適しています .
- では objectのシカケは ? .
- 先にも述べた様に , objectは re-entrant構造に似ています .
しかし明確に違うのは , sub-routineの集合体と dataの集合体が setになったモノ ,
がobject ( また , class ) だ , という点です .
- Objectの主役 .
- しかしどちらかと言うと dataの方が主役である , と見る方がいいかも知れません .
そのdata とset になっている隠れたsub-routine の呼び出しが ,
method呼び出しであり , message送信なのです .
- Intelligentな変数 , それがobject .
- 演算機構付きmemory module を御存知でしょうか .
単に RAMとして機能するだけでなく ,
命令を受けると保存済みdata に対して演算を行うhardware です .
それを思い浮かべて貰えれば話が早いです .
Ruby等で ArrayやHash に対して `` 命令 '' を送る事によって
その内容を sortしたりする事もそれと同じ概念です .
- Objectの動作 .
- つまり , objectは , 究極的には event-driven的に動作します .
method ( 言わばsub-routine ) の呼び出しをされる事によって methodが活動し ,
そのmethod が dataの加工を受け持つmethod ならば , 加工をし ,
別の動作を受け持つmethod が呼ばれた時には , 当たり前ですが別の動作をします .
その別のmethod が object内のdata に一切触れないmethod であっても勿論構いません .
- もう一度 , Re-entrant機構 .
- Re-entrantなsub-routine が呼び出し放題である事は前述の通りです .
そして明示すると , objectも同じです .
双方共 , data保存が自動管理される事は同じなのですから .
- 後は宣言するだけ .
- objectを使いたい時には ,
Perl等で変数を宣言するのと同じつもりで newすればそれだけで準備完了です .
ここまで読んだ方ならば , RubyによるOOP はできます .
- Classとobject , どう違う ? .
- 同じ ? .
- 乱暴に言えば , そして , 継承なりを考えなければ , classもobject も実体は同じです .
芸能人が dramaに出演しているとして ,
`` 役としての芸能人 '' がobject , `` 芸能人自体としての本人 '' がclass ,
とでも思って下さい .
- 継承等 .
- 継承等を使えば , 衣装等も含めてのobject を作る事も ,
一人二役の芸能人を作る事も , 簡単です .
OOにおける , 透過性と互換性の両立
- 異なる階層にある各概念の対応について . under construction .
- 意識をラベル ( 単語 , 文 , 概念 ) による動的な多層リンクとすると .
- 意識のアウトソースがもたらす状況 .
- ../ ./
0020040223 till UTC Fri CEy002004m03d05 12:29:48 @562 Written by Seisei Yamaguchi . UTC Sun CEy002004m03d21 14:05:21 @628 Fixed . UTC Sat CEy002004m12d18 09:21:31 @431 Minor update .