• Home
  • |
  • Blog
  • |
  • Java Tutorial #18 – Objektorientierte Programmierung mit Java

Java Tutorial #18 – Objektorientierte Programmierung mit Java

Zuletzt aktualisiert: Januar 23, 2024

Heute kommen wir nun endlich auf die berühmt-berüchtigte objektorientierte Programmierung mit Java zu sprechen! Dabei werden wir uns ansehen, wofür der Begriff OOP steht, welches Grundprinzip dahintersteckt, was es mit Klassen und Objekten auf sich hat und warum diese für ein ausreichendes Grundverständnis zur Objektorientierung unerlässlich sind.

Sie sehen gerade einen Platzhalterinhalt von Youtube. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.

Mehr Informationen

Inhaltsverzeichnis

1. Was ist mit der Praxis?

Wie du bereits in der Einleitung lesen konntest, wird es im heutigen Tutorial keinen Praxisteil geben. Das heißt, wir benötigen heute nicht unsere Entwicklungsumgebung, da wir das Konzept erst mal in der Theorie kennenlernen und in den darauffolgenden Blogartikeln dann in die Praxis übergehen werden.

2. Was versteht man unter OOP?

OOP ist die Abkürzung für "objektorientierte Programmierung", worunter man einen modernen Programmierstil versteht. Der Programmierstil ist deshalb modern, weil er dem menschlichen Denken sehr stark ähnelt.

Beim Blick auf den Begriff „Objektorientierte Programmierung“ stellen wir bereits fest, dass das Thema etwas mit Objekten zu tun haben muss.

Wenn du dich mal kurz im Raum umsiehst, dann wirst du zahlreiche Objekte wahrnehmen. Angenommen du liest diesen Beitrag gerade auf deinem PC-Monitor: Dieser ist nichts anderes als ein Objekt! Aber auch wenn du dir diesen Blogartikel auf einem Handy oder einem Tablet durchliest, hast du es dabei mit einem Objekt zu tun.

Sowohl das Tablet als auch das Handy, die Schreibtischlampe und der Stift sind Objekte.

Die objektorientierte Programmierung mit Java ist so aufgebaut, dass wir auch in unserem Programm mit Objekten hantieren.

Das vereinfacht uns Menschen die Arbeit enorm, da wir in der echten Welt auch ständig von Objekten umgeben sind.

3. Die prozedurale Programmierung

Der Gegensatz zum modernen Programmierstil der Objektorientierung ist die prozedurale Programmierung. Mit diesem Stil entwickelt man Programme zum Beispiel bei der Arbeit mit der Programmiersprache C.

Früher gab es lediglich diesen Stil, der nach und nach durch die Objektorientierung abgelöst wurde. Dabei hat man gemerkt, dass Menschen mit der objektorientierten Programmierung besser arbeiten konnten. Aus diesem Grund sind all die modernen Programmiersprachen wie Java, C# und C++ objektorientiert.

4. Was sind Objekte?

Unter Objekten versteht man beschreibbare Dinge, die zusammenarbeiten können, um zur Problemlösung beizutragen.

Brechen wir diesen Satz einmal auseinander und sehen uns die einzelnen Teile genauer an.

Zum einen haben wir die beschreibbaren Dinge, die auch in der echten Welt existieren. Wir haben beispielsweise einen Stift, den wir beschreiben können. Der Stift hat eine gewisse Form, Farbe und einen bestimmten Hersteller. Damit lässt sich dieses Objekt exakt charakterisieren. Genauso funktioniert die objektorientierte Programmierung mit Java:

Wir bauen Objekte, die wir genau beschreiben können.

Nun sehen wir uns den zweiten Teil des Satzes an: „… die zusammenarbeiten können“.

Dieser sagt aus, dass Objekte innerhalb unseres Programms genau wie in der echten Welt zusammenarbeiten können.

Beispiel

Wir nehmen einen Stift in die Hand, um damit auf ein Blatt Papier zu schreiben. Sowohl das Blatt Papier als auch der Stift sind Objekte. In dem Moment, in dem wir auf das Blatt Papier schreiben, arbeiten diese beiden Objekte gewissermaßen zusammen.

Für den Computer sind wir Menschen in der Hinsicht ebenso Objekte, da wir beim Schreiben mit einem Stift schließlich als „Menschenobjekte“ mit dem „Stift-Objekt“ zusammenarbeiten und der Stift wiederum mit dem Objekt Blatt Papier. Auf diese Weise kann man sich die Zusammenarbeit ganz gut vor Augen führen.

Der letzte Teil des Satzes lautet: „um zur Problemlösung beizutragen“. Das bedeutet, dass du mit jedem Computerprogramm, das du schreibst, ein gewisses Ziel verfolgst. 

Du möchtest in der Regel ein Problem lösen.

Selbst beim Programmieren eines Computerspiels haben wir mit einer Problemlösung zu tun, auch wenn es im ersten Moment gar nicht danach aussieht.

Denn wir müssen uns dabei überlegen, wie wir etwas programmieren, damit es nach unseren Vorstellungen funktioniert. Das kann beispielsweise der Standort des Spielers innerhalb der Welt sein oder das Design eines Levels.

Damit haben wir auch schon die Bedeutung des gesamten Satzes aufgedeckt!

Du solltest dir also folgendes merken:

Objekte sind beschreibbare Dinge, die zusammenarbeiten können, um zur Problemlösung beizutragen.

Da das noch ziemlich abstrakt und wahrscheinlich schwer vorstellbar ist, sehen wir uns an dieser Stelle ein kleines Beispiel an.

