Kreis-Ellipse-Prablem-Wikipedia

before-content-x4

地区端端の問題 継承関係のモデリングに関連して、オブジェクト指向プログラミングの領域から繰り返し議論された問題です。一方では aです 明らかに楕円のサブタイプであることを示唆する楕円です。一方、楕円に役立つ可能性のある2つのハーフ車軸の長さのその後の独立した変化のサポートは、リスコビアの代替原理に関連して議論されることが多い円の問題につながります。

after-content-x4

類似のケースは、正方形と長方形の関係です。

グラフィックソフトウェアを実装するための典型的なクラスの階層では、基本クラスは グラフィック要素 – 他のサブクラスの中でも – クラス 楕円 導き出され、クラスを順番に 。基本クラスにはすでにメソッドがあります 描く これは、画面上のそれぞれのグラフィック要素を表します。今では、方法が非常に考えられています スカリー スカリー クラスで 楕円 導入されて、ユーザーにハーフ軸のその後の適応を可能にします。 楕円の専門化として、これらの方法は継承します。ただし、適応後の円は、2つの半軸のうちの1つだけが円ではありません。このジレンマから抜け出す方法の1つは、ハーフアクスルの1つを適応したときに他のジレンマを自動的に調整することです。しかし、これはクラスのオブジェクト以来、リスコフシェ代替原則の違反になるでしょう もう1つとして動作することはありません 楕円 期待するでしょう。

この問題の以下の解決策については、主に説明します。

  • サイズ調整の誤った仕様 :すでに楕円のレベルでは、メソッド呼び出しがサイズを変更するために呼び出されると、操作が可能であり、たとえば返品値を使用して識別されることが計画されています。これらおよび同様の是正措置の問題は、何よりも、このような予防措置を基本クラスのレベルで導入しなければならないことです。一般化された方法では、このソリューションバリアントでは、基本クラスの開発者がこのケースを予測する必要がありますが、通常、ベースクラスの開発者はクラスのすべてのアプリケーションも専門クラスの開発者と連絡を取っていないため、特定の問題を知っていることさえありません。
  • 継承方向の交換 :このバリアントは、Adele Goldbergによって開発された初期のクラスライブラリに原則的に実装され、正方形の専門化として長方形がそこに実装されました。理由は、長方形が新しいプロパティを反対側の長さである正方形に追加するということでした。この実装によって、「長方形は正方形である」という声明は数学的にはばかげていると批判されています。 [初め]
  • 専門化の確立 ために :代わりに、in 楕円 追加の方法 孤立した円 計画されています。このバリアントの欠点は、それに固有で楕円に適用されない円の特性(たとえば、半径)にクラスのインターフェイスに対応できないことです。利点は、その後のスケーリングを介して円形化される楕円は、建設以来の等しい足場にセットアップできることです。
  • 相続関係を避けてください :2つのクラスのいずれも他のクラスから継承されませんが、両方の相続人は共通の基本クラスに等しくなります。一般的な基本クラスとしての一般クラスの場合 グラフィック要素 使用されると、これには共通の機能があるという不利な点があります 楕円 2回実装する必要があります。つまり、冗長です。この冗長性を減らすために、言語がこのようなものをサポートする場合、ミックスインを使用できます。

特定のアプリケーションに関係なく決定することはできません の専門化として 楕円 適切かどうか。基本的に、それは、サイズがインスタンス化された後、楕円が適応可能であるべきかどうかに依存します。

  • チャールズ・F・ボウマン: 教祖の知恵:オブジェクトテクノロジーのビジョン 。 Cambridge University Press、1996、ISBN 0-13-499849-9
  1. B.マイヤー: 相続の多くの顔:分類法の分類法 。 In:IEEE Computer、Vol。29、Page 105–108、1996。

after-content-x4