Next: 13 オブジェクト指向プログラミングの例
Up: ソフトウェア第三 講義資料 クロージャ,スコープ,遅延評価,オブジェクト,立体モデル
Previous: 11.5 クラスの定義例
オブジェクト指向というのは,データを扱う動作の集合がプログラムであると
考えられていたのに対して,動作により操作されるデータの集合がプログラム
であるという新しい見方を提唱したもので,プログラミングパラダイムのひと
つと呼ばれている.
1972年 XEROX PARCにおいてSmalltalkというオブジェクト指向言語が作られた.
1980年には,Smalltalk-80となり,商用のSmalltalk言語となり
(Adele Goldberg and David Robsonらによる Smalltalk-80: The Language
and its Implementationという本がAddison-Wesleyから出版されている).
この言語によってオブジェクト指向プログラミングのパラダイムがより普及す
ることになって,現在のC++,Java言語などに大きな影響を与えることになった.
CommonLispでも,オブジェクト指向プログラミングを行なうために,
CLOS(Common Lisp Object System,「しーろす」 または 「くろす」と読む)
が提案され,AllegroCommonLisp(ACL5.0Lite)には組み込まれている.
オブジェクト指向プログラミングで用いられる概念を定義しておく.
- クラス(class): 同じふるまいをするオブジェクトのグループ.
- インスタンス(instance): あるクラスの性質をもつひとつのオブジェク
ト.具体例.プログラムの実行は,クラスのインスタンスの集合が互いにメッセージを
やりとりすることでなされる.
- メッセージ(message): オブジェクトからオブジェクトへ伝えられる内容.
- メソッド(method): クラスのメッセージを扱うための手段.
- クラス変数(class variable): クラス内で宣言され,そのクラスに属する
すべてのインスタンスにより共有される変数.
- インスタンス変数(instance variable): クラス内で宣言され,そのクラス
のインスタンスを作ると,そのインスタンスごとに記憶領域が用意される変数.
- クラスメソッド(class method): インスタンスではなく,
クラスに対して適用できるメソッド.
- 継承(inheritance): すでに存在しているクラスに基づいて新しい
クラスを定義するための手段.継承する親のクラスをスーパクラスという.ひ
とつのスーパクラスのみ継承できるシステムは単一継承といい,複数の親を継
承できるシステムは多重継承という.
- 委託(delegation): あるオブジェクトに対してメッセージが
送られてきた場合に,そのオブジェクトの構成要素のひとつに対してメッセー
ジを送ること.
- カプセル化(encapsulation): オブジェクトの構成要素を外からダイレ
クトに見えないようにすること.
- 抽象クラス(abstract class):
メソッド名などを統一的に表現しておき,
サブクラスで実際にそのメソッドの中身を定義してゆくための
抽象化されたクラス.
generated through LaTeX2HTML. M.Inaba 平成18年5月7日