まったく同じメソッドと変数を持つ Boat と Mines の 2 つのクラスがあります。
唯一の違いは、異なる位置で初期化されることです。
ボート用
x 位置 = 3 y 位置 = 4
私のために
x 位置 = 1 y 位置 = 1
これには継承を使用しないように具体的に言われました。設計を改善するために他に何が使用できますか
それらの両方にある種のロケーション クラスを与え、そのクラスに X と Y の位置を与え、それを鉱山とボートの両方のプロパティにすることができます。それにもかかわらず、場所クラスのゲッター/セッターが必要になるのは悲しいことです。
オブジェクト指向プログラミングの考え方はまさにこの理由からです。
Boat と Mine はクラスであってはならず、別のクラス (waterStuff と呼びます) から作成された新しいオブジェクトである必要があります。
class waterStuff {
public xPosition;
public yPosition;
}
...次に、コードのどこかでそれらを新しいオブジェクトに設定します。私は Java を使用しないので、できる限り近いものを使用します: (これらは、参照用の名前空間として waterStuff を使用する別のクラス内にある可能性があります)
Boat = new waterStuff;
Mine = new waterStuff;
Boat->xPosition = 3;
Boat->yPosition = 4;
Mine->xPosition = 1;
Mine->yPosition = 1;
もっとJavaに特化できればいいのですが、うまくいけば、これで正しい軌道に乗ることができます。
編集:あなたはCS101を愛していませんか
メンバーの値だけが異なる場合、継承はいずれにせよいくらか無意味に思えます。しかし、関連のない 2 つのクラスを持つことはさらに悪いことです。
このようなものはどうですか?
class SomeClass
{
int xPosition, yPosition;
enum Type
{
Boat, Mine
}
public SomeClass(Type type)
{
if (type == Type.Boat)
{
xPosition = 3;
yPosition = 4;
}
else
{
xPosition = 1;
yPosition = 1;
}
// assign 'type' to a class variable here if required
}
}
以下を使用して構築します。
new SomeClass(SomeClass.Type.Boat)
また:
new SomeClass(SomeClass.Type.Mine)
よりも適切な名前を選択することをお勧めしますSomeClass
。