Programmierparadigmen
Ein Paradigma ist ein Denkmodell. Es beschreibt, wie man über eine bestimmte Sache nachdenkt. Auch beim Programmieren benötigt man ein bestimmtes Denkmodell. Programmierte man in den Anfängen der Informatik direkt mit Maschinenbefehlen, stehen uns heute höhere Programmiersprachen zur Verfügung.
In der Softwareentwicklung haben sich vor allem die folgenden drei Paradigmen in der Praxis durchgesetzt:
- strukturierte Programmierung
- objektorientierte Programmierung
- funktionale Programmierung
Die funktionale Programmierung wird im dritten Lehrjahr im Modul 323 behandelt und soll hier nicht weiter behandelt werden. Betrachten wir stattdessen das strukturierte Paradigma – und wie es vom objektorientierten Paradigma erweitert wird.
Strukturierte Programmierung
Die strukturierte Programmierung wurde im Modul 319 behandelt. Die Bezeichnung strukturiert kommt daher, dass sich diese Art des Programmierens durch die Verwendung bestimmter Programmstrukturen auszeichnet. Dies sind u.a. Verzweigungen und Schleifen, die sich mithilfe eines Flussdiagramms grafisch darstellen lassen.
Es gehören aber auch Datenstrukturen wie Arrays und Listen dazu, welche mehrere gleichartige Informationen aufnehmen können. Strukturen kombinieren eine Reihe von Informationen mit möglicherweise unterschiedlichen Datentypen zu einem neuen Datentyp. Ein wichtiger Mechanismus zur Quellcodeorganisation sind Funktionen.
Betrachten wir hierzu ein Beispiel in der Programmiersprache C:
Die Struktur Person wird als neuer Datentyp definiert. Eine Funktion namens print_person nimmt einen Wert des Typs Person entgegen und implementiert die Ausgabe des Namens der gegebenen Person auf die Konsole. Über den Zugriffsoperator . kann auf die einzelnen Teile der Struktur zugegriffen werden.
Die Verwendung dieser Konstrukte gestaltet sich folgendermassen:
Werte vom Typ Person werden der Funktion als Argument übergeben. Die Funktion kann diesen zur Erledigung ihrer Aufgabe verwenden.
Objektorientierte Programmierung
Die objektorientierte Programmierung, die im Modul 320 behandelt wird, kann als Erweiterung der strukturierten Programmierung verstanden werden. Konstrukte wie Verzweigungen und Schleifen kommen weiterhin zum Einsatz. Neue Datentypen werden aber nicht wie Strukturen als reine Datenbehälter definiert, sondern kombinieren Daten mit Funktionen.
Dieses kombinierte Konstrukt bezeichnet man als eine Klasse. Die Datenfelder bezeichnet man als Eigenschaften, und die Funktionen innerhalb einer Klasse heissen Methoden.
Das Beispiel von vorher lässt sich in einer objektorientierten Programmiersprache wie TypeScript folgendermassen umsetzen:
Die Klasse Person kann man sich als Bauplan für Objekte vorstellen. Man verwendet nicht die Klasse direkt, sondern erzeugt zuerst Objekte als Instanzen von dieser Klasse. Dies sieht folgendermassen aus:
Dadurch wird die spezielle Methode namens constructor aufgerufen, welche ein Objekt anhand der mitgegebenen Informationen erzeugt. Die mitgegebenen Informationen werden dadurch auf dem Objekt abgespeichert.
Die Ausgabe erfolgt durch den Aufruf von print. Hierbei handelt es sich um eine Methode: eine Funktion, die zu einer Klasse gehört:
Im Vergleich zu vorher fallen zwei Unterschiede auf:
- Die Funktion heisst nun
printund nicht mehrprint_person. Da die Methode zum TypPersongehört, und die Klasse einen neuen Gültigkeitsbereich schafft, muss der Name nicht weiter qualifiziert werden. (Andere Klassen können ihre eigeneprint-Methode definieren.) - Das Objekt wird nicht mehr als erstes Argument übergeben, sondern die Methode wird auf dem Objekt aufgerufen. In der Implementierung kann man dann mithilfe vom Schlüsselwort
thisauf das Objekt zugreifen, von welchem aus die Funktion aufgerufen worden ist.
Dabei dient der Punkt . als Zugriffsoperator, um von einem Objekt auf seine Eigenschaften und Methoden zuzugreifen. Dieser Operator lässt sich auch verketten und wird von links nach rechts ausgewertet.
In der objektorientierten Programmierung geht es nicht nur um die Umsetzung der Logik mit den Konstrukten der strukturierten Programmierung, sondern auch um die Organisation der Programmlogik in Klassen und um das Zusammenspiel von Objekten zur Laufzeit.
Die Programmiersprache TypeScript und die einzelnen syntaktischen Elemente werden im weiteren Modulverlauf genauer betrachtet.