ホーム > InfoComアイ1997 > 汎用プログラミング言語としてのJavaの現状と将来
InfoComアイ

オブジェクト指向(OO)プログラミングとは

OOの概説は他に委ね、ここではOOプログラムのイメージを示す。

 従来のプログラムは、いろいろのデータに対して一連の処理を行う。これに対してOOでは、複数のオブジェクト間でメッセージ(依頼・問い合わせ等)をやりとりして一連の処理を行う。オブジェクトは日本語では「もの(物、者)」である。オブジェクトは固有のデータと固有の振る舞い・機能を有する一つのまとまりであり、実世界のオブジェクトに良く対応する。ドラマで出演者(オブジェクト)が演技や会話(メッセージ送信)をしながら、物語(プログラム)が進行するアナロジーが分かり易い。

 同類のオブジェクトはクラスとして抽象化される。クラスには固有のデータ構造とクラスに属するオブジェクトの振る舞い・機能が定義されている。この振る舞い・機能は複数のmethodとして実現される。methodはCなどのfunctionに対応する物である。プログラムはクラスからオブジェクトを生成する。個々のオブジェクトはクラスで定義されたデータ構造を持ち、クラスで定義されたmethodを使用する。

 オブジェクトaがオブジェクトstackにメッセージ(依頼/問い合わせ): pop()を送る場合を考える。stackではメッセージpop()を受けると同名のmethod: pop()が実行される。メッセージとmethodを区別するのは、同じメッセージでも受け取り側のオブジェクトの種別(クラス)によって別のmethodが実行されるためである。(例えば同じ起動メッセージを受けても、車ならエンジン起動のmethod、パソコンなら電源投入のmethodが実行される。)

Javaプログラムのイメージ:(クラスAのmethod: mの一部)


Stack stack = new Stack(); //クラスStackのオブジェクトstackの生成


data = stack.pop(); //stackからデータを取り出しdataに代入

file.write(data); //dataをfileに書き込み


data = stack.pop()ヘOO的に読めば、「クラスAのオブジェクトaはオブジェクトstackにメッセージpop()を送る。stackではクラスStackのmethod: pop()を実行し、その結果をオブジェクトaに返す。aは結果をdataに代入する。」となる。

 Javaのプログラムコードは見かけ上Cとほとんど同じである。クラスとして束ねられ、そのなかが更にmethodとして束ねられる。method中にはオブジェクトの定義やメッセージ送信等が有る。その間にCと同じく算術式や条件文が散在する。

▲このページのトップへ
InfoComニューズレター
Copyright© 情報通信総合研究所. 当サイト内に掲載されたすべての内容について、無断転載、複製、複写、盗用を禁じます。
InfoComニューズレターを書籍・雑誌等でご紹介いただく場合は、あらかじめ編集室へご連絡ください。