5. Die objektorientierte Programmierung mit Java an einem Beispiel erklärt

Stell dir einmal vor, du möchtest ein Videospiel programmieren, in dem es eine Spielfigur gibt. Diese Spielfigur ist ein Objekt, das Eigenschaften und Methoden besitzt.

Beispiele für Eigenschaften:
Die Spielfigur hat Lebenspunkte und einen Namen. Eigenschaften sind also Zustände. Der Spieler besitzt aktuell zwei Leben, was einen Zustand darstellt und auch dessen Name gilt als solcher.

Beispiele für Methoden:
Eine Methode kann beispielsweise „kann sich bewegen“ sein. Wenn sich ein Spieler bewegt, dann tut er etwas, wodurch es sich nicht mehr um einen Zustand handeln kann. Das wird als Methode gehandhabt und auch wenn die Spielfigur stirbt, gilt dieser Prozess als Methode.

Neben dieser Spielfigur existieren außerdem noch weitere Objekte. Zum Beispiel eine Kiste, die auch über Eigenschaften und Methoden verfügt. Eine Eigenschaft davon könnte der verschlossene oder geöffnete Zustand der Kiste sein. Die Kiste ist also entweder verschlossen oder geöffnet – dazwischen gibt es nichts.

In der Programmierung könnte man das mit einem Boolean realisieren. Der geschlossene Zustand würde dabei dem Wert false entsprechen und der geöffnete dem Wert true.

Eine Kiste kann darüber hinaus Items, also Dinge enthalten, wobei es sich wieder um einen Zustand handelt. Den Inhalt der Kiste könnte man beispielsweise mit einem Array modellieren.

Wenn sich also ein Schwert, ein Schild und ein Helm darin befinden, könnte man diese drei Elemente in ein Array schreiben, welches wiederum eine Eigenschaft der Kiste darstellt.

Zudem kann auch eine Kiste Methoden besitzen. Beim Öffnen und Schließen der Kiste interagiert man mit dieser. Diesen Prozess modelliert man mit einer Methode.

An diesem kleinen theoretischen Beispiel kann man erkennen, dass sich ein Computerspiel aus zahlreichen Objekten mit Eigenschaften und Methoden zusammensetzt.

Da wir an dieser Stelle wissen, was Objekte sind, fehlt uns nur noch ein wichtiger Punkt, den wir verstehen müssen:

6. Was ist eine Klasse?

Eine Klasse ist ein Bauplan für ein Objekt

Das bedeutet, dass wir eine Klasse definieren und dazu nutzen, um ein Objekt zu beschreiben. Wir verleihen dem Objekt Zustände, also Eigenschaften, indem wir es beschreiben und statten dieses mit Methoden aus.

All das wird in einer Klasse festgehalten und diese fungiert nun als Bauplan. In einem Programm kann man von einer Klasse, also von diesem Bauplan, beliebig viele Objekte erzeugen. Jedes Objekt ist dabei ein eigenes Objekt für sich und kann bei seinen Eigenschaften unterschiedliche Werte annehmen.

Konkret bedeutet das: Wenn du für dein Spiel ein Auto programmieren möchtest, definierst du dafür im ersten Schritt die Klasse, also den Bauplan für dieses Auto. In dieser Klasse legst du gewisse Eigenschaften fest, wie etwa einen Hersteller oder eine Farbe. Alle Dinge, mit welchen du das Objekt letztendlich beschreiben kannst, sind Eigenschaften.

Anschließend legst du noch die Methoden, also die Funktionalitäten des Objekts innerhalb der Klasse fest. Diese soll das Objekt ausführen können.

Möchtest du nun in deinem Programm ein Objekt vom Typ Auto erstellen, dann erzeugst du ein Objekt dieser Klasse. Anders gesagt, erzeugst du das Objekt von dem Bauplan, der dir als Vorlage dient. Jedes der erzeugten Objekte ist dann einzeln für sich und kann damit, wie bereits erwähnt, eigene Werte besitzen.

Was bedeutet das in der Praxis?

Das heißt, du kannst dir von der Klasse Auto beispielsweise fünf Autos erzeugen, die auf dem Spielfeld erscheinen sollen. Anschließend hast du die Möglichkeit, für die einzelnen Autos unterschiedliche Farben festzulegen.

Die Eigenschaften der einzelnen Objekte lassen sich dementsprechend unterschiedlich gestalten. Der Grundaufbau, den die Klasse und damit der Bauplan vorgibt, bleibt bei jedem Objekt dennoch gleich.

Das war das komplette Konzept der Objektorientierung im Schnelldurchlauf!

Damit solltest du nun ein ungefähres Gefühl dafür haben, wie die objektorientierte Programmierung mit Java funktioniert und welcher Sinn sich dahinter verbirgt.

Auf unserem YouTube-Kanal haben wir noch ein gesondertes Video, in dem wir im Detail und anhand von Grafiken erklären, was die objektorientierte Programmierung ist. Dieses bezieht sich auf keine Programmiersprache, sondern ist sehr allgemein gestaltet. Wenn du das Thema Objektorientierung also wirklich verstehen möchtest, lohnt es sich, einen Blick darauf zu werfen. Danach hast du das Konzept mit hoher Wahrscheinlichkeit verstanden.

In den kommenden Beiträgen werden wir die objektorientierte Programmierung mit Java in der Praxis angehen. Wir werden uns also ab dem nächsten Blogartikel wieder in die Entwicklungsumgebung begeben und uns ansehen, wie wir die Theorie des heutigen Beitrags in der Praxis umsetzen können.