Prof. Dr. Detlef Krömker Ashraf Abu Baker Robert-Mayer-Str. 10 60054 Frankfurt am Main Tel.: +49 (0)69798-24600 Fax: +49 (0)69798-24603 EMail: [email protected] Aufgabe 3. 1: Projektaufgabe (15) punkte Ziel dieser Aufgabe ist es, die Grundlagen für eine objektorientierte Datenbank für die Universität Frankfurt zu schaffen. Da die Aufgaben in den kommenden Übungsblättern darauf aufbauen, sollten Sie die Aufgabe möglichst vollständig lösen. Die Datenbank soll Informationen zum Personal und zu den Studierenden speichern. Die Klassen für die Realisierung der Universitätsdatenbank sollten derzeit auf 3 Pakete verteilt werden: Paket 1: universitydb.personal Paket 2: universitydb.students Paket 3: universitydb.util Ein Uni-Angehöriger (UniAngehoeriger.java) hat eigene persönliche Daten (personenDaten) (als Objektvariable vom Typ PersonenDaten, die entsprechende Klasse soll in PersonenDaten.java implemetiert werden) wie z.B. Geschlecht (geschlecht), Vorname (vorname), Nachname (nachname) und eine Wohnadresse (adresse) (Adresse.java). Eine Adresse besteht aus einer Straße (strasse), Straßennummer strassenNummer, PLZ (plz) und Ort (ort). Die korrespondierende Klasse des Uni-Angehörigen soll über eine statische Konstante namens universitaetName verfügen, die den Wert „Johann-Wolfgang Goethe Universität“ trägt und nur innerhalb des Paketes sichtbar ist. Ein Uni-Angehöriger kann ein Mitarbeiter (Mitrabeiter.java) oder ein Student (Student.java) sein. Sowohl Mitarbeiter als auch Student sind Unterklassen von UniAngehoeriger. Die Klasse Mitarbeiter soll nicht wie Student im Paket universitydb.students angelegt werden, sondern im Paket universitydb.personal. Ein Mitarbeiter unterscheiden sich von einem Studenten dadurch, dass er eine lange Personalnummer (personalNummer) hat. Nur die Mitglieder des Paketes universitydb.personal dürfen diese Nummer sehen. Ein Mitarbeiter gehört zu einer Abteilung (abteilung). Ein Student hat, im Gegensatz zu einem Mitarbeiter, eine Matrikelnummer (matrikelnummer) und begann sein Studium in einem bestimmten Jahr (studienBeginn) z.B. 2006 entweder im WS oder im SS (startSemester) und ein Studienfach (studienfach) studieren. Tutoren (Tutor.java) sind ebenfalls Studenten, die eine Liste von Veranstaltungen (String [] veranstaltungen) betreuen. Sie liegen ebenfalls in universitydb.students. Dozenten (Dozent.java) sind Mitarbeiter, die an einem Lehrstuhl arbeiten (lehrstuhl). Sie haben Titel (titel) (z.B. Dr. Prof. Dr., etc.). Ein wissenschaftlicher Mitarbeiter (WiMi.java) ist ebenfalls ein Mitarbeiter und hat ein Promotionsthema. Legen Sie in ihrem Projekt die o.g. 3 Pakete an. Erstellen Sie für Uni-Angehöriger, Mitarbeiter, Dozent, wissenschaftlicher Mitarbeiter, Student, Tutor, Personendaten und Adresse jeweils eine Klasse unter Berücksichtung der oben beschriebenen Vererbungshierarchie. Achten sie darauf die Modifikatoren der einzelnen Attribute geeignet zu wählen. Die Klassen PersonenDaten und Adresse sollen im Paket universitydb.util angelegt werden. Implementieren Sie für die Klassen passende Methoden. Z.B. soll für Student u.a. eine Methode getSemesterZahl(aktuellesJahr, aktuellesSemester) implementiert werden, die Semester Anzahl abhängig vom aktuellen Jahr und Semester berechnet. Die Klasse UniAngehoeriger soll ein Attribut namens durchWahl speichern, das für Studenten und Tutoren nicht sichtbar ist. Aufgabe 3.2: Impelmentieren Sie ein Klasse namens TempretureConverter.java, die über eine statische Methode namens convetTempreture(temp,unit) verfügt. unit bezeichnet dabei die Temperatur entweder in Fahrenheit oder in Celsius. Die Methode soll die Temperatur entsprechend der unit-Eingabe gemäß den Formeln Celsius = ((( temp × 9 ) / 5 ) + 32)° Fahrenheit bzw. Fahrenheit = ((temp - 32 ) × 5 / 9)° Celsius umrechnen und auf dem Bildschirm ausgeben. Testen Sie ihre Methode, indem Sie eine Klasse namens TempReader implementieren. TempReader verfügt über eine statische Methode, die den Benutzer auffordert die Temperatur und die Einheit einzugeben und diese an convetTempreture() übergibt. Hinweis: Verwenden das unten stehende Beispiel in Kombination mit der Klasse java.util.StringTokenizer (http://java.sun.com/j2se/1.6.0/docs/api/). import java.io.*; public class Test3 { public static void main(String[] args) { try { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); System.out.print("Who are you, who-who? "); System.out.println("Hello " + in.readLine()); in.close(); } catch (IOException ioe) { ioe.printStackTrace(); } } }