7

2つのクラスがLineあり、PointLineが次のようにクラスPointを使用するとします。

public class Point {
   private int x;
   private int y;

   public Point(int x, int y) {
      this.x = x;
      this.y = y;
   }
}

public Class Line
{
   private Point start;
   private Point end;
   ...
}

OOPの原則により、以下のコンストラクターのどれがクラスLineに適しているのか疑問に思いました。

public Line(Point start, Point end)
{
   this.start = start;
   this.end = end;
}

また

public Line(int startX, int startY, int endX, int endY)
{
   start = new Point(startX, startY);
   end = new Point(endX, endY);
}
4

3 に答える 3

10

間違いなく最初のもの。それはより高いレベルであり、意図はより明確であり、より簡潔であり、Pointクラスへの変更に関してより保守可能です。

于 2012-10-26T10:45:53.437 に答える
2

Pointsコンストラクターに余分な作業を1つ残すよりも、のインスタンスを作成してからコンストラクターに渡す方が良いと思います。

したがって、最初のものを使用する必要があります。そうすれば、コンストラクターは、それ自体を作成するのではなく、渡された参照で参照を初期化するだけで済みます。

于 2012-10-26T10:47:08.820 に答える
0

両方を使用できますが、コンポジションの関連付けが必要な場合は、2 番目のみを使用してください。

于 2012-10-26T10:48:42.137 に答える