オブジェクト指向言語とは,上の「オブジェクト指向」概念に基いたプログラ
ミング言語である.つまり,「オブジェクト指向」を基に設計し,コンピュー
タ上で実行することを目的に,より人間の思考に近い形で表現することを可能
にした言語といってもよい.現在では様々なオブジェクト指向言語が開発され
ているが,各言語では「オブジェクト指向」を独自に拡張している.
一般にオブジェクト指向言語は,2 つに分類することができる.
- オブジェクトベース
- クラスベース
1.オブジェクトベース言語では,オブジェクトを直接的に定義する言語である. より元来のオブジェクト指向に近いと考えてよい.オブジェクト指向言語 Self などがある. また,「プロトタイプベース」ということもある. 2. クラスベース言語は,オブジェクトの雛形として クラス(class)を定
義し,各オブジェクトはクラスからの インスタンシエーション (instantiation,実体化という)により,動的に生成する.これにより同じ性 質をもった複数のオブジェクトを生成することができる.最初に提案された Smalltalk-80 がこの「クラスベース」であったため,クラスがオブジェクト指向の典型的な要素となったが,必ずしもクラスを含む必要はない.
現在では,代表的なオブジェクト指向として Java があり,「クラスベース」
であるので本書では,クラスベースについて説明しよう(Java によるプログラ
ミングは次節以降).
では,仮想的なクラスベース言語で,
上の物理現象を表現する.ここで,各クラスは class-名前-本体-
end の本体の部分に定義し,状態は state,
メソッドは method-名前-引数-本体- end と定義するものとする.
class Airplane
state
速度,色など飛行機を表現する状態.
method 色を教えてください. is
return 色 end
method 速度を教えてください. is
return 速度 end
method 飛べ. is
飛行機が離陸し,飛行速度が定常状態で飛行.
send 風. to 木 end
end
class Tree
state
揺れているか揺れていないかの状態.
method 風. is
木を揺らす end
method 風なし. is
木を揺らさない end
method 状態を教えてください. is
return 状態 end
end
class Person
method 見る. is
色 :=send 色を教えてください. to 飛行機.
速度 :=send 速度を教えてください. to 飛行機.
木の状態 :=send 状態を教えてください. to 木.
色,速度,木の状態を表示する end
end
ここで,飛行機
Airplane,木
Tree,
人間
Person であることに注意しよう.
Airplane, Tree と Person は,クラスであり,
各オブジェクト(飛行機,木,人間) はこのクラスから生成しなければならな
い.また,上の記述では,「クラスを定義しただけ」であり,通常,全体の実
行を司るプログラムを書かなければならない.その書き方は,各プログラミン
グ言語により異なるので,本書では次節以降で Java について説明する.
平成16年4月17日