Difference between revisions of "Java - OOP 1"
Line 6: | Line 6: | ||
Zum Speichern kannst du gerne eine [Liste](https://docs.oracle.com/javase/7/docs/api/java/util/List.html) verwenden. | Zum Speichern kannst du gerne eine [Liste](https://docs.oracle.com/javase/7/docs/api/java/util/List.html) verwenden. | ||
⚠️ Ziel ist es nicht in der Main Methode den Person-Konstruktor aufzurufen und diese Personen der Personenverwaltung zu übergeben! Stattdessen sollte die Personenverwaltung eine Methode `createPerson` bieten über die Personen erstellt werden können | ⚠️ Ziel ist es nicht in der Main Methode den Person-Konstruktor aufzurufen und diese Personen der Personenverwaltung zu übergeben! Stattdessen sollte die Personenverwaltung eine Methode `createPerson` bieten über die Personen erstellt werden können<br> | ||
'''WICHTIG: Diese Methoden schreiben wir nur zur Übung. Das bedeutet NICHT, dass du in Zukunft keine Konstruktoren verwenden sollst sollst.''' | '''WICHTIG: Diese Methoden schreiben wir nur zur Übung. Das bedeutet NICHT, dass du in Zukunft keine Konstruktoren verwenden sollst sollst.''' | ||
Revision as of 13:37, 23 March 2022
Tag 1
Objektorientierung
Aufgabe: Personenverwaltung
Modelliere und Implementiere einen Personenverwaltung! Die Klasse Personenverwaltung soll die Möglichkeit bieten Personen anzulegen und Personen zu löschen. Zum Speichern kannst du gerne eine [Liste](https://docs.oracle.com/javase/7/docs/api/java/util/List.html) verwenden.
⚠️ Ziel ist es nicht in der Main Methode den Person-Konstruktor aufzurufen und diese Personen der Personenverwaltung zu übergeben! Stattdessen sollte die Personenverwaltung eine Methode `createPerson` bieten über die Personen erstellt werden können
WICHTIG: Diese Methoden schreiben wir nur zur Übung. Das bedeutet NICHT, dass du in Zukunft keine Konstruktoren verwenden sollst sollst.
Personen besitzen verschiedene Eigenschaften u.a. Vorname, Nachname, Geburtsdatum, Adresse, Geschlecht.
Die Klasse Personenverwaltung soll mehrere `create` Methoden zur Erstellung von Personen bieten:
- Eine Person die lediglich mit Vornamen und Nachnamen erstellt wird
- Eine Person die mit allen Werten erstellt wird
- Eine Person die mit Namen, Geschlecht und Geburtstdatum erstellt wird
Versuch für die Abbildung des Geschlechts ein [Java Enum](https://www.w3schools.com/java/java_enums.asp) zu verwenden. Eine Adresse hat vermutlich auch ihre eigene Klasse verdient da sie aus PLZ, Ort, Straßenname und Hausnummer besteht.
⚠️ Vergiss nicht auf die Unit Tests
Aufgabe: verkettete Liste
Wie auch Arrays ist die verkettete Liste eine lineare Datenstruktur, allerdings besteht die verkettete Liste aus einzelnen Elementen (Nodes) die durch Zeiger miteinander verbunden sind.
Um die Liste zu implementieren benötigst du 2 Klassen. Die Klasse Node (im Bild A, B, ..) hat ein Attribut value (z.B.: vom Typ String) und einen Zeiger vom Typ Node auf das nächste Element. Die zweite Klasse ist die Liste selbst. Hier implementieren wir alle Funktionen die unsere Liste haben soll. Zumindest brauchen wir add, remove, size, printList und get.
Für diese Aufgabe benötigst du KEINE anderen Datenstrukturen (Arrays, ArrayList, etc.).
Bonus: Du kannst deine Liste mit Generics(https://www.geeksforgeeks.org/generics-in-java/) implementieren, sodass der Typ des gespeicherte Wertes value, beim erstellen der Liste dynamisch angegeben werden kann.
Aufgabe: doppelt verkettete Liste
Eine doppelt verkettete Liste ist Reihe von Elementen (auch Knoten/Nodes genannt), die durch zwei Zeiger miteinander verbunden sind. Zusätzlich zu einem Zeiger, der auf das nächste Element zeigt gibt es einen, der auf das vorhergehende Element zeigt. Eine doppelt verkettete Liste kann man also in beide Richtungen durchlaufen. Die Operationen auf einer doppelt verketteten Liste sind analog zu denen einer einfach verketteten Liste.
Folgene Funktionalität sollte unsere Liste zumindest haben:
appendNode addNode(index) printList printListReverse listLength seekList seekListReverse deleteNode(index)
Wie auch bei der einfach verketteten Liste kannst du gerne Generics verwenden.
Tag 2
Aufgabe: Personenverwaltung
Erweitere deine Personenverwaltung um Access Modifier und Datenkapselung https://wiki.streampy.at/index.php?title=Java_-_OOP_1#Personenverwaltung