next up previous
: オブジェクト指向言語 Java : オブジェクト指向プログラミング と 並行プログラミング : オブジェクト指向とは

オブジェクト指向言語

オブジェクト指向言語とは,上の「オブジェクト指向」概念に基いたプログラ ミング言語である.つまり,「オブジェクト指向」を基に設計し,コンピュー タ上で実行することを目的に,より人間の思考に近い形で表現することを可能 にした言語といってもよい.現在では様々なオブジェクト指向言語が開発され ているが,各言語では「オブジェクト指向」を独自に拡張している.

一般にオブジェクト指向言語は2 つに分類することができる.

  1. オブジェクトベース
  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
ここで,飛行機$\neq$ Airplane,木$\neq$ Tree, 人間$\neq$ Person であることに注意しよう. Airplane TreePerson は,クラスであり, 各オブジェクト(飛行機,木,人間) はこのクラスから生成しなければならな い.また,上の記述では,「クラスを定義しただけ」であり,通常,全体の実 行を司るプログラムを書かなければならない.その書き方は,各プログラミン グ言語により異なるので,本書では次節以降で Java について説明する.



平成12年8月9日