Modellieren eines Buchungssystems für Busfahrkarten

K

kneitzel

Gast
Ich will dir nicht auf den Schlips treten, aber ein richtiges Englisch wäre schon angebracht ;)
https://dict.leo.org/englisch-deutsch/vorname
https://dict.leo.org/englisch-deutsch/nachname
Das ist halt Englisch for Runaways (würde Otto Waalkes sagen).

Ansonsten zur Sache:
Aus meiner Sicht ist das wieder ein typischer Fall von zu hoher Komplexität. Wenn etwas so viel zu komplex wird, dann nutze Teile und Herrsche: Unterteile ein Problem so lange, bis die Teile für Dich beherrschbar sind!

Hier könnte man ganz konkret sagen: Schreibe z.B. kleine Methoden, die gezielt gewisse Dinge machen. Also so Dinge wie:
- gibt es einen Kunden schon?
- Kunden heraussuchen
- Kunden hinzufügen
- ...

Dann wird der Code hinterher extrem übersichtlich und gut lesbar. Und Du hast nur ganz kleine, einfache Methoden zu verstehen.
 

xImJugo

Aktives Mitglied
Das größte Problem, dass ich habe ist die Modellierung selbst von dem ganzen System. Normalerweise (ohne ArrayList als Basis zum Speichern) hat sich das Modellieren immer ziemlich ergeben, denn ich hätte einfach nur meine paar Klassen mit Konstruktoren und ihren methoden und Attributen und würde diese den entsprechenden Klassen einfach "weitergeben", aber da ich jetzt die verschiedenen Elemente auch in der Liste speichern muss, versteh ich plötzlich gar nicht mehr.

Für diese Aufgabe bzw Modellierung bräuchte ich doch eigentlich erst mal eine Bus Klasse (nur mit Busnummer), ein Ticket (Preis und Rechnungsnummer) und eine Station Klasse ( beschreibt Start und Zielbahnhof) und daraus ergibt sich dann eine neue Klasse Buslinie (dass auf den Bus, ticket und station zugreifen muss), aber wie mach ich das bitte mit den Arraylist und wo werden die gespeichert. Zum Bsp ich hab einen neuen Bus und der wird in seiner BusArrayList gespeichert. In Welcher Klasse steht dann diese Liste und wie gebe ich diese Liste mit den Eigenschaften von Bus weiter an die Buslinie Klassen? Ich will quasi die ArrayList der jeweiligen Klassen weitergeben, damit am Ende das ganze Booking System die gleichen Liste und Listenelemente benutzt.

Zur Zeit habe ich meine Befehle und Aufgaben mehr oder weniger gelöst. Ich hab halt eine Bulinie klasse (mit konstruktor, der busnummer, start und zielbahnhof, preis, währung) entgegenimmt, aber hier sieht man schonmal, dass es in dem Sinne keine gute Modellierung ist, da ich keinen Bus zum Bsp als eigene Klasse habe und eben keine BusListe. Meine 2. Klasse ist die Kundenklasse (konstruktor mit namen und erstellt automatisch eine neue Rechnungsnummer(immer um 1 erhöht), wenn ein neuer Kunde generiert wird. Hier habe ich es irgendwie geschafft, dass ich im Konstruktor die Liste mitgebe für meine 3. Klasse Buchung ( konstruktor nimmt name, busnummer entgegen und erzeugt im Konstruktor die Rechnungsnummer und einen neuen Kunden(mit dem kundenklasse konstruktor), der in die KundenArraylist gespeichert wird, welche sich auch in der BookingKlasse befindet. Meine letzte Klasse ist sozusagen eine Manager Klasse und heißt halt BookingSystem und hier drinn habe ich die BookingListe und BuslinienListe und alle Methoden der Aufgabe. Könnt ihr mir sagen, was ihr davon haltet und was ich ändern sollte?
 

MoxxiManagarm

Top Contributor
Für diese Aufgabe bzw Modellierung bräuchte ich doch eigentlich erst mal eine Bus Klasse (nur mit Busnummer), ein Ticket (Preis und Rechnungsnummer) und eine Station Klasse ( beschreibt Start und Zielbahnhof) und daraus ergibt sich dann eine neue Klasse Buslinie (dass auf den Bus, ticket und station zugreifen muss), aber wie mach ich das bitte mit den Arraylist und wo werden die gespeichert.
Nein eben nicht, dass ist das, was mich bei deiner Aufgabe auch erst irritiert hat. Vergiss den Einleitungstext. Du kannst sicherlich Bus und Zielbahnhof Klassen erstellen, brauchen tust du sie aber nicht unbedingt. Ihre Identifier können auch einfach Attribute in referenzierenden Klassen sein.

Und ich habe das schon mehrmals gesagt, der Preis gehört in dieser Aufgabe nicht in das Ticket, der Preis gehört in die Route! Stell es dir am RL-Beispiel Flixbus vor. Das ist das Modell von dem wir reden. Der Kunde bucht eine Fahrt. Das Ticket bestimmt nicht den Preis, sondern die Verbindung bestimmt den Preis, welches lediglich durch das Ticket berechtigt wird. Die Verbindung ist eine Relation im Ticket, genauso wie der Kunde.

Du brauchst minimal wirklich nur diese 4 Klassen und die Attribute (wie auch immer du sie im Code benennst):
Verbindung(Busnummer, Start, Ziel, Preis, Währung)
Ticket(Rechnungsnummer, Relation Verbindung, Relation Kunde)
Kunde(Kundennummer, Vorname, Nachname)
Manager(Liste von Verbindungen, Liste von Tickets, optional Liste von Kunden)

Hier habe ich es irgendwie geschafft, dass ich im Konstruktor die Liste mitgebe

Du musst uns zuhören. Die Vorgehensweise haben wir auch schon erklärt. Das ist kein Hexenwerk sondern einfach nur ein statischer Wert.

Java:
public class Customer {
    private static int CUSTOMERNUMBER = 0;

    private int customernumber;
    private String firstname;
    private String lastname;

    public Customer(String firstname, String lastname) {
        this.customernumber = ++CUSTOMERNUMBER;
        this.firstname = firstname;
        this.lastname = lastname;
    }
}
 
Zuletzt bearbeitet:

MoxxiManagarm

Top Contributor
Die Gleiche Vorgehensweise mit dem statischen Wert hast du auch bei den Tickets, d.h. Rechnungsnummer gibst du nicht mit in den Konstruktor, sondern nur die Relationen. Genau diese brauchst du also, bevor zu die Rechnung erstellen kannst.

Nimm dir erst die Relation Verbindung vor. Bei dem book-Befehl bekommst du die Busnummer. Suche die Verbindung mit dieser Busnummer. Falls es keine gibt ist das eine Fehlermeldung wert. Hast du die Verbindung suchst du den Kunden. Dafür iterierst du über die Kundenliste. Alternativ kannst du aber auch die Kunden über die Ticket-Liste scannen. Falls du keinen Kunden findest mit dem Namen, dann erstellst du einen. Dann nimmst du die Verbindung und den gefundenen bzw. erstellten Kunden und erstellst mit diesen beiden Objekten das Ticket. Fertig (abgesehen von Ausgaben und Fehlerhandling natürlich).

Rein theoretisch könntest du die Relationen auch auf der gegenüberliegenden Seite definieren, d.h. eine Verbindung könnte auch eine Liste von ihr zugeordneter Tickets führen und der Kunde könnte eine Liste von gekauften Tickets führen. Daher wird in einem ERM-Diagram nie angegeben auf welcher Seite die Relation gespeichert ist. Es wird jedoch empfohlen immer die Relation auf der Seite zu speichern, die nicht die Liste benötigt. Diese Modellierung ist vorallem für relationale Datenbanken geeignet.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
Z vereinfachtes Wörterbuch in java modellieren Java Basics - Anfänger-Themen 10
Z Modellieren Haareschneiden Java Basics - Anfänger-Themen 87
D n-dimensionale Points modellieren Java Basics - Anfänger-Themen 3
K Problem mit Greenfoot - aussetzen modellieren? Java Basics - Anfänger-Themen 2
M Länge eines Arrays als Variable speichern möglich? Java Basics - Anfänger-Themen 14
P Objekt einer Methode eines anderen Objektes übergeben Java Basics - Anfänger-Themen 5
P Wie kann ich beispielsweise Speicherstände eines Spiels DAUERHAFT in meinem Programm speichern? Java Basics - Anfänger-Themen 3
laxla123 Eigenschaften eines Algorithmus (determiniert vs.. deterministisch) Java Basics - Anfänger-Themen 2
monsterherz Ablauf der Erstellung eines Java Programmes Java Basics - Anfänger-Themen 17
monsterherz Fehler Semikolon fehlt - ich weiss aber nicht wo da noch eines hin sollte... Java Basics - Anfänger-Themen 21
J Farbe des Striches eines TitledBorders ändern Java Basics - Anfänger-Themen 2
pc pc pc pc pc letztes Element eines Arrays n Java Basics - Anfänger-Themen 3
walid Öffnungszeiten eines Geschäftes Java Basics - Anfänger-Themen 3
paulen1 Best Practice "Unchecked Assignment" Warnung beim erstellen eines 2D Arrays of Arraylists Java Basics - Anfänger-Themen 2
T Probleme beim Import eines Git-Repos Java Basics - Anfänger-Themen 2
U Eigenschaft eines JTextfiels per ActionListener ändern... Java Basics - Anfänger-Themen 2
B Synchronisation eines kleinen Museums Java Basics - Anfänger-Themen 47
krgewb Breite und Höhe eines Bildes in base64 auslesen Java Basics - Anfänger-Themen 3
Sachinbhatt Was ist die Notwendigkeit eines Sammlungsframeworks in Java? Java Basics - Anfänger-Themen 2
N Textdatei aus Resourcen-Ordner eines Projekts/ jar-file lesen Java Basics - Anfänger-Themen 4
B Produkt eines double - streams Java Basics - Anfänger-Themen 3
B Attribute eines Objekts einer Klasse durch statische Methode einer 2. Klasse ändern? Java Basics - Anfänger-Themen 32
S Variablen Letzte Zeile eines Strings entfernen Java Basics - Anfänger-Themen 1
D Inhalt eines Arrays ausgeben Java Basics - Anfänger-Themen 7
A Jedes zweite Element eines Arrays entfernen Java Basics - Anfänger-Themen 30
sserio Java Fx, wie erstellt man einen EventHandler, der durch das Drücken eines Button Texte in eine Table view einfügt Java Basics - Anfänger-Themen 17
J Größe eines Strings in Pixel Java Basics - Anfänger-Themen 18
M Parse-Tree eines statements darstellen Java Basics - Anfänger-Themen 0
H Java verkettete Liste, Wert eines Index zurückgeben Java Basics - Anfänger-Themen 1
bluetrix Programmieren eines Bots für Zahlen-Brettspiel Java Basics - Anfänger-Themen 9
J Hinzufügen eines Objektes in ein Objekt-Array Java Basics - Anfänger-Themen 62
M Wie kann die Implementation einer Methode den Wert eines Attributs vermindern? Java Basics - Anfänger-Themen 3
A Rekursive Implementation eines Codes Java Basics - Anfänger-Themen 4
H String Repräsentation eines Rechtecks mit Instanz-Methode Java Basics - Anfänger-Themen 8
M Konstruktor ohne Übergabe eines Wertes Java Basics - Anfänger-Themen 7
M Wie kann ich in einem Konstruktor die Methode eines anderen Interfaces mit den jeweiligen Parametern aufrufen? Java Basics - Anfänger-Themen 8
M Wie erreiche ich das Vorwärtsgehen eines Roboters? Java Basics - Anfänger-Themen 2
M Wie erreiche ich es das Vorwärtsgehen eines Roboters? Java Basics - Anfänger-Themen 0
R While-Loop der die Einträge eines Arrays in umgekehrter Reihenfolge anzeigt Java Basics - Anfänger-Themen 3
A Optimierung eines Programms: Mergen der Dateien Java Basics - Anfänger-Themen 23
melisax Alle Möglichkeiten eines Wortes angeben Java Basics - Anfänger-Themen 3
A Java, verarbeitung eines xml-files Java Basics - Anfänger-Themen 2
C Fehler beim erstellen eines Objektes Java Basics - Anfänger-Themen 3
B Konkatenieren eines Strings und inkremtierenden Zahl zu einer INT Variablen Java Basics - Anfänger-Themen 7
F Initialisieren eines Web-Mp3 Players in Tabs durch "booleans" erst wenn Tab geöffnet wird ...? Java Basics - Anfänger-Themen 1
P Drei Zahlen eines Würfelspiels auswerten Java Basics - Anfänger-Themen 7
C Brauche Hilfe beim Schreiben eines Programmes :/ Java Basics - Anfänger-Themen 1
C initialisieren eines arrays richtiger Größe und mit geeignetem Datentyp Java Basics - Anfänger-Themen 26
C Überprüfen eines Programms auf Syntaxfehler Java Basics - Anfänger-Themen 3
S Wie kann ich den Bereich eines Integers begrenzen? Java Basics - Anfänger-Themen 2
nonickatall Grundsätzliches Verständnisproblem des Aufbaus eines Programms Java Basics - Anfänger-Themen 19
B Downgrade eines bestehenden Projektes Java Basics - Anfänger-Themen 5
amelie123456 Geschwindigkeit der Methode bewegeDich eines Objekts ändern Java Basics - Anfänger-Themen 2
D Hilfe beim Erzeugen eines Arrays NullPointerException wird ausgelöst Java Basics - Anfänger-Themen 11
J maximaler Wert eines Integers Java Basics - Anfänger-Themen 14
TimoN11 IntelliJ , Ausgabe von einem Quellcode in Eingabe eines Quellcodes Java Basics - Anfänger-Themen 1
Z Rückgabe eines Values in umgekehrte richtung Java Basics - Anfänger-Themen 5
L Methode zum invertieren eines Arrays Java Basics - Anfänger-Themen 7
B fragen zu Aufbau eines UML-Klassendiagramm Java Basics - Anfänger-Themen 1
eleonori Durchschnitt aller Werte eines Baums berechnen Java Basics - Anfänger-Themen 5
M Benutzereingabe eines Codes verbessern Java Basics - Anfänger-Themen 3
B Modulo-Operator anhand eines Beispieles erklären Java Basics - Anfänger-Themen 7
J Verschieben von Buchstaben in einem String um vorgegebene Anzahl von Zeichen innerhalb eines weiteren String Java Basics - Anfänger-Themen 12
F Auf Variablen eines Konstruktors zugreifen Java Basics - Anfänger-Themen 4
Kawastori Größe eines Arrays bestimmen Java Basics - Anfänger-Themen 13
Lena_2611 Vergleich von Array1 Index mit Array2 Wert und erzeugen eines neues Arrays Java Basics - Anfänger-Themen 8
A Teilarrays eines 2D-Arrays sortieren Java Basics - Anfänger-Themen 4
marcooooo Separator zwischen allen Zeichen eines Strings einfügen Java Basics - Anfänger-Themen 29
C Wie kann ich Versionen eines Projektes in Eclipse erstellen? Java Basics - Anfänger-Themen 3
yoskaem Text Color durch Klicken eines Buttons in anderer Activity ändern Java Basics - Anfänger-Themen 2
A Teilen eines Arrays Java Basics - Anfänger-Themen 5
DorFey Sortieren eines mehrdimensionalen Arrays Java Basics - Anfänger-Themen 8
P Klasse hat keinen Zugriff auf getter/setter-Methoden eines Objektes Java Basics - Anfänger-Themen 9
R Löschen und ausgeben eines Teilbaums Java Basics - Anfänger-Themen 3
J Alle Werte eines Strings zusammen addieren Java Basics - Anfänger-Themen 15
M Hilfe bei Strukturierung eines Buchungssystems Java Basics - Anfänger-Themen 3
M Erstellen eines insets Objekts, GridBagLayout Java Basics - Anfänger-Themen 13
M Rückgabe eines Arrays Java Basics - Anfänger-Themen 10
Z Erste Schritte Indexe innerhalb eines Arrays zusammensählen Java Basics - Anfänger-Themen 14
W Random Zahl unter Berücksichtung eines Durchschnitts Java Basics - Anfänger-Themen 7
N Länge eines Arrays in einem Objekt testen Java Basics - Anfänger-Themen 51
A Freie Stelle eines Arrays Java Basics - Anfänger-Themen 17
C Erstellen eines Widerstandsnetzwerks Java Basics - Anfänger-Themen 10
C Methode Seiten tauschen eines erstellten Rechtecks mit Seite A und B Java Basics - Anfänger-Themen 9
R Zugriff auf den Index eines Arrays, welches ein Objekt ist. Java Basics - Anfänger-Themen 4
J Problem bei der Programmierung eines Tannenbaums Java Basics - Anfänger-Themen 9
F Berechnung der Rektaszension und Deklination eines Sterns Java Basics - Anfänger-Themen 7
1 Erste Schritte Was denkt ihr über eines meiner ersten Javaprogramme? Java Basics - Anfänger-Themen 2
A Problem bei returnen eines Wertes Java Basics - Anfänger-Themen 6
D Input/Output Problem bei der Benutzereingabe eines Befehls Java Basics - Anfänger-Themen 14
H Größte Duplikat (Größte Doppelte Wert) eines Arrays ausgeben Java Basics - Anfänger-Themen 9
M Hinzufügen eines Objekts auf ein Map Java Basics - Anfänger-Themen 4
M Auf einen Array innerhalb eines Objekts zugreifen Java Basics - Anfänger-Themen 5
S Elemente eines Arrays bei Ausgabe auslassen Java Basics - Anfänger-Themen 2
S Ersetzen eines Asterix in einem String Java Basics - Anfänger-Themen 8
M Struktur eines Fotobuches Java Basics - Anfänger-Themen 6
J Implementierung eines Zustandsdiagramms Java Basics - Anfänger-Themen 19
T Prüfung auf Existenz eines Dialogfensters Java Basics - Anfänger-Themen 5
I ArrayList - Methode zum Speichern eines Eintrags in einer Datei Java Basics - Anfänger-Themen 17
I Labyrinth auf der Basis eines rekursiven Algorithmus Java Basics - Anfänger-Themen 27

Ähnliche Java Themen

Neue Themen


Oben