0

このようなことを知らない人のために。これは基本的に、私がここでいじっている3Dベクトル関係です...

私は有用な電磁気計算を行うための小さなプロジェクトを作成していますが、将来の使用や他のアプリケーションに備えてそれを設計する方法もわかりません。

最終的には、いくつかのグラフ出力を作成してGUIを作成しますが、現時点では、ターミナルベースのプログラムにしたいだけです。

現時点では、というクラスを考えています

RadialForm 

これはID用であり、そのクラスのコンポーネント形式には何もありません。次に、別のクラスを作成します

ComponentForm

これは、主なメソッドがである座標を変換するためのすべての計算を実行します

setRectangular(i j k)
setCylindrical(i j k) 
setSpherical(i j k)
computeCurl(i j k) //not sure if these last two should be in another class so I gave them arguments 
computeDiv(i j k)

その後、RadialFromクラスとComponentFormクラスでGaussのStokes and Greens理論を使用できるようにしたいと思うので、これも別のクラスである必要があると思います。ある種の継承構造が起こっているはずだと私は考えていますが、何がどこに行くのかを決めるのは本当に自信がありません。

また、両方のクラスは「発散」演算子で操作され、アイデンティティからカールと結果を取得し、他の多くの重要なことを実行します。

4

1 に答える 1

1

ここでのキーワードは分解です。すべてを1つ(またはあなたの場合は2つだけ)のクラスに入れようとしないでください。すべての個別の機能を個別のクラスに入れます。これは、ベクトル (ポイント) と、おそらくすべてのアルゴリズムに個別のクラスが必要であることを意味します。設計をより再利用可能にするために、同様のタスク (アルゴリズムなど) 用のインターフェイスを導入することを検討してください。

OOP は、ドメイン エリア オブジェクトとそれらの関係のモデル化にも優れています。そのため、必要なドメインのすべてのオブジェクトを伏せてみてください。ただし、(特に科学プログラムでは) 場合によっては、既存の操作だけで追加のクラスが必要になる場合があることに注意してください。ここにあなたのComponentForm良い例があります。

継承に関しては、一般的なルールは次のとおりです。よくわからない場合は使用しないでください。ほとんどの場合、(必要に応じて) インターフェイスまたは委任を使用することをお勧めします。

于 2012-07-23T15:11:24.627 に答える