プログラミング言語論9

プログラミング言語論
第九回
理工学部
情報システム工学科
新田直也
クラス

抽象データ型を直接表現したもの.
関数を構造体の中に入れたものと考えてもよい.
struct List {
int list[LIST_MAX];
int num = 0;
};
void init_list(struct List *lp) {
lp->num = 0;
}
int get_list_num(struct List *lp) {
return lp->num;
}
:
class List {
int list[LIST_MAX];
int num = 0;
void init_list(void) {
num = 0;
}
int get_list_num(void) {
return num;
}
:
}
クラスの定義

クラスは,メンバ変数(フィールド)とメンバ関数
(メソッド)によって構成される.
class List {
int list[LIST_MAX];
int num = 0;
}
void init_list(void) {
num = 0;
}
int get_list_num(void) {
return num;
}
:
メンバ変数
メソッド
クラスの利用



オブジェクト指向ではあるクラスを型とみなしたときの変数を
インスタンス(オブジェクト)と呼ぶ.
インスタンスは利用者側が生成する.
インスタンスのメンバへは”.”でアクセスする.
#include “list.h”
:
struct List l1, l2;
init_list(&l1);
init_list(&l2);
:
class List l1 = new class List();
class List l2 = new class List();
l1.init_list();
l2.init_list();
:
利用者側でListクラスのインスタンスを生成.
カプセル化のまとめ

クラス:
データとその操作をカプセル化したもの.
(モジュール×構造体?)

オブジェクト:
クラスを実体化したもの.クラスを型とみなしたときの変数に
相当.

メンバ変数: クラスが持つ変数.

メソッド: クラスが持つ関数.
オブジェクト指向の考え方

プログラムをオブジェクトの塊と見る.



C言語: プログラムを関数(手続き)の塊と見る.
関数型言語: プログラムを(数学的な)関数の塊と見る.
人工知能型言語: プログラムを知識(論理式)の塊と見る.
オブジェクト
メッセージ
オブジェクトとメッセージ



オブジェクト同士はメッセージで互いに情報をやり取りする.
オブジェクトはお互いに相手の中身を知らない.
オブジェクトの型をクラスという.
クラス