|
|
 |
 |
Übungsaufgabe 1: Library - Erste Schritte
Zweck dieser Aufgabe ist die Einführung in die Programmiersprache Java und
deren Entwicklungsumgebung. Es wird das Grundgerüst für eine
Bibliotheksverwaltung mit Datenbank und Anwendungsschnittstelle erstellt, das
in den folgenden Aufgaben zu einer verteilten, mehrbenutzerfähigen Anwendung
ausgebaut werden soll.
In dieser ersten Aufgabe sollen Klassen für Medienobjekte (Buch, CD,
Zeitschrift) erstellt, sowie eine einfache Datenbank implementiert werden,
welche diese Objekte verwaltet. Die Teilaufgaben a) bis d) werden die
Entwicklung einer Lösung schrittweise begleiten.
Teilaufgabe a)
Erstelle ein Interface Item, das die gemeinsamen und Methoden
aller Medienobjekte definiert. Im Hinblick auf spätere Aufgaben sind
mindestens folgende Methoden vorzusehen:
String getTitle und
void setTitle(String title)
Zum Setzen und Abfragen des Titels.
void borrow() und void giveback()
Objekt ausleihen bzw. zurückgeben. Falls es bereits verliehen ist,
soll eine AlreadyBorrowedException geworfen werden.
void incLendingcount() und
int getLendingcount()
Zur Verwaltung eines Ausleih-Zählers.
Teilaufgabe b)
Erstelle drei Klassen Book, Journal und
CD, die alle das Interface Item implementieren. Ein
Konstruktor soll die Initialisierung mit einem Titel erlauben.
Teilaufgabe c)
Schreibe die Datenbank-Klasse LibraryDBImpl zur Verwaltung der
Item-Objekte. Dazu ist ein Interface LibraryDB mit mindestens
folgenden Methoden zu implementieren:
int register(Item item)
Fügt das Item-Objekt der Datenbank hinzu und gibt eine eindeutige ID
zurück.
Item get(int id)
Liefert das Kopie des Item-Objekts mit der entsprechenden ID
zum lesenden Zugriff zurück.
Item lock(int id)
Wie get(), jedoch für schreibenden Zugriff. Für einen
erneuten Aufruf von lock() muss das Objekt mit
unlock() wieder freigegeben werden.
void unlock(Item item)
Gibt das Objekt wieder frei.
Eine mögliche Implementierung könnte darin bestehen, Item-Objekte in zwei
verschiedenen Hashtabellen speichern, eine für gesperrte und eine für
zugreifbare Objekte.
Im Fehlerfall sollen geeignete Exceptions generiert werden (z.B.
AlreadyExistsException, NotFoundException und
AlreadyLockedException).
Teilaufgabe d)
Schreibe eine Klasse LibraryFrontend, die als Schnittstelle
zwischen dem Benutzer und der Datenbank dient und mindestens folgende Methoden
aufweist:
void registerItem(String classname, String title)
Fügt ein neues Objekt der Datenbank hinzu. Durch
classname wird der Typ des Objekts angegeben
(Book, CD oder Journal).
void borrowItem(String title)
Leiht das Objekt aus (Ausleih-Zähler erhöhen!).
int returnItem(String title)
Das Objekt wird wieder zurückgegeben. Der Rückgabewert entspricht dem
Ausleih-Zähler.
Fehler sind durch geeignete Exceptions auszudrücken (z.B.
NotFoundException, AlreadyExistsException und
AlreadyBorrowedException).
Die Kommunikation mit dem Benutzer soll über eine Eingabemaske ähnlich einer
Shell realisiert werden. (Hinweis: Um einen String in Teilstrings zu zerteilen
bietet sich ein Objekt vom Typ java.util.StringTokenizer an). Zum
Registrieren eines neuen Buches könnte z.B. folgender Aufruf dienen:
> register Book "Operating Systems"
Bearbeitung: bis zum 06.11.2003/18:00 Uhr
Alle Dateien sollen im Verzeichnis
/proj/i4mw/loginname/aufgabe1/ abgelegt werden.
|
 |
 |
|