Übungen zu Softwareentwicklung 1, WS 2007/08 Name: ________________________________________ Abzugeben bis: Übung 6 Mi, 05.12.2007 12:00 Matrikelnummer: _______________________________ Bearbeitungsdauer in Stunden: _______ Nummer d. Übungsgruppe: ________________________ Name des Tutors: _________________ Name d. Übungsleiters: ___________________________ Punkte: _________________________ Aufgabe 1: Modellierung eines Autos 8 Punkte Implementieren Sie die Klassen Car, Tire und Engine aus der realen Welt in Java. Jede dieser Klassen soll die folgenden Attribute und Methoden aufweisen, welche im Objektdiagramm unten angeführt sind. Überlegen Sie sich, wie Sie die Referenzierung der drei Klassen in Ihrem Programm realisieren. Tire Objektdiagramm: Car brand: String type: String price: double weight: int tires: Tire[] engine: Engine getPrice(): double getTaxedPrice(): double getSumPrice(): double getTaxedSumPrice(): double getWeight(): int getSumWeight(): int toString(): String summerTire: boolean price: double year: int … weight: int getPrice(): double getTaxedPrice(): double getWeight(): int toString(): String Engine cylinder:int producer: String price: double weight: int getPrice(): double getTaxedPrice(): double getWeight(): int toString(): String Schreiben Sie ein Testprogramm, das Ihre festgelegte Objektstruktur anlegt (inkl. Referenzen zwischen den Objekten) und bei der Erstellung eines Autos mit Hilfe eines Konstruktors alle Variablen initialisiert. Beachten Sie in Ihrem Programm, dass nur ein Auto angelegt werden kann, falls alle erforderlichen Werte vom Benutzer korrekt eingegeben wurden. Weiters sollen die Methoden ihrer drei Klassen auf korrekte Funktionsweise getestet werden. Hinweis: Bei dem vom Benutzer einzugebenden Preis für ein Auto soll es sich um den Nettobetrag handeln. Die Methode getPrice() in der Klasse Car soll also beispielsweise nur den Nettopreis des Autos ohne Reifen und Motor zurückliefern. Die Methode getTaxedPrice() hingegen soll den Bruttopreis des Autos berechnen (zB: durch Multiplikation des Preises mit 1,2). Aufgabe 2: Bibliotheksverwaltung 16 Punkte Eine kleine Bibliothek benötigt ein System zum Verwalten von Buchentleihungen. Setzen Sie ein solches System um indem Sie folgende Klassen erstellen: Customer Book Lending Library Klasse Customer Für einen Kunden soll es möglich sein, dessen Name, Kundennummer, Adresse und dessen Telefonnummer zu speichern. Die Daten eines Kunden sollen bei der Erstellung eines neuen Kunden festgelegt werden können. Klasse Book Für jedes Buch soll es möglich sein, dessen Titel, Autor, ISBN und Entlehnpreis (pro Tag) zu speichern. Ihre Klasse soll einen Konstruktor enthalten mit dem alle Attribute dieser Klasse gesetzt werden. Bieten Sie über eine Methode die Möglichkeit an, dass der Entlehnpreis eines Buches geändert werden kann. Klasse Lending Für jede Entlehnung soll die Klasse Lending das Entlehnungsdatum, die Kundennummer und die ISBN des entlehnten Buches aufweisen. Die Klassen Customer, Book und Lending sollen alle: geeignete Konstruktoren aufweisen mit denen die Werte gesetzt werden können, eine Methode toString() beinhalten mit der alle Informationen eines Kunden ausgegeben werden können und „getter“- und „setter“-Methoden enthalten mit denen die Werte der Attribute gesetzt und abgerufen werden können. Klasse Library Die Klasse Library soll zur Verwaltung der Kunden, Bücher und Entlehnungen der Bibliothek herangezogen werden. Zur Speicherung der Objekte dieser Klassen sollen Sie Arrays verwenden. Dabei können Sie eine fixe Gröβe vordefinieren. Konkret soll die Klasse Library folgende Funktionalitäten anbieten: Es sollen neue Bücher und Kunden in die Bibliothek hinzugefügt und gelöscht werden können. Es sollen weiters Methoden angeboten werden mit der Entlehnung vorgenommen werden können, der Entlehnstatus eines Buches ermittelt werden kann und der Entlehner eines Buches ermittelt werden kann. Zur Rückgabe der Kosten für Entlehnungen soll eine Methode implementiert werden, welche die Kosten von einem definierten Ausleihdatum bis zum aktuellen (heutigem) Datum ermittelt (Entlehnpreis * Entlehndauer in Tage). Anmerkungen: Bedenken Sie, die Parameter der Methoden auf Gültigkeit zu überprüfen und dies entsprechend zurück zu melden ist. Falsche Initialisierungen sollen durch Fehlermeldungen an den Benutzer gemeldet und korrigierbar sein. Zur Hilfestellung der erforderlichen Implementierung liegt Ihnen eine Java Dokumentation (Ordner: JavaDoc_Aufgabe2) bei. Verwenden Sie die definierten Variablennamen und Methodenschnittstellen bei Ihrer Implementierung und achten Sie auf die Erfüllung der definierten Funktionsweise der jeweiligen Methoden! Zum Testen der Funktionsweise Ihrer implementierten Klassen steht Ihnen ein entsprechendes Verwaltungsprogramm (LibraryManagement.java) zur Verfügung. Vervollständigen Sie dieses Programm in den dementsprechenden Codezeilen (gekennzeichnet mit TODO).