Struktur von Java Programmen?

plautzer

Neues Mitglied
Hallo,
ich setzte mich gerade intensive mit OOP und Java auseinander und habe noch eine paar Verständnisprobleme bei Strukturierung. Ich hoffe hier ein paar Tipps und Denkanstöße zu finden, wie ich die nachstehende Probleme am geeignesten Lösen kann. Ich habe auch schon mehrere Tuts und Bücher zu dem Thema gelesen, jedoch sind die Beispiele alle auf einem sehr niedrigen level und konnten mir daher nicht weiterhelfen.
Als Projekt habe ein Verwaltungstool für unsere Basketball-Liga gewählt. Folgende Ausgangssituation habe ich dabei:
Es gibt grob gesehen 2 Objekte:
  • Liga
  • Saison
  • Spieltag
  • Spiel
  • Mannschaft
Und noch ein paar Statistiken, die einmal für das Spiel und die beiden Mannschaften ermittelt und gespeichert werden sollen:
  • Mannschaftstatistik (Punkte ,Fouls, Freethrows, Dunks, Dreier etc jeweils je Viertel)
  • SpielStatistik (Punkte ,Fouls, Freethrows, Dunks, Dreier etc jeweils je Viertel)
Die Klasse Spiel habe ich folgendemaßen aufgebaut:
Code:
Class Spiel{
Private integer Id;
Private Date spielDatum;
Private integer ligaID;
Private integer SpieltagID;
Private Mannschaft  heimTeam;
Private Mannschaft  auswaertsTeam;
Private Statistik  Viertel1; 
}
Class Mannschaft{
Private integer Id;
Private String Name;
}
Das Heimteam und Auswärtsteam sind jeweils von der Klasse Mannschaft. Bei der Erzeugung es Spielobjekts werden die Mannschaften übergeben.
Falls das so korrekt ist, dann habe ich folgende Situation:
1. Frage
Wenn ich alle Spiele aus der Datenbank in meine Programm laden will, dann erzeuge ich erst mein Spiel, danach die beiden Mannschaften und übergebe diese an mein Spiel. Wie kann ich sich sein, dass ich nicht ein Team erzeuge was schon existiert Bzw. wie finde ich eine Mannschaft, die schon als Objekt existiert? Bisher nutze ich ein statisches Array[pos] von der klasse Mannschaft, welche ich als pos die ID mitgebe. Das Array ist jedoch statisch, dh ich muss voher schon wissen wieviel datensätze aus der Datenbank kommen. Gibt es hierfür noch eine elegantere Lösung?

In einer Hauptklasse möchte ich mir alle spiel aus der DB anzeigen lassen:
Code:
Class ZeigeSpiele{
//Get alle Spiele aus der DB
//Zeige alles Spiele mit den Statisitken
}

2. Frage: Wie löse ich die Kommunikation (write/read) mit der Datenbank?
  • Kreiert man hierfür eine Methode getallgames in der Klasse ZeigeSpiele oder in der Klasse Spiele? Es kommt mir etwas unlogisch vor, dass in der Klasse Spiele zu tun, da ich in der ZeigeSpiele erst eine Spiel erzeugen müsste, was nicht real ist um alle Spiel abzufragen. Macht das Sinn?
  • Was ist generell der beste Weg in Java für das Arbeiten mit einer Datenbank? Sollte man eine Klasse SQL kreieren, welche einmal in der Klasse Zeigespiel instaziert wrid erzeugt wird und dann an die Objekte (z.b. Team, Mannschaft) übergeben wird, falls deren Daten gespeichert werden sollen?

Frage 3: Wie verhält sich das mit den Statistiken
Wird hierfür eine erweiterte Klasse gebildet (z.b. Statistik), welche die Klasse erweitert? Oder ist es eine innere Klasse in Mannschaft oder eine eigenen Klasse mit Referenz auf Mannschaft bzw. Team?

Code:
Class Statistik{
Int Punkte;
Int freethrows;
Int Dunks;
Int Dreier;
}
Class Mannschaft{
Private integer Id;
Private String Name;
Private Statistik  Viertel1 = new Statistik(); 
Private Statistik  Viertel2 = new Statistik(); 
Private Statistik  Viertel3 = new Statistik(); 

}


Und Frage 4 zum Schluss: Wie kann ich die Objekte durchsuchen? Z.B. möchte ich mir alle Spiele anzeigen lassen, die über 100 Punkte erreicht haben, oder wieviel Fouls durchschnittlich getätigt wurden?

Es wär top wenn Ihr mir bei den Fragen weiterhelfen würdet!

Viele Grüße
Plautzer
 

Antoras

