Objektorientierte Programmierung

Das Konzept “Objektorientierung” sollte Dir als Entwickler ein Begriff sein. Objekte sind aus der Programmierung nicht mehr wegzudenken – aus gutem Grund! Wieso, weshalb und warum erfährst Du in diesem Beitrag.

Ein Konzept der physischen Welt

Hast Du schon mal etwas von Objekten gehört oder gelesen? Wenn nicht, klingt die Bezeichnung “Objektorientierung” vielleicht abstrakt. Dabei ist es das genaue Gegenteil. Objekte sind der physischen Welt nachempfunden. Das Verständnis der Welt kannst Du so auch auf Software übertragen. Gerade wenn die komplexer wird, ein großer Vorteil. Die Idee: Alle Gegenstände unterscheiden sich. Wenn Du zu sehr auf die Details achtest, liegen Gemeinsamkeiten häufig fern. Das gilt für jeden Gegenstand, jedes Fahrzeug, jedes Lebewesen, Spielzeug oder Werkzeug. Einfach für alles. Was hat ein Fisch und ein Auto gemeinsam?

Die Idee ist genial und einfach zugleich. Alle Objekte sind unterschiedlich. Keine Frage. Aus der Vogelperspektive gibt es aber nur zwei wesentliche Unterschiede. Jedes Objekt besitzt andere Eigenschaften und kann unterschiedliche Aktionen ausführen. Ebenfalls haben alle einen Namen bzw. eine Bezeichnung.

Was ist ein Objekt?

Ein Objekt kann theoretisch alles sein. Bezogen auf die Software repräsentieren Objekte Gegenstände, Personen, Werkzeuge oder auch andere Dinge. Genau wie im echten Leben haben Objekte in der Software auch Eigenschaften. Die beschreiben alle Merkmale. Ein Auto hat bspw. eine Farbe, eine bestimmte Anzahl PS, eine Höchstgeschwindigkeit, Hersteller und so weiter. Außerdem kann es Aktionen ausführen: lenken, beschleunigen, bremsen und viele weitere. In der Softwareentwicklung nennt man das Methoden.

Gleiches gilt für Fische, für eine Waschmaschine oder einen Rasenmäher. Bei jedem Objekt kannst Du alle Unterschiede in Eigenschaften und Methoden unterteilen. Und genau das ist ein Objekt. Es gibt eine Bezeichnung, Eigenschaften und Methoden.

Was sind Klassen?

Im Zusammenhang mit der Objektorientierung sind Klassen ein wichtiger Bestandteil. Sie sind die Baupläne für Objekte. Die Programmiersprache erstellt und initialisiert Objekte auf Basis von Klassen. Formal korrekt ausgedrückt: Ein Objekt ist die Instanz einer Klasse zur Laufzeit. Einfacher umschrieben: Eine Klasse ist der Quellcode den Du schreibst. Ein Objekt entsteht, wenn zur Laufzeit die Kopie einer Klasse erzeugt wird. Wie das geschieht ist von Sprache zu Sprache unterschiedlich. Wunderbar geeignet für alle Themen rund um Objektorientierung ist Java.

Eine Java Klasse als Beispiel

Die Syntax zur Definition von Klassen ist je nach Programmiersprache etwas anders. Auch Instanzen der Klasse, also Objekte, erstellst Du in jeder Sprache etwas anders. Die Basis ist aber ähnlich. Immerhin wird die gleiche Idee verfolgt. Es ändern sich Details. Die folgende Java Klasse könnte einen Apfel beschreiben, zumindest rudimentär:

Wichtig ist hier weniger die Bedeutung der Keywords wie “public” und “void”. Interessanter ist der Aufbau allgemein. Eingeleitet wird die Klasse mit dem Schlüsselwort “class”. Dann folgt der Klassenname “Apfel”.  Alle Details rund um Java, die Grundlagen und Konzepte wie Objektorientierung findest Du in meinem Kurs Programmieren lernen mit Java.

Eigenschaften

Oben in der Klasse siehst Du die Eigenschaft “farbe”. Sie ist vom Typ String, also eine Zeichenkette. Sie wird genutzt um die Farbe des Apfels anzugeben. Es wären auch noch weitere Eigenschaften denkbar. Sinnvoller Kandidat wäre die Sorte, ebenfalls als Zeichenkette. Auch möglich: süß ja/nein als Wahrheitswert. Welche Eigenschaften benötigt werden, hängt stark von der Software ab. Eine automatisierte Lösung zur Sortierung von Äpfeln würde ggf. einen Durchmesser benötigen. Eine ERP System für Obst und Gemüsehändler würde sicher das Gewicht erfassen.

