2011-06-29 12 views
0

幾何学的Shape階層のOOPモデルを作成しなければならない場合は、Pointクラスも考慮する必要がありますか?Shapeモデルの正しい階層

ありがとうございました。

+0

Shapesをどのように使用しますか?共通の行動と行動の違いはどのようなものでしょうか? –

+0

2次元形状(円、矩形など)のシステムをモデル化したい3D形状(球など) – xdevel2000

+0

xdevel2000:はい、システムは何ですか? OOモデリングは、あなたが興味を持っている振る舞いによって完全に駆動されるべき活動です.OO設計における現実世界のすべてをモデル化することは不可能で無意味です。君は。このためには、設計しているシステムの目的を決定する必要があります。 –

答えて

0

java.awt.Shapeの使用についてはどうですか?

+0

はい、私は教育目的で作成したい – xdevel2000

0

図形のアイデアを完全にカプセル化したい場合は、宇宙に無限の図形が存在するため、階層型ではありません。代わりに、1つのShapeクラスにする必要があります。一連の線と曲線で構成されていなければなりません。次に、特定の形状定義に準拠しているかどうかを確認するメソッドを持つことができます。 IsCircle(),IsSquare()など

また、特定のタイプのシェイプに設定するメソッドやコンストラクタを使用することもできます。

0

すべてのシェイプはおそらくIShapeインターフェイスを実装できます。 IShapeは、Area()メソッド、およびIsIntersectingWith(IShape otherShape)メソッドを必要とします。この単純化されたビューでは、動的ディスパッチ(三角形/三角形の交点には三角形/セグメントとは異なるアルゴリズムが必要)を実装する方法について他にもいくつか質問があります。

もちろん、この機能が実際に必要であると想定しています。グラフィック指向の形状ライブラリを仮定すると、Rotate,TranslateScaleのような変換を定義することができます。また、UnionIntersect、または他の設定操作を使用することもできます(ただし、これらの2つは必要なすべてを表現できます)。

また、計算幾何学に向けて物を配置し、IShapePolygonに変換するメソッド関数を提供することもできます。

私の指摘は、IShapeで実施できる機能は、予想される使用に従うべきだということです。 (あなたの教育から始まってからの)期待された使用がない場合は、運動そのものの一部として、または発見フィールドとして使用する必要があります(この使用について、または使用すると、この機能すべてを表現することができます1つのインターフェイスで、または複数に分割する必要があります)

関連する問題