Language:

オブジェクト指向言語

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

一般にオブジェクト指向言語は,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 Tree Person は,クラスであり, 各オブジェクト(飛行機,木,人間) はこのクラスから生成しなければならな い.また,上の記述では,「クラスを定義しただけ」であり,通常,全体の実 行を司るプログラムを書かなければならない.その書き方は,各プログラミン グ言語により異なるので,本書では次節以降で Java について説明する.
平成16年4月17日