ホーム>source

2つのタイプのベクトルを(クラスとして)作成したい:

  • 最初のタイプは、2つのコンポーネント(開始点と終了点)を持つ通常のベクトルです。
  • 2番目のタイプもベクターですが、ベクターの代わりに2つの終点 切り替えることができます。

私のアイデアは、抽象スーパークラスを作成することでした(例: AbstractVector )ベクトルの共通機能を定義します:

<前>ウィズウィズ

次に、私の2つのサブクラス abstract class AbstractVector { //Methods, e.g. length(), getter... } および(例) Vector 上記のクラスを拡張します。私が直面している問題は、TriVectorクラスの2つの終点の処理です。 それを行う方法や抽象クラスを正しく設定する方法についてはまったくわかりません。これにより、通常のベクトルと、両端を切り替えて両端を切り替えることができるベクトルを作成できます(たとえば、 TriVector クラスにはメソッド TriVector があります2つの終点を切り替えます)。

誰かが私を助けたり、より良い解決策を提案してくれることを願っています。

switch()
あなたの答え
  • 解決した方法 # 1

    ソリューションの非常に大まかなスケッチ、 getStart() の詳細のみ  そして getEnd()  メソッド:

    <前>ウィズウィズ abstract class AbstractVector { protected Point startPoint; public Point getStart() { return startPoint; } public abstract Point getEnd(); //Methods, e.g. length(), getter... } class Vector extends AbstractVector { protected Point endPoint; public Point getEnd() { return endPoint; } } class TriVector extends AbstractVector { protected Point[] endPoints = new Point[2]; protected int activeEndPoint = 0; public Point getEnd() { return endPoints[activeEndPoint]; } public void switchEnds() { activeEndPoint = 1 - activeEndPoint; } }

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ .net - VueJSは親変数を子から変更します