Methoden

Methoden sind Aktionen die ein Objekt ausführen kann oder die mit dem Objekt ausgeführt werden können. Sie orientieren sich an Verben, die mit dem Objekt in Verbindung stehen. Das Beispiel oben bietet die Methode “entkernen”. Ein Objekt für eine Datei könnte als Methoden bspw. “laden”, “speichern” oder “löschen” anbieten.

Wie entsteht ein Objekt?

Ein Objekt entsteht auf Basis einer Klasse. Innerhalb von Java gibt es das Keyword “new”. Dies erzeugt eine neue Instanz der Klasse, also ein Objekt. Um eine Instanz der Klasse Apfel zu erzeugen, wäre folgende Zeile notwendig:

Das Objekt wird im Speicher abgelegt. In der Variable “meinApfel” wird eine Referenz gespeichert, ein Verweis auf die Speicheradresse des Objekts.

Was ist Objektorientierung?

Eine objektorientierte Sprache verwendet Objekte zur Strukturierung der Software. Die gesamte Architektur wird in einzelne Objekte unterteilt. Ein Paradebeispiel dafür ist Java, da hier bereits der Einstiegspunkt der Software in einem Objekt liegt. Es gibt einige primitive Datentypen wie Ganzzahlen (Integer), Kommawerte (double) oder auch Wahrheitswerte (boolean). Ansonsten sind nahezu alle Bestandteile Klassen und Objekte.

Bei Java muss die Hauptklasse der Software eine Methode mit dem Namen “main” enthalten. Java führt diese beim Start aus. Das bietet Dir als Entwickler die Gelegenheit den Programmfluss von dort aus aufzubauen und zu verzweigen. In Verbindung mit der Klasse Apfel könnte eine solche Hauptklasse wie folgt aussehen:

Grundsätzlich bezieht sich das Merkmal “Objektorientierung” auf die Architektur der Software. Den genauen Ansatz des Entwurfs zu erläutern führt hier allerdings deutlich zu weit. Abgekürzt gesagt: Die Unterteilung erfolgt in möglichst logisch unterteilte Klassen. Dabei wird darauf geachtet diese nicht zu sehr von einander abhängig zu machen. Ein wichtiges Instrument in dem Zusammenhang sind die sogenannten Design Pattern (Entwurfsmuster). Aber auch da gilt: eine detaillierte Ausführung sprengt an der Stelle komplett den Rahmen.

Welche Objekte brauchst Du?

Wenn Du eine Software planst, besteht die größte Herausforderung in deren Architektur. Das Thema Software Entwurf füllt eigene Bücher, Vorlesungen und Seminare. Es gibt also keine pauschale Antwort.

Aber es gibt eine Leitlinie. In einer Software realisierst Du häufig die Hauptwörter, die im Kontext einer Software vorkommen. Du entwickelst eine App zum Verleih von Büchern? Hier wirst Du mindestens die Bücher selbst als Objekt finden. Auch der Verleih selbst muss erfasst werden. Eine eigene Klasse bietet sich an. An wen verleihst Du die Bücher? An Personen. Richtig: Auch die sind heißer Kandidat für eine eigenständige Entität.

Wenn Dich das Thema Software Entwurf interessierst empfehle ich Dir Lektüre zu Entwurfsmustern in Verbindung mit der Sprache Deiner Wahl. Als allgemeinen Einstieg in die Thema: zum Beispiel das Buch Design Pattern mit Java.

Welche Programmiersprachen sind objektorientiert?

Eigentlich ist heute fast jede Sprache in der Lage mit Objekten umzugehen. Was sich unterscheidet ist der Grad, in dem Objekte zentraler Bestandteil sind. Gerade Java und Python pochen stark auf das Recht hier genannt zu werden. Ebenfalls komplett objektorientiert ist C++. Immerhin ist es die Erweiterung von C um genau dies: Klassen und Objekte. Auch im Rahmen der iOS Entwicklung mit Swift und Objective-C wird sehr stark auf Objekte gesetzt.

Tags:

, , ,

Kommentare (2)

  • lumpi

    2 Jahren ago

    Hallo Jan,

    schreibt man mit einem kleinen o am Anfang. (Wie-Wort = Adjektiv)

    Schöne Grüße,
    A.Lump

    • Jan Brinkmann

      2 Jahren ago

      Hey, vielen Dank für Deinen Hinweis. Welches Wort meinst Du denn damit genau?

Schreib einen Kommentar

Your email address will not be published.