Java-Übungsblatt 6 - Universität · PDF filePE, Teil Java – Übung Prof....

2
PE, Teil Java – Übung Prof. Dr. J. Ludewig, H. Röder Universität Stuttgart, WS 2008/2009 1 / 2 Java-Übungsblatt 6 Collections, Serialisierung In den Aufgaben dieses Übungsblatts sollen Sie die Grundfunktionalität einer Geburtstagsver- waltung implementieren. Die einzelnen Aufgaben bauen aufeinander auf, Sie benötigen für die nächste Aufgabe also stets die Lösung der vorherigen Aufgabe. Aufgabe 1 Personen und Geburtstage (Comparable) Erstellen Sie eine Klasse Person, die eine Person repräsentiert. Eine Person soll über Vor- und Nachnamen sowie über einen Geburtstag verfügen. Verwenden Sie Ihre Klasse Geburtstag von Übungsblatt 5. Person-Objekte sollen verglichen und sortiert werden können: Personen werden alphabetisch nach Nachnamen, dann alphabetisch nach Vornamen und schließlich aufsteigend nach ihrem Alter sortiert. Sind Nachname, Vorname und Geburtstag zweier Personen gleich, so werden die Personen als „gleich“ angesehen. Aufgabe 2 Geburtstagskalender (Collections) Erstellen Sie eine Klasse GeburtstagsKalender, die eine sortierte Menge von Person-Ob- jekten als „Geburtstagskalender“ verwaltet und folgende Methoden anbietet. GeburtstagsKalender() Konstruktor: erzeugt einen neuen, leeren Geburtstagskalender. boolean fuegeHinzu(Person p) Fügt die Person zum Geburtstagskalender hinzu und liefert true zurück. Wenn die Person bereits im Geburtstagskalender enthalten ist, wird der Geburtstagskalender nicht verändert und false zurückgegeben. boolean entferne(Person p) Entfernt die Person aus dem Geburtstagskalender und liefert true zurück; falls die Person nicht im Geburtstagskalender enthalten ist und somit nicht daraus entfernt werden kann, wird false zurückgegeben. Collection<Person> personen() Liefert die Datenstruktur zurück, in der die Personen sortiert gespeichert sind. Person naechsterJubilar() Liefert die Person zurück, die (von heute an gerechnet) als nächstes Geburtstag hat. Collection<Person> jubilare(int monat, int tag) Liefert die Personen zurück, die am angegebenen Datum in einem beliebigen Jahr geboren wurden (monat zwischen 1 und 12).

Transcript of Java-Übungsblatt 6 - Universität · PDF filePE, Teil Java – Übung Prof....

Page 1: Java-Übungsblatt 6 - Universität · PDF filePE, Teil Java – Übung Prof. Dr. J. Ludewig, H. Röder Universität Stuttgart, WS 2008/2009 1 / 2 Java-Übungsblatt 6 Collections, Serialisierung

PE, Teil Java – Übung Prof. Dr. J. Ludewig, H. RöderUniversität Stuttgart, WS 2008/2009 1 / 2

Java-Übungsblatt 6Collections, Serialisierung

In den Aufgaben dieses Übungsblatts sollen Sie die Grundfunktionalität einer Geburtstagsver-waltung implementieren. Die einzelnen Aufgaben bauen aufeinander auf, Sie benötigen für die nächste Aufgabe also stets die Lösung der vorherigen Aufgabe.

Aufgabe 1 Personen und Geburtstage (Comparable)

Erstellen Sie eine Klasse Person, die eine Person repräsentiert. Eine Person soll über Vor- und Nachnamen sowie über einen Geburtstag verfügen. Verwenden Sie Ihre Klasse Geburtstag von Übungsblatt 5.

Person-Objekte sollen verglichen und sortiert werden können: Personen werden alphabetisch nach Nachnamen, dann alphabetisch nach Vornamen und schließlich aufsteigend nach ihrem Alter sortiert. Sind Nachname, Vorname und Geburtstag zweier Personen gleich, so werden die Personen als „gleich“ angesehen.

Aufgabe 2 Geburtstagskalender (Collections)

Erstellen Sie eine Klasse GeburtstagsKalender, die eine sortierte Menge von Person-Ob-jekten als „Geburtstagskalender“ verwaltet und folgende Methoden anbietet.

– GeburtstagsKalender()Konstruktor: erzeugt einen neuen, leeren Geburtstagskalender.

– boolean fuegeHinzu(Person p)Fügt die Person zum Geburtstagskalender hinzu und liefert true zurück. Wenn die Person bereits im Geburtstagskalender enthalten ist, wird der Geburtstagskalender nicht verändert und false zurückgegeben.

– boolean entferne(Person p)Entfernt die Person aus dem Geburtstagskalender und liefert true zurück; falls die Person nicht im Geburtstagskalender enthalten ist und somit nicht daraus entfernt werden kann, wird false zurückgegeben.

– Collection<Person> personen()Liefert die Datenstruktur zurück, in der die Personen sortiert gespeichert sind.

– Person naechsterJubilar()Liefert die Person zurück, die (von heute an gerechnet) als nächstes Geburtstag hat.

– Collection<Person> jubilare(int monat, int tag)Liefert die Personen zurück, die am angegebenen Datum in einem beliebigen Jahr geboren wurden (monat zwischen 1 und 12).

Page 2: Java-Übungsblatt 6 - Universität · PDF filePE, Teil Java – Übung Prof. Dr. J. Ludewig, H. Röder Universität Stuttgart, WS 2008/2009 1 / 2 Java-Übungsblatt 6 Collections, Serialisierung

PE, Teil Java – Übung Prof. Dr. J. Ludewig, H. RöderUniversität Stuttgart, WS 2008/2009 2 / 2

Aufgabe 3 Geburtstagsverwaltung (Serialisierung)

Programmieren Sie eine Klasse GeburtstagsVerwaltung, die zur Verwaltung von Geburts-tagskalendern (Objekte des Typs GeburtstagsKalender aus Aufgabe 2) dient. Die Klasse soll im Wesentlichen folgende Funktionalität anbieten:

– Export eines vollständigen Geburtstagskalenders in eine (frei wählbare) Datei. – Import eines vollständigen Geburtstagskalenders aus einer (frei wählbaren) Datei.

Allgemeine Hinweise

✔ Typisieren Sie generische Klassen und Schnittstellen, wo immer dies möglich ist. Sie erhalten Typsicherheit und ersparen sich manuelle Typecasts.

✔ Die Übungsaufgaben werden in der Vorlesung nur kurz besprochen. Versuchen Sie, aufkommende Fragen direkt im Rahmen der betreuten Programmierübung zu klären – dazu ist die Übung da!

Betreute Java-Übung im GS-Pool am 10. Dezember 2008 um 14 Uhr