「クラスベース」の版間の差分

削除された内容 追加された内容
8行目:
 
== 特徴 ==
クラスベースとは、その名の通り[[クラス (コンピュータ)|クラス]]を用いることを中心にした[[オブジェクト指向プログラミング]](OOP)を意味する。クラスは変数と関数をまとめた機能である。同様に変数と関数をまとめた機能である[[モジュール]]とクラスの違いを知ることはOOPを知る上でも重要になる。モジュールとクラスで共通するものに情報隠蔽がある。モジュール内部に隠蔽する変数/関数と、外部に公開する変数/関数を設定することを情報隠蔽と呼ぶ。モジュールでは自身がアクセスするモジュールを明確に直指名するのに対し、クラスではパブリック/パッケージ/派生クラス群といったスコープの定のみに留まる。この[[アクセスコントロール]]の違いモジュールを変数と関数具体的にした構成体と見ているのに対し、クラスを基本的には抽象体として見ていることの表われである。この抽象(''abstraction'')という考え方の有無がモジュールとクラスの分水嶺になっている。
 
抽象化は変数、関数、クラスのいずれもが対象になる。変数の抽象化とは同じクラスにある関数を通して変数を参照/変更することを指し、その徹底のために変数の情報隠蔽が必要になる(A)。OOPの情報隠蔽は変数が主眼なのでデータ隠蔽とも読み替えられる。関数の抽象化は中間参照を通しての呼び出しを指しこれは[[関数ポインタ]]と同義であるが、OOPでは基底抽象クラスと派生実装クラスに分けて抽象クラスに呼び出し用の中間参照を置き、実装クラスに呼び出し先の関数実体を置く。これによって中間参照に、特定の基底クラスからの派生クラスという制約を課して一定の所属基準でまとめることができる(B)。従って関数の抽象化には、基底クラスと派生クラスを連結する構造が必要になる(C)変数を持たず関数の中間参照は抽象関数と言い換えられる。変数を持たずに抽象関数だけをまとめたクラスは、抽象化されたプログラムモジュールの抽象化になる(D)。そのプロシージャ関数でプロセス、セッター関数でデータ変更、ゲッター関数でデータ取得を表現できるからである。この抽象モジュールは基底クラスと同義なので様々な派生クラスを実装できる(E)。上記の(A)と(D)は[[カプセル化]]、(C)と(E)は[[継承 (プログラミング)|継承]]、(B)と(E)は[[多態性]]に相当し、これらはOOPの三大機能などと呼ばれる。クラスの定義は諸説あるが、モジュールのプログラム概念にこの三つの機能を加えて後述のコンストラクタとデストラクタも加えたものが、正式な意味でのクラスである。
 
== 来歴 ==