bonotakeの日記

元・ソフトウェア工学系研究者、今・AI系エンジニア

問題:クラスと包含関係

例えば、fooという機能を持つ商品群Aがあったとします。

んで、Aという商品の中でも、更にbarという機能を付け足した商品群はBと呼ばれています。

Bという商品群は、Aという商品群に含まれるので、B ⊂ A って感じがしますよね。

しかし、仮にこのAとBをオブジェクト指向で表現してみると、

class A {
 foo();
}
class B extends A {
 bar();
}

こんな感じに書けてしまいそう。つまり、

Aの持つ機能(メソッド) ... foo()
Bの持つ機能(メソッド) ... foo(), bar()

なので、メソッドのあるなしで考えると、A ⊂ B な感じがします。

はてさて、どっちが正しいでしょう?



[追記] 書いた後で思ったんですがこの話、オブジェクト指向で矢印の向きがどっちかわからん、という議論に似てるかなーと思ったり。(参考:google:継承 矢印 向き
"⊂" を"→"と読み替えてみましょう。

注:bonotakeは、amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、 Amazonアソシエイト・プログラムの参加者です。