[653] Re:オブジェクト指向「初」入門
投稿者:CES
2007/02/20 02:13:25
>「円と楕円はどっちがスーパークラスか?」という問題で間違った解を選んで
>しまいそうな気もします。
>数学や論理学の世界では、円は楕円の特殊形ですが、だからといってCircleを
>Ellipseのサブクラスにすることが妥当とは思えません(ただ、メンバが増えている
>からといって、EllipseをCircleのサブクラスにするのが適切とも思えません)。
「真実は人の数だけある」とか、よく言われますよね。
唯一不変の真理なんてものはどこにも無くて、人によって「それをどう見れば都合がいいか」というのが違うわけです(大勢にとって都合がいいことが真理だと勘違いされがちですが…)。
何が言いたいかというと、「円は楕円のサブクラスである」というのは、そうであったほうが都合がいい場合にのみ、真実となるわけです。オブジェクト指向では、よく「正方形は長方形のサブクラスである」という話が問題になりますが、これも同様ですね。
我々の日常でも「リンゴは果物のサブクラスである」というのは一面の真実ですが、唯一の真理ではありません(植物学者には「リンゴはバラ科のサブクラスである」の方が都合がいいでしょうし、スーパーでは「リンゴは商品のサブクラスである」のほうが都合がいいでしょう。これらはどれも真実です)。
客観的な視点などというものは存在しません。
「Circle を Ellipse のサブクラスにすることが妥当と思えない」のはひとつの真実ですが、絶対の真理ではありません。Circle を Ellipse のサブクラスにすることが適切な場合もあります。どちらも正解で、間違いは名探偵のように「真実はいつもひとつ!」だと思うことです。