Bundesliga modellieren

Status
Nicht offen für weitere Antworten.

NDEBUG

Mitglied
Als alter C-Programmierer tue ich mir irgendwie reichlich schwer in Klassen zu denken. Daher hab ich mir als Lernaufgabe gestellt Bundesliga-Ergebnisse mit einem Java-Programm zu managen. Ich hab auch schon nen Entwurf und es wäre nett, wenn da mal ein Profi drüberguckt und mir sagt was eventuell schlecht ist und zu Problemen führen kann.

Hier die Anforderungen:
- Das Programm soll die Ergebnisse der Fußballbundesliga verwalten, dazu muß es alle Mannschaften und Begegnungen mit Ergebnissen verwalten können.
- Sämtliche Daten sollen als XML abgespeichert werden und zwar saisonweise (die Saison-Dateien werden nach dem Schema "x Liga- Saison 20xx/20xx.xml" abgespeichert, z.B. "1. Bundesliga - Saison 2009/2010.xml")
- Es soll automatisch eine Tabelle erstellt werden können.

Zukünftige Anforderungen:
- Es sollen die Spieler der Mannschaften mitverwaltet werden können.
- Die Architektur soll erlauben, daß größere mathematische Berechnungen für Spieltage und Saisons möglich sind.
- Es soll möglich sein zu den verschiedenen Mannschaften weitere Informationen zu verwalten (Stadion, Personal, Einnahmen, usw.)


Hier mein Entwurf ...
fuballmanagerp.jpg


Was mich an dem Entwurf n bisschen stört ist, daß der "Data"-Block sehr monolithisch aussieht. So hat da fast jede Klasse ja eine Collection von einer anderen Klasse drin. Und das würde die Klassen sehr abhängig voneineander machen.

Also ist das gut oder was kann man besser machen? Für Verbesserungsvorschläge jeglicher Art schonmal vielen Danke :)
 
B

bygones

Gast
nur kurz druebergefolgen.

Saison braucht keine Mannschaften zu kennen imho... einen Saison hat einen Zeitraum, und diverse Spieltage.
Ein Spieltag besteht aus mehreren Begegnungen und eine Begegnung besteht immer aus 2 Mannschaften - jede Mannschaft hat dann eine Reihe von Spielern.

Und das würde die Klassen sehr abhängig voneineander machen
wenn sie logisch zusammengehoeren ist eine Abhaengikeit die logische Konsequenz
 
G

Gast2

Gast
Eine Saison kann schon Mannschaften haben z.B. beim Fußball
die Bundesliga hat 18 Manschaften
die Premiere Leauge 20...


edit: okay hier eventuell eher die Liga nicht die Saison...

Aber die Begnung kann nur 2 Manschaften enthalten würde ich auf jeden Fall mit aufnehmen...


Wenn dus als XML abspeichern willst würde sich eventuell JAXB empfehlen...
 
Zuletzt bearbeitet von einem Moderator:

NDEBUG

Mitglied
"mannschaften" hab ich mir als Teil von Saison gedacht, da die Mannschaftskonfiguration der Liga für jede Saison spezifisch ist. Es steigen Mannschaften ja saisonweise auf- und ab. So hat die Saison 2009/2010 teilweise andere Mannschaften als die Saison 2008/2009.

Begegnung hat ich mir so gedacht, daß ich zwei "Pointer" mache, die in das Array "mannschaften" zeigen, jeweils einer für heim und einer für ausw. So müsste die Klasse Saison dann die Methode
Java:
Mannschaft getMannschaft(String mannschaftsName) { ... }
haben.

Edit: Ich hab einige Änderungen vorgenommen.
- Ich konzentriere mich erstmal nur auf eine einzige Saison, daher ist "Liga" rausgeflogen.
- Ich habe "Tabelle" neu hinzugefügt.

Das neue Diagramm ist hier anguckbar http://img76.imageshack.us/img76/6551/fuballmanager.jpg. Ich kann meinen ersten Post nicht editieren, daher so.
 
Zuletzt bearbeitet:

NDEBUG

Mitglied
Mal der aktuelle Stand der Entwicklung hier und ich hab auch einige Fragen :) Doch zunächst erstmal Code ...

Das ganze xml Zeugs werde ich noch aus den einzelnen Klassen rausholen und in einer einziger Klasse zusammenbasteln. Jedes Object speichert auch einen Verweis auf seine zugrundeliegende "XML" Quelle und ist mit ihr fest verbunden. Ändert man also einen Wert z.B. einer Mannschaft so ändert dies automatisch auch den zugehörigen XML "Code". So kann man ganz einfach das ganze XML auf einmal schreiben und muss nicht durch alles durchiterieren. In fussballmanager.java wird dieses Prinzip durch ein paar Test-Anweisungen deutlich.

