Aus dem Kurs: Grundlagen der Programmierung: Basiswissen
Einführung in die objektorientierte Programmierung
Aus dem Kurs: Grundlagen der Programmierung: Basiswissen
Einführung in die objektorientierte Programmierung
Ein Programm, das mit einer objektorientierten Sprache geschrieben wurde, stellt die Objekte und deren Interaktionen ins Zentrum allen Handelns. Jedes Objekt stellt dabei einen eigenen Verantwortungsbereich dar. Es beinhaltet seine eigenen Daten und somit den Status des Objekts sowie die Logik, die auf diese Daten angewendet werden kann. Dieses Vorgehen hat mehrere Vorteile. Zum einen fassen Objekte alles, was sie betrifft, an einer Stelle zusammen, wodurch der Code leichter zu verstehen und zu ändern ist. Darüber hinaus stellen die Objekte selbst sicher, dass ihre Daten nur auf die Weise verändert werden, die aus ihrer Sicht auch Sinn ergeben. Objekte benutzen dabei durchaus Funktionen oder Daten, die von anderen Objekten angeboten werden. Erst aus der Kombination unterschiedlicher Objekte ergibt sich das eigentliche Programmverhalten. In der objektorientierten Programmierung gibt es sehr viele neue Begriffe. Lassen Sie sich davon bitte nicht abschrecken. Es genügen am Anfang einige wenige dieser Begriffe, um einsteigen zu können. Reden wir als Erstes über den Unterschied zwischen Klassen und Objekten. Objekte haben Sie ja bereits in diesem Kurs kennengelernt, wobei ich Ihnen hier etwas verschwiegen habe. Objekte werden eigentlich nur zur Laufzeit eines Programms erzeugt. Dafür braucht es zunächst eine Beschreibung dieser Objekte. Diese Beschreibungen sind wie eine Blaupause und werden als Klassen bezeichnet. Über die Klassen geben Sie die Art der Daten an. Dabei steht noch nicht fest, um welche Daten es sich konkret handelt, welche Logik die Klasse besitzt und auf welche dieser Dinge andere Programmbestandteile frei zugreifen können. Wenn das Programm dann einmal läuft, wird dieser Bauplan hergenommen und dann werden die spezifischen Objekte mit ihren detaillierten Informationen erzeugt. Oder anders gesagt: Klassen beschreiben die Gemeinsamkeiten der verschiedenen Objekte und brechen sie auf ein jeweiliges einheitliches Konzept herunter. Nehmen wir ein Beispiel aus der Webentwicklung. Angenommen, Sie schreiben eine Webseite für einen Restaurantführer. Wie würden Sie dabei vorgehen? Halten Sie an dieser Stelle inne und machen Sie sich kurz Notizen, bevor wir hier mit dem Kurs weitergehen. Sie erstellen vielleicht eine Klasse Restaurant, die die unterschiedlichen Restaurants auf Ihrer Webseite beschreibt. Die Restaurants der Klasse Restaurant unterscheiden sich durch die Eigenschaften Namen, Lage, Ambiente, Speisekarte usw. Die konkreten Objekte können dann z.B. Ihr Lieblings-Italiener oder der Grieche um die Ecke sein. Beide repräsentieren das gleiche Konzept eines Restaurants, sind für sich gesehen aber eigenständige Realisierungen dieses Konzepts. In der Programmierung heißt das, Sie definieren eine Klasse, um daraus Objekte zu erzeugen. Dies nennen wir wiederum das Instanziieren. Unser Restaurantführer ist aber nicht nur mit den bereits erwähnten Klassen und Objekten bespickt. Er kann auch aus vielen anderen bestehen, die mit dem Thema Restaurant möglicherweise nicht viel zu tun haben. So finden Sie vielleicht Nutzer und Bewertungen, aber auch sichtbare Teile Ihres Programms, ein Texteingabefeld, einen Button oder ein Fenster. Sie können auch eher unsichtbare Dinge wie z.B. ein Datum oder eine Zeitangabe beschreiben. Jede Klasse hat im Wesentlichen zwei Dinge, Attribute und Verhalten. Attribute beschreiben die Eigenschaften einer Sache. Was die Sache macht und wie sie es macht, nennen wir Verhalten. Lassen Sie uns in diesem Beispiel mal eine Klasse anschauen, die eine Person beschreibt. Die Attribute der Klasse Person sind z.B. der Name, die Körpergröße, das Gewicht und das Geschlecht und das Alter. Das Verhalten der Person könnte z.B. gehen, rennen, springen, sprechen oder schlafen sein. Die Attribute sind tatsächlich reine Informationen bzw. Daten. Das Verhalten, also was die Person tun kann, entspricht Funktionen. In anderen Programmiersprachen werden Eigenschaften gerne als Attribute und Verhalten auch als Methoden bezeichnet. JavaScript ist von Haus aus keine vollwertige objektorientierte Programmiersprache, da sie nicht den klassenbasierten Ansatz verfolgt. Es gibt andere Programmiersprachen wie Java, C# oder C++, die es mit der Objektorientierung wesentlich genauer nehmen. Bei diesen kommt man ohne ein tieferes Verständnis von Klassen und Objekten nicht besonders weit. Manche Programmiersprachen wie z.B. C haben mit Objektorientierung gar nichts am Hut.