Java Projekt aufbau

Toaster

Mitglied
Hallo
Ich habe bei der Konzeption eines Java Programmes ein Problem. Ich bin Umsteiger von Pascal mit Lazarus IDE. Der Unterschied ist tatsächlich größer als ich gedacht habe (was grundsärtlich nichts negatives ist).

Ich verzweifele jedoch bei dem Versuch ein Java Programm zu schreiben, welches, sehr vereinfacht, den Nutzer eingaben tätigen lässt und diese wieder anzeigt. Als GUI wollte ich Swing verwenden (ist zwar wohl etwas veraltet, doch reicht es bestimmt für ein paar Tabellen und Buttons). Jetzt wird es für mich jetzt etwas undurchsichtig. Ich habe zwei Baustellen. Eine ist das Speichern von Daten, die andere ist die GUI. Sind ja auch offensichtlich die schwierigsten Dinge an dem Programm (welches ich unter Pascal übrigens am laufen habe, will es jedoch nochmal unter Java schreiben und das backend dasnn für eine Android App übernehmen).

Naja, kommen wir zum ersten Problem:
Der Nutzer soll in dem Programm unendlich viele Felder und Tiere einspeichen können. Kann man in Java ja prinzipiell ganz schön als Objekt machen. Dieses Objekt wird als Atribute mehrere Strings, Integer und Lists haben.
Wie kann ich alle diese Dinge am besten in einer ArrayList (?) verpacken, so dass ich diese dann einfach nurnoch als .txt oder .bin oder sonstwas abspeichern muss? Oder bin ich komplett auf dem Holzweg und das geht auch besser? Problem bei der Variante ist ja, dass man für jedes Objekt eine Datei hat.

Meine zweite Baustelle ist die Frage, wie ich das überhaupt umsetzen kann. Ich brauche ja die Hauptklasse mit der Mainmethode, dann eine Klasse Felder und eine Tiere, diese erben ggf. von einer gemeinsamen Superclass (vielleicht bringt Polymorphie mir was) und dann eben die GUI. Da ich mehrere Frames habe, soll ich für jedes Frame eine neue Klasse machen, da die alle komplett anders sind? Und müssen diese nicht auch mit den anderen Klassen verknüft sein (erben? geht ja nichtmerh...)

Wie man warscheinlich merkt weiß ich aktuell nicht so richtig, was ich machen soll.
Ich freue mich über jede Anregung und bedanke mich im vorraus 🙂

LG.
 
Erste Baustelle, du kannst dir eine ArrayList vom Typ Tier erstellen
Java:
List<Tier> tiere = new ArrayList<>();
Deine Tier Klasse kann die toString() Methode überschreiben, so das du dort die Textrepräsentation deine Objekt übernehmen kannst. Mithilfe einer Iteration über alle Tiere kannst du dann die einzelnen Tiere mit ihrere Repräsentation in eine Datei abspeichern.
Java:
for(Tier tier : tiere) {
    // write(tier.toString());
}

(vielleicht bringt Polymorphie mir was)
Polymorphie wird in Java so nicht unterstützt.

Vererbung brauchst du nur, wenn du wirklich das komplette Verhalten einer Klasse erben willst.
Wenn du nun ein paar Frames hast, die immer die selbe Größe haben und vllt Zugriff auf irgendein Hauptfenster, kannst du für sowas natürlich die Vererbung nutzen.

Allgemein solltest du deine GUI von deiner Logik und deinen Daten trennen, Stichwort: MVC (Model View Controller)
 
Deine Daten würde ich als Json abspeichern. Das schreiben und lesen der Logik bekommst du von Java geschenkt. Zudem kannst du Json einfach mit einem Texteditor bearbeiten....
 
Erste Baustelle, du kannst dir eine ArrayList vom Typ Tier erstellen
Java:
List<Tier> tiere = new ArrayList<>();
Deine Tier Klasse kann die toString() Methode überschreiben, so das du dort die Textrepräsentation deine Objekt übernehmen kannst. Mithilfe einer Iteration über alle Tiere kannst du dann die einzelnen Tiere mit ihrere Repräsentation in eine Datei abspeichern.
Java:
for(Tier tier : tiere) {
    // write(tier.toString());
}
Ok, danke. So ähnlich habe ich mir das gedacht. Alle in eins kann jedoch auch absolutes Chaos machen, ich glaube ich trenne schonmal am besten alles was lebt und was nicht lebt in 2 Dateien.
Polymorphie wird in Java so nicht unterstützt.
Ich könnte doch theoretisch (ja, mache ich nicht), die Objekte der Klasse Tier und der Klasse Felder in der abstracten Klasse Dinge speichern? Sowas habe ich gemeint, um die Objekte einfacher in die ArrayList zu bekommen...

Vererbung brauchst du nur, wenn du wirklich das komplette Verhalten einer Klasse erben willst.
Wenn du nun ein paar Frames hast, die immer die selbe Größe haben und vllt Zugriff auf irgendein Hauptfenster, kannst du für sowas natürlich die Vererbung nutzen.

Meine Frames sind alle sehr unterschiedlich. Also macht es Sinn, für jeden Frame eine eigene Klasse zu machen? Die Listener würde ich priavate innerhalb der Klassen deklarieren und diese könnten dann ja andere Methoden aufrufen, die was auch immer machen. Wäre das ein sinnvoller Aufbau?

Allgemein solltest du deine GUI von deiner Logik und deinen Daten trennen, Stichwort: MVC (Model View Controller)
Da ich das backend noch für eine App nutzen will ist das eine Notwendigkeit.

Danke für die Antwort 😀
 
Polymorphie wird in Java so nicht unterstützt.

Was meinst du damit?

Ich hab von Pascal keine Ahnung, fand aber dies:

Dazu gehört auch das ein Objekt das von einem anderen abgeleitet ist, die geerbte Methode überschreiben kann und durch seine eigene ersetzen, aber im Bedarfsfall doch noch die des Vaters aufrufen kann.

Klingt für mich im ersten Moment nicht wesentlich anders, als in Java.
 
Polymorphie wird in Java so nicht unterstützt.
Hab es mit Mehrfachvererbung verwechselt. Also du kannst schon eine Hierarchie abbilden.

Ok, danke. So ähnlich habe ich mir das gedacht. Alle in eins kann jedoch auch absolutes Chaos machen, ich glaube ich trenne schonmal am besten alles was lebt und was nicht lebt in 2 Dateien.
Hast du Zombie-Tiere? Sonst würde ich mit einem Status arbeiten, also Tier.isAlive(), Tier.isDead()

Meine Frames sind alle sehr unterschiedlich. Also macht es Sinn, für jeden Frame eine eigene Klasse zu machen?
Es ergibt auf jeden Fall mehr sinn als nur eine Klasse für alles zu machen 😛
 

Zurück
Oben