Java - OOP 1

From Coders.Bay Wiki
Jump to navigation Jump to search

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 mithilfe des Konstruktors der Person 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.

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.
Linkedlist.png
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.).
Hier ein einfaches Beispiel für die Grundstruktur: https://www.geeksforgeeks.org/linked-list-set-1-introduction/

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.

2022-03-21 11 54 55-double linked lis at DuckDuckGo — Mozilla Firefox.png

Folgene Funktionalität sollte unsere Liste zumindest haben:

append
add(index)
printList
printListReverse
listLength
seekList
seekListReverse
delete(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