Top Contributor
Gibt es hierfür noch eine elegantere Lösung?
Java:
List<SomeObject> l = new ArrayList<SomeObject>();
Kreiert man hierfür eine Methode getallgames in der Klasse ZeigeSpiele oder in der Klasse Spiele?
Kommt darauf an was du alles mit dem Objekt Spiel (Objektnamen = Einzahl) machen willst. Wenn das Objekt nur alle zusammengehörigen Attribute speichern soll, dann gehört die Methode in die Klasse, die die Spiele erzeugt. Und das ist bei dir, so wie ich das sehe, der Fall.
Was ist generell der beste Weg in Java für das Arbeiten mit einer Datenbank? Sollte man eine Klasse SQL kreieren, welche einmal in der Klasse Zeigespiel instaziert wrid erzeugt wird und dann an die Objekte (z.b. Team, Mannschaft) übergeben wird, falls deren Daten gespeichert werden sollen?
Das ist wohl der einfachste Weg. Wobei bei dir die Objekte Team und Mannschaft dem Objekt Spiel ähneln, weshalb es das beste ist, wenn du Methoden, die das DBMS ansprechen, in die DB-Klasse packst.
Wird hierfür eine erweiterte Klasse gebildet (z.b. Statistik), welche die Klasse erweitert? Oder ist es eine innere Klasse in Mannschaft oder eine eigenen Klasse mit Referenz auf Mannschaft bzw. Team?
Dies ist wohl auch wieder ein eigenes Objekt. Die Frage ist jetzt nur noch wie die Abhängigkeiten sind. Also ob es sinnvoll ist eine Statistik innerhalb einer Mannschaft, oder in der Hauptklasse zu verwalten. Da aber wohl jede Mannschaft und jedes Spiel eine Statistik hat, macht es Sinn diese auch innerhalb dieser Objekte zu verwalten bzw. anzulegen.
Wie kann ich die Objekte durchsuchen? Z.B. möchte ich mir alle Spiele anzeigen lassen, die über 100 Punkte erreicht haben, oder wieviel Fouls durchschnittlich getätigt wurden?
Java:
List<Spiel> spiele = new ArrayList<Spiel>();
...
for (Spiel s : spiele) {
  if (s.getPunkte() > 100) {
    // mach was
  }
  // usw.
}
 

JanHH

Top Contributor
Für die Sache mit der Datenbank ist die Java Persistenz-Api (JPA) sehr empfehlenswert. Einerseits macht sie das wirklich einfach, andererseits zwingt sie einen geradezu dazu, das Objektmodell sehr sauber und strukturiert anzulegen.

Das Suchen nach Objekten mit bestimmten Eingeschaften kann man auch als Datenbank-Query ausführen.

Sauberes Objektorientiertes Design ist, wie ich finde, etwas, was man nicht auf Anhieb hinbekommt, sondern was Erfahrung und Fingerspitzengefühl erfordert. Daher, einfach mal anfangen.. wenns irgendwo hakt in der Anwendung, wirst Du das schon merken.
 

plautzer

Neues Mitglied
Hi,

danke für euere Hilfe... ich habe dadurch eine Basis für Projekts schaffen können und die Kommunikation mit der DB durch eine SQL Klasse realisiert. Als zweiten Schritt werde ich nun mit einer Persistenz Schicht arbeiten.

Jan hat JPA empfohlen... könnte ihr mir kurz verdeutlichen was der Vorteil/Nachteil zu Hibernate und POJO ist?

Das habe ich noch zwei Fragen zum Array:
Wenn ich ein Array mit Objekten an eine Methode übergebe... dann wird lediglich eine Pointer zum array übergeben und nicht das Array kopiert, richtig?

Besteht hier die Möglichkeit bei der Arrayliste die Objekte in der Liste direkt anzusprechen?

Grüße
 

JanHH

Top Contributor
Hibernate IST (mehr oder weniger) JPA.. JPA ist nur die offzielle java-standardisierung von ORM-Mappern wie hibernate und co. Wobei JPA 1.0 noch etwas unvollständig ist. Aber de fakto ist JPA nur die Spezifzierung, und man benutzt oft hibernate als konkrete Implementation dessen.

"Wenn ich ein Array mit Objekten an eine Methode übergebe... dann wird lediglich eine Pointer zum array übergeben und nicht das Array kopiert, richtig?"

