Skip to main content

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.

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 der toString 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.