Objektorientierte Programmierung
LVA 185.162, VL 2.0, 2007 W
1. Übungsaufgabe
Themen:
Datenabstraktion, Klassenzusammenhalt, Objekt-Kopplung
Termine:
| Ausgabe: |
11.10.2007 |
| reguläre Abgabe: |
18.10.2007, 12:45 Uhr |
| nachträgliche Abgabe: |
25.10.2007, 12:45 Uhr |
Abgabeverzeichnis:
Aufgabe1
Programmaufruf:
java Test
Grundlage:
Erstes Kapitel des
Skriptums
Aufgabe
Welche Aufgabe zu lösen ist:
Schreiben Sie in Java ein Programm für eine einfache Lagerverwaltung
eines Supermarktes. Folgende Vorgänge sollen unterstützt werden:
- Aufnahme eines Produkts ins Sortiment: Das Produkt wird durch eine
aus zehn Großbuchstaben, Ziffern und Leerzeichen bestehende
Kurzbezeichnung eindeutig identifiziert. Es wird auch eine beliebig
lange Beschreibung des Produkts, der Verkaufspreis pro
Stück (in Cent) und die Stückzahl der Produkte im Lager
benötigt. Bei der Aufnahme eines Produkts ins Sortiment werden diese
Werte gesetzt.
- Änderung der Beschreibung, des Verkaufspreises, sowie der
Stückzahl (jeweils getrennt voneinander), wobei ein neuer Wert den
alten überschreibt.
- Relative Änderung der Stückzahl: Bei einer Lieferung wird die
Stückzahl entsprechend erhöht, bei einem Abgang vermindert.
- Abfrage aller gespeicherten Daten zu einem Produkt.
- Auflistung aller Produkte im Sortiment.
Folgende Bedingungen sollen stets erfüllt sein, und ihre Einhaltung ist an
geeigneten Stellen zu überprüfen:
- Kurzbezeichnungen von Produkten sind immer eindeutig.
- Der Lagerbestand darf nie unter null sinken.
- Der Verkaufspreis muss immer größer null sein.
- Liefermengen und Abgänge müssen vernünftige Werte haben.
Die gesamte Lagerverwaltung ist als Teil eines größeren
Programmpaketes vorgesehen. Ihre Methoden werden von anderen Programmteilen
(und nicht direkt von einer Person) verwendet. Daher brauchen Sie keine
Benutzerschnittstelle entwickeln.
Zu Beginn des Programmlaufs ist das Lager leer. Bei Programmbeendigung
können Daten verloren gehen, das heißt, die Daten brauchen nicht
permanent gespeichert zu werden. Verwenden Sie zur Vermeidung von Rundungsfehlern
ganze Zahlen (keine Fließkommazahlen). Geben Sie geeignete
Fehlermeldungen aus, falls notwendige Bedingungen nicht erfüllt sind.
Alle Ausgaben (Fehlermeldungen genauso wie Ergebnisse von Auflistungen und
Abfragen) sollen in die Standardausgabe geschrieben werden.
Schreiben Sie eine Klasse Test
zum Testen Ihrer Lösung. Durch
Aufruf von java Test
sollen alle wichtigen Teile der Lagerverwaltung
zumindest einmal durchlaufen werden. Diese Tests sollen nicht interaktiv sein
(das heißt, der Programmlauf soll keine Benutzereingaben verlangen).
Sorgen Sie dafür, dass die Tests möglichst klar von der eigentlichen
Lagerverwaltung getrennt sind.
Wie die Aufgabe zu lösen ist:
Lesen Sie das erste Kapitel des Skriptums. Achten Sie besonders auf
Datenabstraktion: Alles was zusammen gehört soll in einem Objekt
gekapselt sein. Auf Daten soll nur über dafür vorgesehene Methoden
zugegriffen werden. Unnötige Zugriffe und unnötige Zugreifbarkeit
von Daten und Methoden sind zu vermeiden. Achten Sie auch auf hohen
Klassenzusammenhalt und schwache Objektkopplung. Die Lösung soll
möglichst einfach sein und keine unnötige Funktionalität haben.
Verwenden Sie (außer den Standardbibliotheken) keine vorgefertigten
Programmteile.
Wie Account und Gruppen-Verzeichnis zu verwenden sind:
Bei der Anmeldung zur Lehrveranstaltung haben Sie (jeder Teilnehmer) einen
eigenen Account auf dem Übungsrechner g0 bekommen. In diesem Account
können Sie unabhängig von anderen Übungsteilnehmern (auch
unabhängig von anderen Mitgliedern Ihrer Gruppe) arbeiten.
Das Verzeichnis
Gruppe
gehört jedoch allen Gruppenmitgliedern
gemeinsam. Legen Sie alle Daten, die von den Gruppenmitgliedern gemeinsam
(und nicht nur von Ihnen persönlich) verwendet werden, in diesem
Verzeichnis ab. Das gilt insbesondere für Lösungen von Aufgaben.
Es kann pro Gruppe und Aufgabe nur eine gemeinsame Lösung geben, auf die
sich die Gruppenmitglieder einigen müssen. Die Einigung auf eine
gemeinsame Lösung ist Teil der Aufgabe. Es bleibt der Gruppe
überlassen, wie die Arbeit aufgeteilt wird, solange die Aufteilung
einigermaßen gerecht ist (wird beim Abgabegespräch
überprüft).
Was im Hinblick auf die Abgabe zu beachten ist:
Schreiben Sie Ihre Lösung in das bereits existierende Verzeichnis
Gruppe/Aufgabe1
. Das Programm soll von diesem Verzeichnis aus durch
java Test
aufrufbar sein; das heißt, die Methode
main
soll
in der Klasse
Test
in der Datei
Test.java
(die Sie selbst
schreiben) stehen. Schreiben Sie nicht mehr als eine Klasse in jede Datei.
Das Verzeichnis soll zum Zeitpunkt der Abgabe und der nachträglichen
Abgabe alle
.java
-Dateien enthalten, die Sie für Ihre Lösung
benötigen. Bitte entfernen Sie alle
.java
-Dateien, die nicht zur
Abgabe gehören. Dateien mit anderen Endungen werden bei der Beurteilung
nicht berücksichtigt. Verzichten Sie auf die Verwendung von Verzeichnissen
innerhalb von
Gruppe/Aufgabe1
. Stellen Sie sicher, dass ein Aufruf von
javac *.java
in
Gruppe/Aufgabe1
keine Fehlermeldungen liefert,
da Lösungen mit Syntaxfehlern in der Regel nicht beurteilt werden.
Wie Sie Kontakt mit dem Tutor aufnehmen:
Bitte wählen Sie ein Mitglied Ihrer Gruppe zur Kontaktperson. Die
Kontaktperson soll so bald wie möglich (jedenfalls noch vor dem
Abgabetermin) eine Mail an die Tutorin bzw. den Tutor (siehe
Gruppe/TUTOR
)
schicken und Folgendes mitteilen:
- Ihre Gruppennummer (siehe
Gruppe/GRUPPE
)
- die Kontaktperson Ihrer Gruppe (mit Kontaktadresse)
- eine Selbsteinschätzung der Java-Programmierkenntnisse für jedes
Gruppenmitglied:
- Anfänger = noch kaum mit Java in Berührung gekommen
- Ausgebildet = Java in einer Lehrveranstaltung, in einem Kurs oder in
der Schule gelernt
- Erfahren = selbständig kleinere Programme in Java entwickelt
- Experte = in einer Firma als Java-Entwickler gearbeitet oder
selbständig größere Java-Projekte durchgeführt
- eine Selbsteinschätzung der allgemeinen Programmierkenntnisse für
jedes Gruppenmitglied (wie oben, jedoch auf beliebige Programmiersprachen
bezogen, z.B. erfahrener C-Entwickler und Fortran-Experte)
- welche Gruppenmitglieder EPROG erfolgreich absolviert haben und welchen
EPROG (z.B. wegen HTL) angerechnet wurde
- welche Gruppenmitglieder zeitliche Einschränkungen z.B. wegen
Nebenbeschäftigung haben
- ob Probleme hinsichtlich der Zusammenarbeit in der Gruppe absehbar sind
- wie intensiv die Betreuung durch die Tutorin oder den Tutor sein soll
(vor allem bei der Lösung der zweiten Aufgabe):
- minimal: Tutor beurteilt Ihre Lösung und verlangt unbedingt
nötige Verbesserungen, belästigt Sie aber nicht weiter
- normal: Tutor macht (in der Regel per Mail und gegebenenfalls wiederholt)
Verbesserungsvorschläge zu Ihren Lösungen und weist auf gute und
schlechte Aspekte hin
- maximal: mehrere Treffen mit dem Tutor zur Besprechung bisheriger
Lösungsansätze und der weiteren Vorgehensweise
Durch Beantwortung dieser Fragen helfen Sie der Tutorin oder dem Tutor, Sie
richtig einzuschätzen. Die genaue Form der Betreuung wird nur durch die
Tutorin oder den Tutor bestimmt. Unabhängig von der Form der Betreuung
kann natürlich jedes Gruppenmitglied konkrete Fragen an die Tutorin oder
den Tutor richten.