Aus dem Kurs: Grundlagen der Programmierung: Basiswissen

Objektorientierung für Fortgeschrittene – wichtige Begriffe

Aus dem Kurs: Grundlagen der Programmierung: Basiswissen

Objektorientierung für Fortgeschrittene – wichtige Begriffe

Ob man eine Programmiersprache wirklich als objektorientiert ansieht oder nicht, hängt sehr stark davon ab, was man unter Objektorientierung versteht. Das fängt damit an, dass eine Programmiersprache überhaupt erst einmal ein Objektkonzept hat, muss dort aber noch lange nicht enden. Um die Vorteile objektorientierter Sprachen zu verstehen, muss ich zunächst einige auf den ersten Blick vielleicht verwirrende Begriffe erklären. Nehmen Sie sich beim Zuhören Zeit, stoppen Sie gegebenenfalls zwischendurch das Video und machen Sie sich Notizen. Klassen und Objekte haben Sie bereits in dem letzten Video kennengelernt. Darüber hinaus gibt es die Prototypen. Weitere wichtige Begriffe der objektorientierten Programmierung sind Kapselung sowie Vielgestaltigkeit bzw. Polymorphie, die ich im nachfolgenden Video erklären möchte. In diesem Zusammenhang werde ich dann auch auf den Lebenszyklus von Objekten eingehen. Beginnen wir aber erst einmal mit Objekten und Klassen. Der Unterschied zwischen diesen beiden ist dabei recht einfach. Eine Klasse ist eine abstrakte Beschreibung von Gruppen von Objekten gleichen Typs. Die Klasse strukturiert somit die Eigenschaften der Objekte und bricht sie auf einen gemeinsamen Nenner herunter. Dazu beschreibt die Klasse die Attribute bzw. Eigenschaften sowie Methoden der aus ihr erzeugten Objekte. Die Klasse hinterlegt quasi den Bauplan für die Objekte. Der Unterschied zum Prototypen ist hierbei, dass die Klasse aus sich heraus noch nichts tut. Sie ist quasi nur eine leere Hülle, quasi eine Beschreibung ohne eigenständiges Leben. Ein Prototyp, so wie er bspw. bei JavaScript genutzt wird, ist selbst ein Objekt, aus dem heraus neue Objekte erzeugt werden können. Der Prototyp wird somit geklont und dann mit neuen Werten überschrieben. Das hört sich jetzt nicht sonderlich unterschiedlich an, bedeutet aber zwei völlig unterschiedliche Lösungswege. Um dies zu verstehen, müssen Sie sich vor Augen halten, dass es beim Klassenkonzept immer die Möglichkeit gibt, dass eine Klasse selbst Funktionalität liefert oder eben auch nicht. Theoretisch kann eine Klasse auch nur sagen, dass es eine Methode gibt und wie diese von außen wahrgenommen wird, nicht aber, wie sie umgesetzt wurde. Bei einem Prototyp ist das nicht möglich, da ein Prototyp immer auch für sich selbst funktionieren muss. In neueren objektorientierten Programmiersprachen finden sich daher auch meist verschiedene Arten von Klassen. Normale Klassen, wie Sie sie bereits kennen, können einfach instanziiert werden und bringen alles für ein funktionierendes Objekt mit. Statische Klassen können nicht instanziiert werden. Von ihnen gibt es immer nur ein Objekt und dies ist über den Namen der Klasse erreichbar. Statische Klassen werden häufig für Funktionssammlungen wie eine Sammlung mathematischer Algorithmen genutzt. Abstrakte Klassen bringen eine Teilfunktionalität mit. Ein Teil der Methoden muss jedoch noch ausprogrammiert werden. Schnittstellendefinitionen beschreiben nur das Skelett einer Methode, haben aber keine innere Funktionalität. So, gönnen Sie sich an dieser Stelle eine kleine Pause, bevor wir im nächsten Video die eigentlichen Vorteile der objektorientierten Programmierung an einem Beispiel besprechen können.

Inhalt