Friedrich-Alexander-Universität UnivisSuche FAU-Logo
Techn. Fakultät Willkommen am Department Informatik FAU-Logo
Logo I4
Lehrstuhl für Informatik 4
Middleware
 
  Vorlesung
  Literatur
  Skript
  Übungen
  Scheine, Prüfungen
Aufgaben:
 Aufgabe 1
 Aufgabe 2
 Aufgabe 3
 Aufgabe 4
 Aufgabe 5
 Aufgabe 6
 Aufgabe 7
Department Informatik  >  Informatik 4  >  Lehre  >  WS 2003/04  >  Middleware  >  Übung  >  Aufgabe1

Ü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.
  Impressum   Datenschutz Stand: 2003-10-30 12:23   MF, WE