Und nun meine Fragen.
1. Geht das besser, daß ich eine permanente Verbindung zwischen Daten im Speicher und XML-File auf der Platte habe?
2. Wenn ich das XML zurückschreibe verwende ich
Java:
DOMSource sourceXML = new DOMSource(this.ligaXML);
StreamResult outputDest = new StreamResult(System.out);
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.transform(sourceXML, outputDest);
Er macht aber aus
[XML]<?xml version="1.0" encoding="UTF-8"?>
<liga name="Freundschaftsliga" saison="2009/2010">
(...)[/XML]
das hier
[XML]<?xml version="1.0" encoding="UTF-8" standalone="no"?><liga name="Freundschaftsliga" saison="2009/2010">
(...)[/XML]
Also er fügt 'standalone="no"' ein und bricht die Zeile vor '<liga (...)' nicht um. Warum? Und wie kann ich ihn dazu bringen, daß er nichts einfügt und den Zeilenumbruch macht?

EDIT: Frage 2 hat sich erledigt. Dieser angepasste Code erzeugt das XML so wie ich es wollte.
Java:
DOMSource sourceXML = new DOMSource(this.ligaNodeXML);
StreamResult outputDest = new StreamResult(System.out);
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
transformer.setOutputProperty(OutputKeys.VERSION, "1.0");
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.transform(sourceXML, outputDest);
 
Zuletzt bearbeitet:

NDEBUG

Mitglied
Pünktlich zum ersten Spieltag das nächte Update hier. Da das Projekt immer größer wird, gibts nen Download vom 'src' und 'daten' Ordner (siehe Anhang).

Das kleine Programm besitzt nun ein GUI und der ganze XML Kram ist sauber von der Implementierung der "Daten-Klassen" durch die abstrakte Klasse "XmlEntity" getrennt. Speichern ist noch nicht möglich. Einfach mal ausprobieren und ich würde mich freuen wenn ihr mir eure Erfahrungen und Verbesserungsvorschläge mitteilt.

EDIT: der aktuelle Spieltag für Menschen, die kein Premiere haben:anhören
 
Zuletzt bearbeitet:

NDEBUG

Mitglied
Fertig! Der Fussballmanager ist nun fertig. Es ist alles drin ... Tabelle, Spieltage, Mannschaften, Speichern, Historie, etc. Es ist auch möglich die Spieltage direkt von "Bundesliga.de" zu aktualisieren. Dazu geht man auf "Bundesliga.de", wählt den gewünschten Spieltag, markiert die Spiele, die aktualisiert werden sollen (oder auch einfach alle Spiele des Spieltags) und fügt sie im dafür vorgesehen Tab ein. Klick und fertig.

Hier also der Source Code ... wer Fehler findet kann sie hier gerne posten. Ich werd sie dann ausmerzen. Ansonsten werd ich an dem Programm aber erstmal nicht weiter arbeiten.
 
Zuletzt bearbeitet:

experto2000

Aktives Mitglied
Gut gemacht.
Echt spitze.
Kein Scherz.
Noch eine Frage holt er die Ergebnisse von selber wenn nein würde ich das noch machen.
 

NDEBUG

Mitglied
Nein, automatisch macht es das nicht. Das Update Feature war auch weniger für die Ergebniseingabe gedacht, als vielmehr für die Aktualisierung der Spieltermine, denn diese sind natürlich noch nicht für alle Spieltage fix terminiert. So zeigt das Programm für die späteren Spieltage z.B. an, daß alle Spiele eines Spieltages am gleichen Tag zur gleichen Uhrzeit stattfinden, was nicht so sein wird. Das liegt daran, daß diese Spieltage wie gesagt terminlich noch nicht genau fixiert sind.

Das nächste Programm wird aber sowas in der Art haben und noch viel mehr. Darum gehts... "Fifa Fußball-Weltmeisterschaft in Südafrika 2010".
 

TheChemist

Bekanntes Mitglied
Super Programm, ich bin zwar nicht gerade der Fußballbegeistertste aber das macht ja nichts. Ein Freund von mir kann damit mehr anfangen und findet es auch super.
 

tele

Neues Mitglied
Hallo,

ich habe ein kleines Problem. Ich möchte eine Ligenverwaltung programmieren.
Mit GUI und speichern der Ergebnisse. Der Anwender soll die Ergebnisse interaktiv
eingeben können. Die Ergebnisse sollen gespeichert werden, damit man sich den Spieltag
und die dazu gehörige Tabelle von früheren Spieltagen anzeigen lassen kann. Ich habe
festgestellt das es kompliziert ist ein Programm zu schreiben, damit eine Mannschaft
einmal ein Heim- und Gastspiel gegen alle anderen Mannschaften hat. Außerdem weiß
ich nicht wie das Speichern und Laden funktioniert.

Kann mir da jemand helfen?
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben