Hallo,
ich arbeite momentan an einem kleinen Spiel (geht in die Richtung "Harvest Moon", eine Farmsimulation, falls das jemandem etwas sagt) und stehe hier vor zwei Designproblemen.
1.) Ich habe eine Superklasse Item, unter der alle Klassen zusammengefasst sind, mit denen man Kauf- und Verkaufaktionen durchführen kann (z.B. Kartoffel oder Huhn). Jede Subklasse hat einen ihr eigenen Einkaufs- und Verkaufspreis. Von der Superklasse erben sie get-Methoden, damit man auf diese Werte zugreifen kann. Mir erschien es logisch, die Variablen für Einkaufs-/Verkaufspreis sowie die get-Methoden als static zu markieren, weil ich ja z.B. den Kaufpreis einer Kartoffel auch dann erfahren können möchte, wenn keine Instanz von Kartoffel existiert. Das führt aber dazu, dass ich diese Methoden nicht mehr dynamisch aufrufen kann, z.B. bei meiner Methode buyItem():
Gebe ich hier eine Kartoffel rein, soll mit i.getPriceWhenBought der Preis der Kartoffel erfragt werden. Mache ich es aber statisch, müsste ich Item.getPriceWhenBought() schreiben und dann funktioniert das ganze nicht mehr. Ich bräuchte also mindestens eine Instanz einer Kartoffel, die ich immer nach ihrem Preis fragen kann, eine "Samplekartoffel", die im Laden rumliegt und nie verkauft wird. Das scheint mir aber kein besonders guter Stil zu sein.
2.) Das zweite Problem knüpft an das erste an: Wenn die Kartoffel nun gekauft wird, soll eine neue Instanz von Kartoffel erzeugt werden. Dies soll ebenfalls dynamisch geschehen: Wenn ich in buyItem(Item i) statt der Kartoffel ein Huhn reingebe, soll der Preis des Huhns nachgeschaut und ein Huhn erzeugt werden. Wie aber gestalte ich das?
Ich hoffe, dass ich meine Schwierigkeiten verständlich erklärt habe und mir jemand helfen kann.
Grüße
Haave
ich arbeite momentan an einem kleinen Spiel (geht in die Richtung "Harvest Moon", eine Farmsimulation, falls das jemandem etwas sagt) und stehe hier vor zwei Designproblemen.
1.) Ich habe eine Superklasse Item, unter der alle Klassen zusammengefasst sind, mit denen man Kauf- und Verkaufaktionen durchführen kann (z.B. Kartoffel oder Huhn). Jede Subklasse hat einen ihr eigenen Einkaufs- und Verkaufspreis. Von der Superklasse erben sie get-Methoden, damit man auf diese Werte zugreifen kann. Mir erschien es logisch, die Variablen für Einkaufs-/Verkaufspreis sowie die get-Methoden als static zu markieren, weil ich ja z.B. den Kaufpreis einer Kartoffel auch dann erfahren können möchte, wenn keine Instanz von Kartoffel existiert. Das führt aber dazu, dass ich diese Methoden nicht mehr dynamisch aufrufen kann, z.B. bei meiner Methode buyItem():
Java:
public void buyItem(Item i) {
int priceOfItem = i.getPriceWhenBought();
if(priceOfItem < money) { //money ist das Budget des Helden
money = money-priceOfItem;
/*
* Hier soll das zum Parameter i zugehörige Objekt erzeugt werden.
*/
}
}
2.) Das zweite Problem knüpft an das erste an: Wenn die Kartoffel nun gekauft wird, soll eine neue Instanz von Kartoffel erzeugt werden. Dies soll ebenfalls dynamisch geschehen: Wenn ich in buyItem(Item i) statt der Kartoffel ein Huhn reingebe, soll der Preis des Huhns nachgeschaut und ein Huhn erzeugt werden. Wie aber gestalte ich das?
Ich hoffe, dass ich meine Schwierigkeiten verständlich erklärt habe und mir jemand helfen kann.
Grüße
Haave