1

boolean isCellEmpty()抽象化の各レベルで同じ関数を含む新しいクラスを設計します。Matrixクラス階層の一番下にクラスがあります。一番上にGraphMainWindowクラスがあります。

どこでチェックを行う必要がありますか (例if (i >= 0, i < xCellsCount, j >= 0など...)?

4

3 に答える 3

1

つまり、一言で言えば、次のクラス図があります。

Matrix        ( a
   ^            ^
   |            |
  ...           b means : b inherits a)
   ^
   |

GraphMainWindow

isCellEmpty基本クラスとすべての継承されたクラスにあるメソッドがあります。isCellEmptyチェックを行うために使用するデータのデータ構造が Matrixクラス以降変更されていない場合Matrixは、最も一般的なクラスでチェックを行います。

データ構造を変更した場合は、データ構造Matrixを変更したクラスにテストを実装する必要があります。

よろしく

于 2012-04-22T16:18:15.040 に答える
1

簡単な答えは、可能な限り最も一般的なレベルです。これらの変数を宣言する最初の継承可能なクラスは、チェックを実行する必要があります。それ以下のものは、オーバーライドされた機能が必要でない限り、スーパークラスに従う必要があります。チェックに使用するために選択したクラスから継承階層をさらに上にあるクラスでは、チェックを処理するメソッドは、オーバーライドされたバージョンを実装していないサブクラスに、デフォルトの (そしておそらく役に立たない) 動作を取得していることを通知する必要があります。 . そのような場合、私はしばしば例外を発生させます。

于 2012-04-22T16:12:51.067 に答える
1

良い質問です。自分で何度も疑問に思いました。答え: 最低レベルです。このようにして、エラーが検出されずにスリップすることはありません。アルゴリズム プロセスが意味を成す上位レベルでもエラーをチェックできますが、最下位レベルが最も重要です。

これにはいくつかの例外があります。たとえば、アプリケーションを保持するメッセージを介してエラーが報告され、最下位レベルで多くのエラーが発生することが予想される場合です。しかし、これらはそれほど一般的ではなく、邪魔になると感じた場合は上記のルールを曲げることができます.

于 2012-04-22T16:13:11.690 に答える