ja. Generell werden immer Pointer auf Objekte übergeben und nie Kopien dieser erstellt.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
C Java Array Struktur, welche ist wann besser? Java Basics - Anfänger-Themen 12
T Collections Java Anfänger - Array-Struktur vollkommen unklar Java Basics - Anfänger-Themen 2
T .für Anfänger - Struktur des Quellcodes in Java? Java Basics - Anfänger-Themen 8
V JSON-Objs aus JSON-Obj filtern und löschen (Manipulation ohne Kenntnis der vollst. Struktur) Java Basics - Anfänger-Themen 12
Soranix Erste Schritte Struktur als Anfänger // Von einer Klasse auf ein Objekt einer anderen Klasse zugreifen. Java Basics - Anfänger-Themen 6
I JSON / XML Struktur mit Vererbung / Interfaces Java Basics - Anfänger-Themen 0
D Verbesserungsvorschläge zur Struktur einer Client Server Desktop Chat App Java Basics - Anfänger-Themen 24
B Collections Streams - Hilfestellung bei komplexer Struktur Java Basics - Anfänger-Themen 9
M Struktur eines Fotobuches Java Basics - Anfänger-Themen 6
N Struktur zerstört Java Basics - Anfänger-Themen 5
T "Einkauf" & if else Struktur Java Basics - Anfänger-Themen 7
B Import Tabelle - Struktur durch User einstellbar Java Basics - Anfänger-Themen 4
B MVC Struktur mit mehreren Szenen - wer schaut mal bitte drüber? Java Basics - Anfänger-Themen 2
H Empfohlene Projekt-Struktur und mehr ... Java Basics - Anfänger-Themen 5
W OOP Zugriff auf mit Objekt erstellte Struktur Java Basics - Anfänger-Themen 7
P Layer Struktur -> File- Verfügbarkeit Java Basics - Anfänger-Themen 0
N Zugriff bei Package Struktur Java Basics - Anfänger-Themen 6
B Grundsätzliche Klassen-Struktur/Stil Java Basics - Anfänger-Themen 12
F OOP Objekterzeugung in IF-Struktur Java Basics - Anfänger-Themen 2
R BlueJ - Hilfe bei for-Struktur Java Basics - Anfänger-Themen 11
K Bibliothek per "Struktur" anlegen Java Basics - Anfänger-Themen 5
S Ordner / Package Struktur bei größerem Projekt? Java Basics - Anfänger-Themen 8
D Welche API für komplexe XML-Struktur? Java Basics - Anfänger-Themen 25
M Kompositum mit vorgegebener hierarchischer Struktur Java Basics - Anfänger-Themen 6
M Client - DB-Server Struktur Java Basics - Anfänger-Themen 7
B OOP "Optimale" Code-Struktur bei Applikationen mit GUIs Java Basics - Anfänger-Themen 3
D Methode um Struktur eines Binäbaumes auszugeben Java Basics - Anfänger-Themen 14
? key - value Struktur in ArrayList Java Basics - Anfänger-Themen 3
B Klasse nach Aufbau und Struktur checken? Java Basics - Anfänger-Themen 15
S JTable Struktur in Datei speichern Java Basics - Anfänger-Themen 7
lomtas JTree Struktur im Nachhinein ändern Java Basics - Anfänger-Themen 2
V parent-child Struktur bei Listenern Java Basics - Anfänger-Themen 3
G Struktur bei Animationen mit Threads Java Basics - Anfänger-Themen 4
K Verzeichniss Struktur verstehen Java Basics - Anfänger-Themen 3
M Struktur von Webapplikationsproj. bei Publikation auf Server Java Basics - Anfänger-Themen 2
J Zugriff auf Objektparameter in einer Struktur Java Basics - Anfänger-Themen 3
D Struktur in einer Logdatei Java Basics - Anfänger-Themen 2
D Objekte als XML Struktur speichern Java Basics - Anfänger-Themen 8
V Ergebnisse in einer Struktur speichern Java Basics - Anfänger-Themen 4
M Struktur eines Softwareprojektes Java Basics - Anfänger-Themen 11
A Struktur -> Beste Lösung? Java Basics - Anfänger-Themen 3
W Java-PRogramm liest als EXE-File Nicht USB, jedoch aus NetBeans Java Basics - Anfänger-Themen 23
W Methoden java map ersatz für c++map Java Basics - Anfänger-Themen 2
M Erste Schritte Java Primzahltester Java Basics - Anfänger-Themen 4
A csv Reader für Java? Java Basics - Anfänger-Themen 27
K Java - Enums Java Basics - Anfänger-Themen 30
tomzen Java Unterstützung für exel dateien installieren. Java Basics - Anfänger-Themen 2
Rookar java.lang.NoClassDefFoundError: org/json/JSONException Java Basics - Anfänger-Themen 2
Rookar Mit Button andere java öffnen Java Basics - Anfänger-Themen 4
F Java Object to Hashmap ? Java Basics - Anfänger-Themen 6
I Backend in Java und Ansicht von Dateien in statische HTML Seiten? Java Basics - Anfänger-Themen 15
R Input/Output Verwendung des Euro-Zeichens in Java Java Basics - Anfänger-Themen 7
I Push Nachrichten von JAVA EE App an Mobile App Java Basics - Anfänger-Themen 3
H .java Dateien in Eclipse einbinden und ausführen Java Basics - Anfänger-Themen 1
onlyxlia Schlüsselworte Was meint man mit "einen Typ" in Java erstellen? Java Basics - Anfänger-Themen 2
O Java Kara geschweifte Klammern Java Basics - Anfänger-Themen 2
richis-fragen Mausrad logitech kann links und rechts klick wie in java abragen. Java Basics - Anfänger-Themen 15
XWing Java Klssenproblem Java Basics - Anfänger-Themen 4
R Umgebungsvariable java -cp gibt immer Java-Hilfe... Java Basics - Anfänger-Themen 3
farbenlos Csv Datei in Java einlesen Java Basics - Anfänger-Themen 18
F TableModelListener: java.lang.ArrayIndexOutOfBoundsException: 132 Java Basics - Anfänger-Themen 3
G Java 8 - Support-Ende Java Basics - Anfänger-Themen 7
T Java Weihnachtsbaum + Rahmen Java Basics - Anfänger-Themen 1
N Will mit Java anfangen Java Basics - Anfänger-Themen 13
Ü Java Array - Buchstaben als Zahlen ausgeben Java Basics - Anfänger-Themen 22
M Java Iterator Verständnisfrage Java Basics - Anfänger-Themen 6
M Java Mail Programm Java Basics - Anfänger-Themen 4
Sniper1000 Java 391 für Windows Java Basics - Anfänger-Themen 37
J Java long- in int-Variable umwandeln Java Basics - Anfänger-Themen 6
JaZuDemNo Java im Studium Java Basics - Anfänger-Themen 7
E Java Programm zur anzeige, ob Winter- oder Sommerzeit herrscht Java Basics - Anfänger-Themen 62
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
V Java-Ausnahmebehandlung: Behandlung geprüfter Ausnahmen Java Basics - Anfänger-Themen 1
krgewb Java Streams Java Basics - Anfänger-Themen 10
A Überwältigt von der komplexen Java Welt Java Basics - Anfänger-Themen 29
O Mehrfachvererbung auf Spezifikations- und Implementierungsebene in Java. Interfaces Java Basics - Anfänger-Themen 19
John_Sace Homogene Realisierung von Generics in Java ? Java Basics - Anfänger-Themen 19
P Meldung aus Java-Klasse in Thread an aufrufende Klasse Java Basics - Anfänger-Themen 1
R mit Java API arbeiten Java Basics - Anfänger-Themen 9
P JDK installieren Probleme bei der Java-Installation Java Basics - Anfänger-Themen 8
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
Timo12345 JNLP File mit Java öffnen Java Basics - Anfänger-Themen 2
S Video Editierung mit Java.._ Java Basics - Anfänger-Themen 2
F Einstelungen in Java - CursorBlinkRate Java Basics - Anfänger-Themen 10
A PHP $_POST["name"] in Java Java Basics - Anfänger-Themen 3
vivansai21 Is there a oneliner to create a SortedSet filled with one or multiple elements in Java? Java Basics - Anfänger-Themen 9
Athro-Hiro Weißes Bild in Java erstellen Java Basics - Anfänger-Themen 3
Arjunreddy Can someone please tell me how to use a debugger in BlueJ(a Java environment) Java Basics - Anfänger-Themen 1
M Java assoziationen (UML) Java Basics - Anfänger-Themen 8
H Excel-Tabellen mit Java erstellen Java Basics - Anfänger-Themen 4
Simon16 Java ArrayListe von einer Klasse sortieren Java Basics - Anfänger-Themen 2
P Wie kann ich in meinem Java Programm etwas dauerhaft speichern? Java Basics - Anfänger-Themen 5
H Nutzt Eclipse alle CPU-Threads beim Ausführen von Java-Programmen? Java Basics - Anfänger-Themen 4
xXGrowGuruXx Java einstieg, leichte sache 0 verstanden Java Basics - Anfänger-Themen 7
A java.sql.SQLException: Data type mismatch. Java Basics - Anfänger-Themen 1
H Java-Programm zur Ausgabe von Zuständen Java Basics - Anfänger-Themen 80
N Java Spiel Figur auf dem Hintergrundbild bewegen. Java Basics - Anfänger-Themen 11
G Kann Java-Programm nicht als jar aufrufen, auch als EXE nicht Java Basics - Anfänger-Themen 19
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
A Lerngruppe Java Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben