2014 oop angabe3 buchungsapplikation
TRANSCRIPT
-
Objektorientiertes Programmieren VU, SS 2014 LVA 384.061
Institut fr Computertechnik Seite 1
bungsbeispiel 3 fr die LVA Objektorientiertes Programmieren
Deadline: 10.06.2014 !
WICHTIG: Alle Studenten die ihr Beispiel nicht bis zum 10.06.2014, 24 Uhr am Institutsserver hochgeladen
haben, knnen ihr Beispiel nicht abgeben. Diese Studenten haben in Folge nicht mehr die Mglichkeit, die
bung der LVA im laufenden Semester erfolgreich abzuschlieen. Damit haben sie auch keine Mglichkeit,
zur LVA-Prfung anzutreten und diese im SS 2013 abzuschlieen!
Abgabe:
Die Abgabegesprche fr das erste Beispiel finden am 11.06.2014 und am 12.06.2014 statt (jeweils zwischen 13:00
und 17:00 Uhr: Den genauen Zeitpunkt knnen sie beim Upload auswhlen).
Allgemeine bungsinformation
Im Laufe des bungsteiles der LVA 384.061 Objektorientiertes Programmieren muss jeder Teilnehmer drei Beispiele ausarbeiten und abgeben. Zwei dieser drei Beispiel mssen positiv bewertet werden um die bung zu
bestehen und damit die Mglichkeit zu erhalten, zur Abschlussprfung anzutreten. Weitere Informationen zu
Vorlesung und bung finden sie im Web unter:
http://www.ict.tuwien.ac.at/lva/384.061/
Jeder Teilnehmer muss die Beispiele eigenstndig ausarbeiten. Bei der Abgabe jedes Beispiels gibt es ein kurzes
Abgabegesprch mit einem Tutor oder Assistenten. Diese Abgabegesprche bestehen aus
einem Test des Programms und Fragen dazu,
der Durchfhrung kleiner nderungen am Programm,
und theoretischen Fragen zu den jeweils in der bung behandelten Konzepten.
Um ein Beispiel abzugeben mssen Sie ihre Quellcode-Dateien in einem *.zip Archiv zusammenfassen und dieses
ber unser Upload Interface auf unseren Institutsserver hochladen. Bitte verwenden sie ausschlielich .zip-Dateien
(z.B., bsp1.zip) und keine anderen Archivformate!
Der Link zum Upload Interface ist
http://www.ict.tuwien.ac.at/lva/384.061/?ue_upload=
Verwenden sie keine packages um ihren Code zu strukturieren. Zum Zeitpunkt, wenn Sie ihr Beispiel
hochladen, muss ihr Code auf der Kommandozeile kompilieren (d.h., ohne IDE). Kommentieren Sie Ihre
Klassen und Methoden. Vergessen sie insbesondere nicht ihren Namen und ihre Matrikelnummer am Beginn jeder
Klasse anzufhren. Halten sie sich an die Java Code Conventions,
http://www.oracle.com/technetwork/java/codeconv-138413.html.
Die Software fr die LVA ist die Java Standard Edition (JDK Version 1.7). Diese finden sie unter
http://www.oracle.com/technetwork/java/javase/downloads/index.html.
Inhaltliche Fragen zu den Beispielen knnen sie im OOP Forum im TISS (http://tiss.tuwien.ac.at) posten. Hier
erhalten Sie am schnellsten Hilfe, da ihre Fragen durch andere Studierende, Tutoren oder Assistenten beantwortet
werden knnen.
Organisatorische Fragen zur LVA knnen Sie direkt an die Assistenten unter [email protected] richten.
Als Untersttzung fr die Programmierung der Beispiele empfehlen wir das Java Tutorial von Sun:
http://docs.oracle.com/javase/tutorial/
-
Objektorientiertes Programmieren VU, SS 2014 LVA 384.061
Institut fr Computertechnik Seite 2
Aufgabe: Implementierung einer Flugbuchungssoftware
Ziel:
bung zum Implementieren basierend auf vorgegebenen Sequenz- und Klassendiagrammen unter Benutzung von
Exception Handling und Polymorphismus.
Aufgabenstellung:
Anhand eines gegebenen Designs fr ein Buchungssystem einer Fluglinie soll eine entsprechende Implementierung
in Java erfolgen. Das Design ist durch Klassen- und Sequenzdiagramme in UML spezifiziert.
Die gegebenen Klassen und deren Methoden sind nicht nur als Anregung zu verstehen implementieren und verwenden Sie genau diese Klassen und Methoden entsprechend! Sie knnen auch weitere Klassen und
Methoden hinzufgen, sollten Sie welche bentigen. Implementieren Sie alle Vorgnge gem den angegebenen Sequenzdiagramme! Die Strichmnnchen in den Sequenzdiagrammen reprsentieren einen Benutzer, der Aufrufe ber das Userinterface initiiert.
Ein Grundgerst der fr das Beispiel notwendigen Java-Dateien finden Sie im gezippten Paket gemeinsam mit
dieser Angabe vervollstndigen Sie die Klassen und sorgen Sie dafr, dass Methoden sinnvolle Rckgabewerte liefern. Benutzen Sie Exception Handling, um ihr Programm absturzsicher zu machen!
Unsere Templates stellen Ihnen einen Basisumfang an Testdaten zur Verfgung. Sie knnen diese nach Belieben
erweitern! Software-Anforderungen:
Eine einfache Version eines Buchungssystems soll folgende Funktionalitt erfllen:
Eintragen eines Flugzeugs
Eintragen eines Passagiers
Eintragen eines Fluges
Buchung eines Fluges
Anzeigen aller Buchungen eines Fluges
Diese Funktionen sollte der Benutzer ber ein Textmen auswhlen knnen.
Beschreibung des Software Design: Beschreibung der Klassen
Controller: Diese Klasse enthlt die main(String[] args) Methode und verwaltet alle Daten Ihrer
Applikation, deren Flugzeuge (Vektor airplanes), Flge (Vektor flights), Tickets
(Vektor tickets), Angestellte (Vektor employees) und Passagiere (Vektor
passengers).
Airplane: Diese Klasse reprsentiert ein Flugzeug. Jedes Flugzeug hat Name (name), Typ (typ) und
eine gewisse Anzahl von Sitzpltzen (seats).
Flight: Ein Flug hat die Attribute flightNumber, origin, destination, flightDate,
departureTime, arrivalTime. Auerdem referenziert diese Klasse Tickets.
Address: Eine Adresse enthlt die Attribute street, zipCode, city und state.
Person: Diese Klasse reprsentiert eine Person mit den Attributen name und birthday.
Passenger: Diese Klasse erweitert Person und enthlt die Attribute status und id.
-
Objektorientiertes Programmieren VU, SS 2014 LVA 384.061
Institut fr Computertechnik Seite 3
Employee: Diese Klasse erweitert Person und enthlt die Attribute contractStart, salary und
id.
Steward: Diese Klasse erweitert Person.
Pilot: Diese Klasse erweitert Person und enthlt die Attribute planetypes und status.
Ticket: Diese Klasse reprsentiert ein Ticket, die sich auf einen bestimmten Passagier (Passenger)
und den gebuchten Flug (Flight) bezieht. Zustzlich enthlt diese Klasse die Attribute
price und number.
UserInterface: Dieses stellt Methoden fr die Interaktion mit dem Benutzer bereit. Das User Interface soll
textbasiert sein. ber das Men sollen folgende Punkte ausgewhlt werden knnen:
1 Add an airplane 2 Add a passenger 3 Add a flight 4 Book a flight 5 Display flight information 6 EXIT
Nach einer abgeschlossenen Aktion des Benutzers soll das Men erneut angezeigt werden
(Ausnahme: Option 6 - EXIT).
Anmerkung:
Eine Beschreibung der Methoden der jeweiligen Klassen finden Sie als Kommentar in den entsprechenden Java-
Dateien (gezippt gemeinsam mit dieser Angabe).
-
Objektorientiertes Programmieren VU, SS 2014 LVA 384.061
Institut fr Computertechnik Seite 4
Klassendiagramm
Gerichtete Assoziationen (Assoziationen mit einem Pfeil) im Klassendiagramm bedeuten, dass jene Klasse beim Pfeilursprung eine Referenz (in unserer Implementierung in einer
gekapselten Instanzvariable gespeichert) zur Klasse am Pfeilende besitzt. Fr mgliche Kardinalitten grer als eins (0..*) wird in unserer Implementierung die Referenz in einem Listentyp
(z.B. Vector) gespeichert.
Abbildung 1: Klassendiagramm
-
Objektorientiertes Programmieren VU, SS 2014 LVA 384.061
Institut fr Computertechnik Seite 5
Beschreibung der Vorgnge: Option auswhlen:
Der Benutzer whlt eine Operation des textbasierten Mens aus. Implementieren Sie diese Interaktion gem der
Spezifikation in Abbildung 2.
Vorbedingung: Das System luft.
Nachbedingung: Der Benutzer hat eine Operation ausgewhlt.
Abbildung 2: Sequenzdiagramm fr den Vorgang Operation auswhlen
-
Objektorientiertes Programmieren VU, SS 2014 LVA 384.061
Institut fr Computertechnik Seite 6
Flugzeug eintragen (Add an airplane):
Dem Buchungssystem wird ein neues Flugzeug hinzugefgt (zuweisen von Flugzeugtyp, Name und Anzahl der
Sitzpltze), welches spter einem Flug zugeordnet wird. Implementieren Sie diese Interaktion gem der
Spezifikation in Abbildung 3.
Nachbedingung: Ein neues Flugzeug wurde angelegt.
Abbildung 3: Sequenzdiagramm fr den Vorgang Flugzeug eintragen
-
Objektorientiertes Programmieren VU, SS 2014 LVA 384.061
Institut fr Computertechnik Seite 7
Passagier eintragen (Add a passenger):
Dem Buchungssystem wird ein neuer Passagier hinzugefgt. Implementieren Sie diese Interaktion gem der
Spezifikation in Abbildung 4.
Nachbedingung: Ein neuer Passagier wurde angelegt.
Abbildung 4: Sequenzdiagramm fr den Vorgang Passagier eintragen
-
Objektorientiertes Programmieren VU, SS 2014 LVA 384.061
Institut fr Computertechnik Seite 8
Flug eintragen (Add a flight):
Dem Buchungssystem wird ein Flug hinzugefgt. Implementieren Sie diese Interaktion gem der Spezifikation in
Abbildung 5.
Nachbedingung: Ein neuer Flug wurde angelegt.
Abbildung 5 - Sequenzdiagramm fr den Vorgang "Flug eintragen"
-
Objektorientiertes Programmieren VU, SS 2014 LVA 384.061
Institut fr Computertechnik Seite 9
Flug buchen (book a flight):
Ein Flug fr einen bestimmten Kunden wird gebucht (d.h., ein Ticket erstellt). Aus Listen whlt der Benutzer einen
Kunden sowie einen Flug. Vor dem Anlegen einer neuen Buchung muss geprft werden, ob der Flug berbucht ist.
Dies knnen Sie in der Methode Flight.isOverbooked() lsen, indem Sie prfen, ob die Anzahl der
bestehenden Buchungen (java.util.Vector stellt zur Abfrage die Methode size() zur Verfgung) kleiner
als die Anzahl der Sitzpltze ist. Implementieren Sie diese Interaktion gem der Spezifikation in Abbildung 6.
Vorbedingungen: Vor dem Anlegen eines neuen Tickets mssen Kunden und Flge bereits existieren.
Nachbedingung: Eine neue Buchung wurde angelegt (d.h., ein Ticket erstellt).
Abbildung 6: Sequenzdiagramm fr den Vorgang Flug buchen
-
Objektorientiertes Programmieren VU, SS 2014 LVA 384.061
Institut fr Computertechnik Seite 10
Anzeigen von Fluginformationen (Display flight information):
Ein bestimmter Flug (sowie alle verfgbaren Flugdaten) und alle dazugehrigen Buchungen (Namen der Kunden)
werden angezeigt. berschreiben Sie hierfr die toString() Methode in der Klasse Flight und implemen-
tieren Sie diese Interaktion gem der Spezifikation in Abbildung 7.
Vorbedingungen: Es mssen bereits Flge und Buchungen existieren.
Nachbedingung: Flugdaten wurden ausgegeben.
Abbildung 7: Sequenzdiagramm fr den Vorgang Fluginformationen anzeigen