クラスベース
表示
クラスベース (英: Class-based) は、オブジェクト指向プログラミング(OOP)のスタイルのひとつであり、オブジェクトの生成にクラスを用いるスタイルを指している。OOPの標準的スタイルである。それと対比されるスタイルにプロトタイプベースがある。
クラスベースOOPは、先発のアラン・ケイのSmalltalk流と、後発のビャーネ・ストロヴストルップのC++流で二分されている。Smalltalk流はメッセージパッシングを基礎にしており、C++流は継承と動的ディスパッチを加えた抽象データ型のスーパーセットを基礎にしている。
クラスベースOOPでのオブジェクトは、総じてクラスを実体化したインスタンスと定義されている。クラスは、状態と振る舞いの構成を定めた一種の型であり、オブジェクトのひな型や設計図に例えられている。クラスにはカプセル化、継承、ポリモーフィズムをサポートするメカニズムが備えられているのが普通である。Smalltalkのクラスは、メタクラスのインスタンスでもあるのでオブジェクトである。C++流のクラスはただの型であり、そのインスタンスがオブジェクトである。
C++流のクラスベースは、静的型付けと動的型付けで二分されている。静的型付けはクラスの構成解釈=オブジェクトの型チェックをコンパイル時にする機構であり、動的型付けはクラスの構成解釈=オブジェクトの型チェックを実行時にする機構である。