Hallöchen liebe Community,
wir haben im letzten Semester Java gelernt und mir sind seitdem einige Fragen
offen geblieben. In den Semesterferien habe ich mich jetzt ziemlich intensiv mit
Java beschäftigt (ob das jetzt sehr produktiv war.. darüber lässt sich streiten :bae: ).
Um das Gelernte umzusetzen, wollte ich mich an einem kleinem Spielchen versuchen.
Allerdings glaube ich, dass ich mich ziemlich bescheuert dabei anstelle und würde gerne
mal Rat von erfahrenen Java-Programmierern hören ;-)
Spielidee (einen kleinen Siederclone - nur einen kleinen Simulator):
Paketstruktur:
src:
Wir haben einiges mit OOP bereits gemacht und wollte möglichst viel mit Generics und Codewiederverwendung umsetzen. (allerdings bin ich ziemlich verwirrt).
Ich habe jetzt häufiger gelesen, dass Getter-und Setter nicht so häufig verwendet werden
sollen usw. Zwischenzeitlich habe ich für jeden Rohstoff ein Singleton erstellt, den ich mit
getinstance() verändert habe. (eigentlich Quatsch, weil das Entwurfsmuster eher für GUI verwendet wird? Oder nicht?) - Wie würde man geschickt vorgehen?
Beispiel:
(meine Versuche)
1. Wenn ein Button in der GUI gedrückt wird, wird ein neues Rohstoff-Holz-Object erstellt und dann
das neue mit dem alten addiert. (altes Holz Objekt(Menge) + neues Holz Object(Menge)
2. Wenn ein Button gedrückt wird, wird getInstance() aufgerufen, wenn das Objekt noch nicht
besteht, wird eins erzeugt. Wenn bereits eins vorhanden ist, wird die Holzmenge dazuaddiert.
3. Wenn ein Button gedrückt wird, einfach den Setter von dem Holzobjekt aufrufen und den alten
Wert mit dem neuen Wert addieren.
4. ...
So habe ich es momentan gemacht:
Resources.java
Hier ein kleines Testbild ;-)
Directupload.net - 7mqeqi62.png
Würde man jedes mal, wenn die Holzanzahl sich verändert den Konstruktor vom Holz aufrufen?
Oder das Objekt verändern? Ich hatte vor, ein Lager von Typ T anzulegen, in das man
dann nur Rohstoffe vom Typ Rohstoffe mit dem Untertyp Holz,Stein einlegen kann.
Und dann ein Lager wo man nur Truppen vom Typ Bogenschützen usw einlagern kann.
Was wäre ein guter Programmierstil? Ich hoffe ihr könnt mir Tipps und Tricks geben. Hab einige Javabücher in der Unibibliothek durchgeackert.. aber irgendwie würde ich das gerne an meinem Beispiel lernen :toll:
Vielen Dank an alle, die sich das durchgelesen haben
Gruß
Leo
wir haben im letzten Semester Java gelernt und mir sind seitdem einige Fragen
offen geblieben. In den Semesterferien habe ich mich jetzt ziemlich intensiv mit
Java beschäftigt (ob das jetzt sehr produktiv war.. darüber lässt sich streiten :bae: ).
Um das Gelernte umzusetzen, wollte ich mich an einem kleinem Spielchen versuchen.
Allerdings glaube ich, dass ich mich ziemlich bescheuert dabei anstelle und würde gerne
mal Rat von erfahrenen Java-Programmierern hören ;-)
Spielidee (einen kleinen Siederclone - nur einen kleinen Simulator):
Paketstruktur:
src:
- lager (Lager.java)
- resources (Resources.java,Rohstoffe.java,Truppen.java)
- rohstoffe (Stein.java,Holz.java....)
- truppen (Speerkämpfer.java,Axtkämpfer.java.....)
- gui (Hauptprogramm.java, Gui_Rohstoffe.java, Gui_Truppen.java....)
Wir haben einiges mit OOP bereits gemacht und wollte möglichst viel mit Generics und Codewiederverwendung umsetzen. (allerdings bin ich ziemlich verwirrt).
Ich habe jetzt häufiger gelesen, dass Getter-und Setter nicht so häufig verwendet werden
sollen usw. Zwischenzeitlich habe ich für jeden Rohstoff ein Singleton erstellt, den ich mit
getinstance() verändert habe. (eigentlich Quatsch, weil das Entwurfsmuster eher für GUI verwendet wird? Oder nicht?) - Wie würde man geschickt vorgehen?
Beispiel:
(meine Versuche)
1. Wenn ein Button in der GUI gedrückt wird, wird ein neues Rohstoff-Holz-Object erstellt und dann
das neue mit dem alten addiert. (altes Holz Objekt(Menge) + neues Holz Object(Menge)
2. Wenn ein Button gedrückt wird, wird getInstance() aufgerufen, wenn das Objekt noch nicht
besteht, wird eins erzeugt. Wenn bereits eins vorhanden ist, wird die Holzmenge dazuaddiert.
3. Wenn ein Button gedrückt wird, einfach den Setter von dem Holzobjekt aufrufen und den alten
Wert mit dem neuen Wert addieren.
4. ...
So habe ich es momentan gemacht:
Resources.java
Java:
public abstract class Resources {
}
Java:
package resources;
public abstract class Rohstoffe extends Resources{
private final String name;
private int value;
private int price;
public Rohstoffe(String name,int value,int price){
this.name=name;
this.value=value;
this.price=price;
}
@Override
public String toString() {
return "Rohstoffe [name=" + name + ", value=" + value + ", price="
+ price + "]";
}
public int getValue() {
return value;
}
}
Java:
public class Stein extends Rohstoffe{
private static final String name="STONE";
private int value=20;
private static int price=30;
public Stein(int value)
{
super(name,value,price);
}
}
Java:
public class Lager<T> {
private T resources;
public boolean isEmpty() {
return this.resources == null;
}
public void fill(T resources) {
if (this.resources != null) {
throw new IllegalStateException();
}
this.resources = resources;
}
public T empty() {
if (this.resources == null) {
throw new IllegalStateException();
}
T resources = this.resources;
this.resources = null;
return resources;
}
public String toString() {
return this.getClass().getName() + "[resources=" + this.resources + "]";
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// Lager<Rohstoffe<?>> rohstofflager=new Lager<Rohstoffe<?>>();
// Wood wood1=new Wood();
// rohstofflager.fill(new Wood());
// rohstofflager.fill(wood1);
// rohstofflager.fill(stein1);
// System.out.println(rohstofflager);
// wood1.setPrice(30);
// System.out.println(rohstofflager);
Lager<Stein> stone = new Lager<Stein>();
stone.fill(new Stein(2));
System.out.println(stone);
}
}
Hier ein kleines Testbild ;-)
Directupload.net - 7mqeqi62.png
Würde man jedes mal, wenn die Holzanzahl sich verändert den Konstruktor vom Holz aufrufen?
Oder das Objekt verändern? Ich hatte vor, ein Lager von Typ T anzulegen, in das man
dann nur Rohstoffe vom Typ Rohstoffe mit dem Untertyp Holz,Stein einlegen kann.
Und dann ein Lager wo man nur Truppen vom Typ Bogenschützen usw einlagern kann.
Was wäre ein guter Programmierstil? Ich hoffe ihr könnt mir Tipps und Tricks geben. Hab einige Javabücher in der Unibibliothek durchgeackert.. aber irgendwie würde ich das gerne an meinem Beispiel lernen :toll:
Vielen Dank an alle, die sich das durchgelesen haben
Gruß
Leo
Zuletzt bearbeitet: