実装側から見る 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 . 

( eof )