Übung Softwareentwicklung 2 SS 2018
Übung 01: Klassen
Abgabetermin: 15. 3. 2018, 10:15
Name: Matrikelnummer:
Informatik:
G1(Prähofer) G2(Weninger) G3(Prähofer) G4 (Weninger) G5 (Löberbauer)
WIN:G1 (Khalil) G2 (Hummel) G3 (Khalil) G4 (Löberbauer)
Aufgabe Punkte abzugeben schriftlich abzugeben elektronisch korr. Punkte
Übung 1 24 Java-Programm,
Ausgabe eines Testlaufs
Java-Programm
Übung 01: Speiseplanverwaltung (24 Punkte)
Implementieren Sie die Speiseplanverwaltung für eine Mensa.
Das Programm soll für die Wochen in einem Jahr die Speisepläne der einzelnen Wochen verwalten können.
Man kann Wochenpläne anfügen und bei diesen dann die Menüs definieren (anfänglich soll der gesamte Jahresplan leer sein und die Wochenpläne sollen explizit angefügt werden).
Jede Woche ist gekennzeichnet durch die Wochennummer (Woche im Jahr). Im Wochenplan sind für die Wochentage Montag bis Freitag entweder zwei, ein oder kein Menü definiert (z.B. an Feiertagen gibt es kein Menü).
Ein Menü besteht aus einer Suppe und einem Hauptgericht (beide sind durch einfache Zeichenketten dargestellt).
Schritt 1) Öffentliche Schnittstelle
Gestalten Sie die öffentliche Schnittstelle (API) für die Speiseplanverwaltung. Überlegen Sie zuerst, welche Klassen öffentlich sichtbar sein und welche Datenzugriffe diese bereitstellen sollen. Dokumentieren Sie die öffentliche Schnittstelle in einem Textdokument. Dieses Dokument ist schriftlich abzugeben.
Hinweise:
Öffentlich werden wohl Klassen für Menü, für Wochenplan und für die Speiseplanverwaltung sein.
Überlegen Sie genau, welche Zugriffe Sie bereitstellen und die Schnittstellen dieser Methoden.
Halten Sie diese Klassen einfach.
Schritt 2) Implementierung
Überlegen Sie erst im zweiten Schritt die internen Strukturen zur Implementierung der Speiseplanverwaltung.
Überlegen Sie dann, wie die öffentliche Schnittstelle mittels der Implementierungsstrukturen umgesetzt werden kann. Achten Sie darauf, dass die internen Implementierungsstrukturen nicht öffentlich sichtbar sind.
Hinweise:
Überlegen Sie günstige Strukturen zur Repräsentation der Menüs für eine Woche und der Wochenpläne in der Speiseplanverwaltung.
Der Speiseplan kann die Wochenpläne für eine ganzes Jahr verwalten. Damit ist die Anzahl der Wochen fix und Sie können z.B. ein Array verwenden. Sie können aber auch mit einer dynamischen verketteten Liste von Wochenplänen arbeiten (vergleiche Musterbeispiel PhoneBook).
Arbeiten Sie mit package und private Sichtbarkeit und, wo möglich, mit final Feldern.
Übung Softwareentwicklung 2 SS 2018
Schritt 3) Testdaten und Testausgaben
In der Datei MenuSchedule.txt sind Testdaten enthalten. Lesen Sie die Testdaten und bauen Sie daraus einen Speiseplan mit den definierten Wochen 1 bis 4 auf.
Hinweise:
Im Download finden Sie eine Klasse menus.app.MenuApp mit einer main-Methode und einer Methode readSchedule, die die Daten aus der Datei unter Verwendung der Klasse In einliest. Es fehlen aber die Aufrufe zum Aufbau des Speiseplans. Sie können diese Methode verwenden oder sich daran orientieren.
Schreiben Sie dann eine Methode zum Ausgeben eines Wochenplans auf der Konsole. Verwenden Sie diese Methode, um die Wochenpläne bestimmter Wochen auszugeben (Einlesen der Wochennummern im Hauptprogramm). Zum Beispiel könnte ein Dialog mit einer Ausgabe des Wochenplans für Woche 2 wie folgt aussehen:
--- Nummer Woche eingeben (Ende mit 0): 2
Woche 2, 2018 Montag:
Menu 1: Bärlauchcremesuppe
Spaghetti Pomodoro mit Parmesan und Salat Dienstag:
Menu 1: Erdäpfelcremesuppe mit Pilzen
Germknödel mit Powidlfülle dazu Vanillesauce und Kompott Mittwoch:
Menu 1: Klare Hühnersuppe mit Profiterolen
Gebackenes Karfiol-Käselaibchen mit Tzatziki, Petersilerdäpfeln und Salat Donnerstag:
Menu 1: Gemüsesuppe 'Asia'
Pikante Wursthörnchen mit Salat von Roten Rüben Freitag:
Menu 1: Klare Gemüsesuppe mit Nudeln
Cremiger Rahmspinat mit Rührei und Rösti
--- Nummer Woche eingeben (Ende mit 0): 7
Kein Wochenplan für Woche 7 vorhanden
--- Nummer Woche eingeben (Ende mit 0): 0
Ende
Abzugeben ist:
Kurze Prosabeschreibung der öffentlichen Schnittstelle
Java-Programm
Ausgabe eines repräsentativeren Testlaufs