Die strukturierte Programmierung mit ihren Kontrollstrukturen ist ein wichtiger Meilenstein der Informatik. Ohne Sequenz, Auswahl und Wiederholung wäre Softwareentwicklung heute kaum denkbar. Doch die Welt hat sich weiterentwickelt – und mit ihr die Art, wie wir Programme entwerfen.
Ein moderner Ansatz, der heute in vielen Bereichen dominiert, ist die Objektorientierung.
🔄 Von prozedural zu objektorientiert
Bisher stand beim prozeduralen Programmieren vor allem der Ablauf im Mittelpunkt:
Ein Programm besteht aus Anweisungen, die nacheinander ausgeführt werden.
Die Objektorientierung erweitert diesen Blickwinkel.
Hier geht es nicht mehr nur um was passiert, sondern vor allem um wer etwas tut.
Jede Aktivität bezieht sich auf ein Objekt, das im Zentrum der Betrachtung steht.
Die Abläufe existieren weiterhin, aber sie sind nun fest an konkrete Objekte gebunden.
🚗 Beispiel: Fahren als Aktivität
Im prozeduralen Denken spricht man allgemein vom „Fahren“.
Autos fahren, Züge fahren, Heißluftballons fahren (oder eher „fahren mit dem Wind“).
Die Aktivität steht im Vordergrund.
In der objektorientierten Sichtweise ändert sich der Fokus:
- Ein Auto fährt anders als
- ein Zug fährt, und anders als
- ein Heißluftballon fährt.
Die Aktivität ist also objektabhängig.
Deshalb wird sie einem bestimmten Objekt zugeordnet und nicht mehr als allgemeine, frei schwebende Aktion betrachtet.
🧩 Klassen und Objekte
Damit ein Programm weiß, welche Objekte existieren und was sie tun dürfen, braucht es eine Struktur, die diese Informationen beschreibt.
Diese Struktur nennt man Klasse.
Eine Klasse ist:
- eine abstrakte Beschreibung eines Objekts
- bestehend aus Daten (Eigenschaften / Attribute)
- und Operationen (Methoden), die auf diese Daten wirken
Aufbau einer Klasse. Quelle: Technik-Kiste.de
Beispiel:
Die Klasse Auto beschreibt:
- Eigenschaften: Farbe, Geschwindigkeit, Tankfüllstand
- Methoden: fahren(), bremsen(), tanken()
Aus einer Klasse können beliebig viele Objekte entstehen – jedes ein konkretes Exemplar dieser Beschreibung.
🔒 Kapselung: Daten + Methoden in einer Einheit
Ein zentrales Prinzip der Objektorientierung ist die Kapselung:
Daten und die zugehörigen Operationen werden in einer gemeinsamen Einheit – der Klasse – zusammengefasst.
Das bedeutet:
- Nur die Methoden einer Klasse dürfen die Daten ihrer Objekte verändern.
- Der Zugriff erfolgt kontrolliert und definiert.
- Das schützt die Daten vor ungewollten Änderungen von außen.
Dieses Konzept ist einer der größten Unterschiede zur prozeduralen Programmierung und bildet die Grundlage für robuste, wartbare Software.
🚆 Klassen und Objekte am Beispiel „Zug“
Um die Prinzipien der Objektorientierung greifbar zu machen, eignet sich ein Beispiel aus der realen Technik besonders gut: ein Zug.
Ein Zug ist ein typisches Objekt, er besitzt Eigenschaften und kann bestimmte Aktionen ausführen. Genau diese Kombination aus Daten und Verhalten bildet das Herzstück der objektorientierten Programmierung.
🧱 Eigenschaften eines Zuges
Ein Zug lässt sich durch verschiedene Merkmale beschreiben, zum Beispiel:
- leistungKW – Motorleistung in Kilowatt
- ueberwacht – ob der Zug aktuell überwacht wird
- vIst – aktuelle Geschwindigkeit
- vMax – maximale Geschwindigkeit
- wagen – Anzahl der Wagen
Alle Züge besitzen diese Eigenschaften, auch wenn die konkreten Werte je nach Zugtyp unterschiedlich sind.
In der Objektorientierung fasst man solche gemeinsamen Merkmale in einer Klasse zusammen.
Beziehung zwischen Klasse und Objekte. Quelle: Technik-Kiste.de
🧩 Die Java‑Klasse „Zug“
In Java könnte die Klasse so aussehen:
class Zug {
int leistungKW;
boolean ueberwacht;
int vIst;
int vMax;
int wagen;
}
Diese Variablen nennt man Attribute oder Membervariablen.
Sie speichern die Eigenschaften jedes einzelnen Zug‑Objekts wie z. B.
🚆 Objekte erzeugen: Deklaration und Definition
Eine Klasse allein erzeugt noch keinen Zug, sie ist nur die Vorlage.
Um ein echtes Objekt zu erzeugen, braucht es zwei Schritte:
1. Deklaration
Zug ICE;
2. Definition
ICE = new Zug();
Oder kombiniert:
Zug ICE = new Zug();
Objekte nennt man auch Instanzen einer Klasse.
🎨 Eigenschaften setzen: Die Punktnotation
Ein frisch erzeugtes Objekt hat zwar Attribute, aber noch keine Werte.
Mit der Punktnotation kannst du sie zuweisen:
ICE.leistungKW = 8000;
ICE.ueberwacht = true;
ICE.vIst = 120;
ICE.vMax = 300;
ICE.wagen = 8;
Und für die Gravita‑Lok:
Zug Gravita = new Zug();
Gravita.leistungKW = 1800;
Gravita.ueberwacht = false;
Gravita.vIst = 0;
Gravita.vMax = 100;
Gravita.wagen = 1;
🛠️ Methoden: Was ein Zug tun kann
Jetzt kommen die Aktivitäten ins Spiel.
Ein Zug soll nicht nur Eigenschaften besitzen, er soll auch etwas tun können.
Dafür gibt es Methoden.
Ich habe drei Methoden vorgesehen:
- fahren() – Zug beschleunigt
- bremsen() – Zug verlangsamt
- sicherheitsfahrschaltung() – Sicherheitsfunktion (z. B. Sifa) wird ausgelöst oder quittiert
Hier ist die vollständige Klasse mit Methoden:
class Zug {
int leistungKW;
boolean ueberwacht;
int vIst;
int vMax;
int wagen;
void fahren(int delta) {
vIst = vIst + delta;
if (vIst > vMax) {
vIst = vMax;
}
}
void bremsen(int delta) {
vIst = vIst - delta;
if (vIst < 0) {
vIst = 0;
}
}
void sicherheitsfahrschaltung() {
ueberwacht = !ueberwacht;
}
}
Methoden sind Funktionen, die immer auf ein bestimmtes Objekt angewendet werden. Also auf einen konkreten Zug wie den ICE oder die Gravita‑Lok. Im Methodenrumpf wird dann festgelegt, was die Methode tun soll.
🔍 Methoden ohne Parameter und mit Rückgabewert
Eine Methode kann:
- keine Parameter benötigen
- einen Rückgabewert liefern
- oder beides kombinieren
💡Wichtig: Innerhalb der Klasse schreibst du einfach leistungKW, vIst oder wagen, ohne Punktnotation.
Denn beim Schreiben der Klasse existieren noch keine Objekte.
Die Methode beschreibt nur, was später passieren soll, wenn ein Objekt sie aufruft.
🧩 Was bringt eine solche Klasse?
Eine Klasse ist kein Programm, das man direkt ausführt.
Sie ist ein Bauplan, der festlegt:
- welche Daten ein Objekt besitzt (Attribute)
- welche Aktionen erlaubt sind (Methoden)
Die eigentliche Verarbeitung passiert erst später, wenn konkrete Objekte erzeugt werden.
Dieses Prinzip gilt immer:
- Die Klasse definiert die Struktur und das Verhalten.
- Objekte nutzen diese Definition.
- Andere Programmteile dürfen nur über die Methoden mit den Objekten arbeiten.
Das ist einerseits eine Einschränkung, denn man muss sich an die vorhandenen Methoden halten. Andererseits ist es ein riesiger Vorteil:
Wenn Methoden gut dokumentiert sind, muss niemand wissen, wie sie intern funktionieren. Es reicht zu wissen:
- Welche Parameter brauchen sie?
- Was liefern sie zurück?
Das Innenleben bleibt verborgen und genau das ist Kapselung.
🧠 Warum ist das so wichtig?
Gerade in größeren Softwareprojekten ist dieses Prinzip entscheidend:
- Ein Entwickler erstellt die Klasse Zug.
- Er definiert Attribute und Methoden.
- Er dokumentiert, wie die Methoden zu verwenden sind.
Andere Entwickler können dann:
- ICE‑Objekte erzeugen
- Gravita‑Objekte erzeugen
- Methoden wie fahren() oder bremsen() aufrufen
…ohne sich jemals darum kümmern zu müssen, wie diese Methoden programmiert wurden.
Das macht objektorientierte Programmierung so mächtig.
🧩 Methoden können auch komplex werden
Methoden können beliebig komplex sein.
Beispiele:
- Summe aller Werte in einem Objekt berechnen
- Sortieren von Daten
- Simulation von Fahrdynamik
- Sicherheitslogik (z. B. Sifa, PZB, LZB)
- Automatische Bremskurvenberechnung
Und genau hier zeigt sich:
Objektorientierung ersetzt die strukturierte Programmierung nicht: sie nutzt sie, um Methoden zu entwerfen.
🎯 Zusammenfassung
Die Grundidee sollte jetzt klar sein:
- Eine Klasse beschreibt Daten und Verhalten.
- Ein Objekt ist eine konkrete Instanz dieser Klasse.
- Methoden definieren, was ein Objekt tun kann.
- Kapselung sorgt dafür, dass Objekte nur über Methoden gesteuert werden.
Damit hast du die wichtigsten Grundlagen der Objektorientierung verstanden und kannst sie nun anwenden.

