1

試験用のクラスとコースワーク用のクラスがあり、どちらもコースワード/試験 ID、名前、締め切り、体重などの同じ属性を必要とするとします。

以下で行ったように、両方が同じメソッドを実装するようにインターフェイスを作成するのが賢明でしょうか? [ ここに画像の説明を入力][ 最適な OO アプローチを探していますが、少しやり過ぎているかどうかはわかりません。

ありがとうございました

4

1 に答える 1

1

ClassWork と ClassExam が継承するクラス Class を作成するのが最善の方法だと思います。

親クラスの ClassF はこれらの一般的な属性を宣言し、他の 2 つのサブクラスはそれらを一意にする特定の属性を宣言するだけで済みます。一般的な属性は継承によって暗示されるためです。

例を挙げて説明します。

       ClassF -> attributes: name, ID, weight, Date
              -> methods: getName() ....

             Exam -> attributes: marks 
                  -> methods: calculateMarks()...

             CourseWork -> attributes: typeOfCourse
                        -> methods: printInfoCourse()...

サブクラスの Exam と CourseWork は、たとえば ClassF の ID を実装して使用できます。これは、親クラスから継承されているためです。

ClassF のインスタンス化を許可するかどうかを決定することをお勧めします。その場合、ClassF を抽象クラスに変換するのが興味深いからです。


この具体的なケースの記録として、これらのクラスを実装するためにインターフェイスを使用することは、インターフェイスの機能ではないため、間違ったアプローチです ( https://docs.oracle.com/javase/tutorial/java/concepts/interface詳細については.htmlを参照してください)

それが役に立てば幸い!

于 2016-02-11T20:23:16.547 に答える