「サブクラス (計算機科学)」の版間の差分

削除された内容 追加された内容
Addbot (会話 | 投稿記録)
m ボット: 言語間リンク 3 件をウィキデータ上の d:q1366323 に転記
独立記事としての意義が感じられないため、タグを付加。
1行目:
{{複数の問題
[[オブジェクト指向プログラミング]]において '''サブクラス'''とはその[[スーパークラス (計算機科学)|スーパークラス]]のいくつかのプロパティを[[継承 (プログラミング)|継承]]する[[クラス (コンピュータ)|クラス]]のことである。
|正確性=2017年10月
|独自研究=2017年10月
|特筆性=2017年10月
}}
<!-- 翻訳元の記事":en:Subclass (computer science)"は":en:Inheritance (object-oriented programming)"に統合されたらしい。リダイレクトになっている。 -->
[[オブジェクト指向プログラミング]]において '''サブクラス''' ({{lang-en-short|subclass}}) とはその、上位階層に位置する[[クラス (コンピュータ)|クラス]]([[スーパークラス (計算機科学)|スーパークラス]]のいくつかのプロパティ(特性)を[[継承 (プログラミング)|継承]]する下位[[クラス (コンピュータ)|クラス]]のことである。
 
プログラマは普通、そのクラスをスーパークラスの「一種」であるものとして、例えば「[[マンクス]]は猫の一種である」または「正方形は長方形の一種である」などとして、サブクラスのことを考える。
 
* '''猫'''には毛が生えており、四本の脚と尻尾がある
** '''マンクス猫'''は尻尾を持たないが、上記にあるほか全ての特徴を持っている<!-- HACK: 継承関係の説明として、たとえが悪すぎるように思われる。かえって混乱を招く。尻尾の有無を示すboolプロパティの既定値が変わる、と説明するならば話は別だが…… -->
* '''長方形'''は長さが''w''と''h''の四つの辺を持つ。
** '''正方形'''は長方形の特徴すべてを持ち、加えて ''w'' = ''h'' である<!-- HACK: 楕円と円の関係もそうだが、実用的な観点からいうと、これもたとえとして微妙。 -->
 
このように、サブクラスはスーパークラスのより具体的な種類となる。サブクラスは、たとえ数種の猫は尻尾を持たなくても、猫の状態はすべての猫について一般的に当てはまることに関しての事実となる。またすべての長方形は四つの辺を持つが、正方形はすべての辺の長さが同一であるというより限られた特徴を持つ。
 
サブクラス-スーパークラス間の関係を、クラス-[[インスタンス]]間の関係と混同しないこと。「猫のインスタンス」は「ある特定の猫」の実体を参照する。ここで述べているマンクス猫はいまだに依然としてクラス(設計図)である。つまり、マンクス猫の多くのインスタンスが存在しうる。もし特定の猫(猫クラスのインスタンス)が偶然狐によって食いちぎられた尻尾を噛みつかれ持っていならばとしても、猫クラスは変わらないだろうまさに変わるのはその特定の猫が変わるだけである。
 
サブクラスとスーパークラスはしばしば、[[C++]]開発者[[ビャーネ・ストロヴストルップ]]によって作られた造語として、それぞれ'''派生''' (''{{lang|en|derived}}'') クラス、'''基底''' (''{{lang|en|base}}'') クラスと呼ばれる。彼は伝統的命名法よりもより直感でこれらの造語を見いだした<ref>[[ビャーネ・ストロヴストルップ|Stroustrup, Bjarne]]. ''The Design and Evolution of C++''. Addison-Wesley. Reading, Mass. 1994. ISBN 0-201-54330-3. Page 49</ref>
 
== 語源 ==
サブクラスは[[集合論]]でいうところの、[[部分集合]] (subset) を語源に持つ。
 
== 脚注 ==
21 ⟶ 27行目:
 
== 関連項目 ==
* [[オブジェクト指向プログラミング]]
[[オブジェクト指向プログラミング]]に関してのクラスの概念のより掘り下げた説明は、[[クラス (コンピュータ)]]を見よ。特に、そのページの[[クラス (コンピュータ)#サブクラスとスーパークラス|サブクラスとスーパークラス]]を見よ。
* [[クラス (コンピュータ)]]
 
** [[クラス (コンピュータ)#サブクラスとスーパークラス]]
* [[スーパークラス (計算機科学)]]
* [[派生型]]
* [[継承 (プログラミング)|継承]]
* [[実装継承]]
* [[継承セマンティクス]]
* [[仮想継承]]
* [[部分集合]]
 
[[Category:オブジェクト指向|さふくらす]]