Woche 9: Objektorientierung II
In der letzten Woche haben wir gesehen, dass wir dank Objektorientierung eigene Datentypen definieren können. Dadurch können wir unser eigenes Vokabular aufbauen, um Programme zu organisieren. In dieser Woche werden wir Konstrukte kennenlernen, mit denen wir Datentypen in Hierarchien anordnen können. Damit können wir eine Hierarchie von Konzepten modellieren. Zudem werden wir besprechen, wie man mittels Interfaces die Definition der Operationen eines Datentyps von der Implementation trennen kann, und somit mehrere verschiedene Implementationen, die aber dieselbe Schnittstelle aufweisen, abbilden können.
Theorie
Selbststudium
Bitte arbeiten Sie die folgenden Lerneinheiten vor den Präsenzveranstaltungen durch.
- Interfaces
- Abstrakte Klassen und Vererbung
- Polymorphismus und dynamische Bindung
- Die Java Klassenhierarchie
- Die equals und toString Methode
Präsenzveranstaltung Donnerstag
In der Präsenzveranstaltung werden wir die im Selbststudium erarbeiteten Konzepte anhand eines Jupyter-Notebooks vertiefen und praktisch anwenden.
Praxis
Präsenzveranstaltung Freitag
Wir besprechen praktische Aspekte der in der Theorie behandelten Themen, gehen auf Java-spezifischen Feinheiten ein und wenden diese in der Programmierumgebung an.
Übungen - In der IDE VSCode
Kernaussagen
- Interfaces definieren Operationen, die ein Datentyp, welcher dieses Interface implementiert, zur Verfügung stellen muss.
- Interfaces können überall dort verwendet werden, wo ein (Referenz-) Datentyp erwartet wird.
- Abstrakte Klassen sind Klassen, die als Abstract definiert sind. Von diesen können keine Instanzen erstellt werden und es müssen nicht alle Methoden implementiert sein.
- Durch Vererbung, werden Datentypen in Hierarchien angeordnet.
- Polymorphismus besagt, dass ein Datentyp zur Laufzeit Werte annehmen kann, die von einem beliebigen Subtyp des entsprechenden Datentyps sind
- Dynamische Bindung bewirkt, dass die auf einem Objekt aufgerufene Methode anhand dem Laufzeittyp des Wertes und nicht anhand des statischen Typs ausgewählt wird.
- Mittels überschreiben der
equals
Methode und dertoString
Methode können wir definieren wie Objekte verglichen, respektive als String repräsentiert werden.
Lernziele
Die Studierenden
- können die Funktion und Wichtigkeit von Interfaces erklären.
- können Interfaces in eigenen Programmen einsetzen.
- können mittels abstrakten Klassen Hierarchien von Datentypen abbilden.
- können die Konzepte Polymorphismus und dynamische Bindung anhand von Beispielen erklären.
- können für ein gegebenes Codefragment entscheiden, welche Methode bei einem Methodenaufruf aufgerufen wird.
- wissen, wie man Methoden einer Superklasse überschreibt und können einen typischen Anwendungsfall nennen.
- können eine sinnvolle Vergleichsoperation für Objekte mittels der
equals
Methode definieren. - kennen die Datenstruktur verkettete Liste und können diese selbst implementieren.