0

C++ 多くの派生クラスを持つ 1 つの抽象クラスを作成する必要がありますか?それとも 1 つの一般クラスだけを作成する必要がありますか?

古典的な例は、特定のジオメトリと関数を保持する派生クラス Square と Triangle を持つ抽象 Shape オブジェクトです。

正方形または三角形の動的な量のポイントを保持する、より一般的なジオメトリ データ メンバーを含む、Shape という名前の一般的なクラスを 1 つだけ作成してみませんか? 関数は、形状のタイプを示すパラメータを取ることができます。Square.process(); のようなものの代わりに

私の質問は明確ですか?これは純粋にスタイル上の選択ですか?

4

3 に答える 3

1

たくさんのことを行う「神」クラスを作成することは避けるべきです。多くの形状を実装する必要がある場合はどうなりますか? クラスは、責任を 1 つだけ持つ必要があり、拡張用にオープンで、変更用にクローズする必要があります。クラスの設計原則または SOLID の設計原則を確認してください。複雑な設計や、複数の責任を持つ大きなクラスは避けてください。一時的にそれらを維持したり、機能を追加したりするのが面倒になるからです。単体テストも、優れた設計でより簡単に実行できます。

于 2013-08-14T21:05:52.310 に答える
0

この種の質問には一般的に答えを得ることができません。解決しようとしている問題の状況と要件によって異なります。場合によっては、派生クラスとのインターフェイスを持つことが理にかなっています。それ以外の場合は、一般化されたクラスを持つことが理にかなっています。問題の要件を知らなければ、本当の答えは得られません。

于 2013-08-14T20:57:09.523 に答える
-1

それは本当に必要なものに依存しますShape。たとえば、単に描画している場合は、Shapeポイントからポイントへの線を描画するだけの一般的なクラスが最適です (とにかくポリゴンの場合)。しかし、面積を計算したい場合はどうでしょうか。関数が適切な面積式を使用するSquareandTriangleクラスを持つ方がおそらく簡単でしょう。getArea()厳格なルールはありません。単に必要なものに依存します

于 2013-08-14T20:38:36.183 に答える