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

削除された内容 追加された内容
Sycgln (会話 | 投稿記録)
編集の要約なし
Sycgln (会話 | 投稿記録)
見出し
1行目:
{{出典の明記|date=2015年12月}}
 
'''クラスベース''' ({{lang-en-short|Class-based}}) は、[[オブジェクト指向プログラミング]](OOP)のスタイルのひとつであり、[[オブジェクト (プログラミング)|オブジェクト]]の生成に[[クラス (コンピュータ)|クラス]]を用いるスタイルを指している。OOPで最もよく用いられている標準的スタイルである。それと対比されるスタイルに[[プロトタイプベース]]があるが、こちらは少数派である。クラスベースOOPでの[[オブジェクト (プログラミング)|オブジェクト]]は、総じて[[クラス (コンピュータ)|クラス]]を実体化した[[インスタンス]]と定義されている。クラスは状態と振る舞いの構成を定めた一種の[[型システム|型]]であり、インスタンス=オブジェクトのひな型や設計図に例えられている。クラスには[[カプセル化]]、[[継承 (プログラミング)|継承]]、[[ポリモーフィズム]]をサポートするメカニズムが備えられているのが普通である。
 
クラスベースOOPは、先発の[[アラン・ケイ]]の[[Smalltalk]]流と、後発の[[ビャーネ・ストロヴストルップ]]の[[C++]]流と[[アラン・ケイ]]の[[Smalltalk]]流で二分されており、また[[静的型付け]]と[[動的型付け]]でも二分されている。C++流は[[抽象データ型]]のスーパーセットを基礎にしており、Smalltalk流は[[メッセージパッシング]]を基礎にしている。おり、C++流は[[静的型付け]]は継承 (プロセス実行後のクミング)|継承]]と動的ディ構成内容が基本的に固定されている仕様であり、パッチを加えた[[動的抽象データ付け]]はプロセス実行後クラ構成内容の変更が前提ーパーセットを基礎されている仕様である。<!--<ref>http://d.hatena.ne.jp/sumim/20040525/p1 を参照</ref>-->
 
クラスベースOOPでの[[オブジェクト (プログラミング)|オブジェクト]]は、総じて[[クラス (コンピュータ)|クラス]]を実体化した[[インスタンス]]と定義されている。クラスは、[[プロパティ (プログラミング)|状態]]と[[メソッド (計算機科学)|振る舞い]]の構成を定めた一種の[[型システム|型]]であり、オブジェクトのひな型や設計図に例えられている。クラスには[[カプセル化]]、[[継承 (プログラミング)|継承]]、[[ポリモーフィズム]]をサポートするメカニズムが備えられているのが普通である。Smalltalkのクラスは、[[メタクラス]]の[[インスタンス]]でもあるので[[オブジェクト (プログラミング)|オブジェクト]]である。C++流の[[クラス (コンピュータ)|クラス]]はただの[[型システム|型]]であり、そのインスタンスがオブジェクトである。
 
C++流のクラスベースは、[[静的型付け]]と[[動的型付け]]で二分されている。[[静的型付け]]はクラスの構成解釈=オブジェクトの型チェックをコンパイル時にする機構であり、[[動的型付け]]はクラスの構成解釈=オブジェクトの型チェックを実行時にする機構である。<!--<ref>http://d.hatena.ne.jp/sumim/20040525/p1 を参照</ref>-->
 
== 脚注 ==