Skip to main content

Woche 7 - Objektorientierte Programmierung

In dieser Woche beginnen wir eine neuen, grösseren Themenblock, nämlich Objektorientierte Programmierung.

Bisher haben wir in dieser Vorlesung nur mit Datentypen gearbeitet, welche Java uns zur Verfügung gestellt hat. In dieser Woche besprechen wir, wie wir selber Datentypen definieren können.

Ähnlich wie wir Funktionen benutzt haben um Sequenzen von Anweisungen zu abstrahieren werden wir nun Klassen verwenden um zusammengehörige Daten zu einer grösseren Einheit zusammenzufassen. Werte dieser Klassen (also Instanzen der Datentypen) werden Objekte genannt. Diese Art der Datenorganisation mittels Klassen führt zu einer Art der Softwareentwicklung, die sich Objektorientierte Programmierung nennt.

Theorie

Selbststudium

Bitte arbeiten Sie folgenden Lerneinheiten vor den Präsenzveranstaltungen durch.

Literaturhinweise

Die oben beschriebenen Themen werden auch im Buch, Think-Java in Kapitel 9 und 10 (Immutable/Mutable Objects) behandelt.

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

In dieser Woche werden wir die Umstellung auf eine Entwicklungsumgebung wagen. In der Präsenzveranstaltung werden wir Ihnen diese im Detail vorstellen und Ihnen zeigen, wie Sie damit arbeiten können.

  • Die Slides zur Präsenzveranstaltung finden Sie auf Adam

Übungen

Das Zip-Archiv mit dem Übungsblatt 7 finden Sie auf Adam

Kernaussagen

  • Datentypen definieren die Menge aller möglichen Werte, die eine Instanz dieses Typs annehmen kann, sowie die Operationen, die darauf angewendet werden können.
  • In Java werden die Daten und dazugehörige Operationen zusammen in Klassen definiert.
  • Instanzen von Klassen werden Objekte genannt.
  • Klassen sind immer Referenzdatentypen
  • Wenn eine Variable eines Referenzdatentyps kein gültiges Objekt referenziert, ist dessen Wert null.
  • Mittels Klassen können wir eigene Datentypen erstellen
  • Instanzen von Klassen heissen Objekte.
  • Das Schlüsselwort this identifiziert das Objekt, auf dem eine Methode arbeitet.
  • Die Felder der Klasse entsprechen Variablen, welche für jede Instanz einer Klasse unterschiedliche Werte annehmen können. Sie definieren den Zustand der Instanz.
  • Methoden einer Klasse haben Zugriff auf die Werte der Felder und können diese sowohl lesen als auch verändern.
  • Der Konstruktor ist eine spezielle Methode, die beim Erzeugen einer Instanz einer Klasse aufgerufen wird und die Werte der Felder setzt.
  • Klassenfelder existieren nicht pro Instanz, sondern nur einmal pro Klasse.
  • Klassenmethoden können auf Klassenfelder, aber nicht auf Felder eines Objekts zugreifen.

Lernziele

Die Studierenden

  • können die Konzepte Datentyp, Klassen und Objekt erklären und die Zusammenhänge zwischen diesen Konzepten erläutern.
  • wissen, wie Methoden auf Objekten aufgerufen werden.
  • kennen die Wrapperklassen zu den primitiven Datentypen int, und double und können diese einsetzen.
  • wissen, dass Klassen immer Referenzdatentypen entsprechen und können die Probleme erklären, die bei veränderbaren Objekten auftreten können.
  • kennen den speziellen Wert null.
  • können eigene Datentypen mittels Klassen definieren.
  • können erklären, wie die Felder eines Objekts den Zustand eines Objekts bestimmen.
  • können identifizieren, auf welche Felder eine Objektmethode und eine Klassenmethode zugreifen kann.
  • wissen, was die Aufgabe eines Konstruktors ist und können diesen einsetzen um ein Objekt zu initialisieren.
  • können den Unterschied zwischen Klassenfeldern und Objektfeldern erklären und an Beispielen illustrieren.