Objektorientierte Programmiersprache

Die Geschichte der objektorientierten Programmiersprachen geht zurück bis in die frühen 70er Jahre, wobei sich deren Verwendung erst in den 90er Jahren durchsetzte. Ein zentraler Ansatz ist es hierbei Werkzeuge zur effizienten Entwicklung von wartbarer und wiederverwendbarer Software zu entwickeln.


Für die Einordnung einer Programmiersprache in die Gruppe der objektorientierten Programmiersprachen sind die Charakteristika Abstraktion, Datenkapselung, Vererbung, Polymorphismus sowie späte Bindung grundlegend. Daher gilt, dass wenn eine Programmiersprache eines dieser Merkmale nicht besitzt, so handelt es sich um keine objektorientierte Programmiersprache.

Für die elementare Einordnung von Programmiersprachen lassen sich folgende Typen definieren;

Die Basis der Betrachtung prozeduraler Programmiersprachen ist die Trennung der Daten und der diese verarbeitenden Funktionen und Prozeduren. Der Ansatz von Weiterentwicklungen wie den objektorientierten Sprachen ist nunmehr gegensätzlich - nämlich die Kapselung von Funktionalität. Dazu werden Daten und zugehörige Operationen als Einheit - als Objekte - betrachtet. Dabei werden die Daten als Attribute und die Operationen eines Objekts als Methoden bezeichnet. Die Zielstellung für diesen Ansatz ist es, durch die Wiederverwendbarkeit von Software eine höhere Effizienz in der Entwicklung zu erzielen, und insgesamt einen besser zu wartenden Code zu erzeugen. Die Aufgabe von objektorientierten Sprachen ist es nun, als ein diesbezügliches Werkzeug zu dienen - dazu sind im Besonderen fünf Charakteristika grundlegend für eine objektorientierte Programmiersprache:

Abstraktion. Beschränkung auf die im Sinne einer Anwendung wesentlichen Eigenschaften von Objekten. Bei der Abstraktion werden nur die Eigenschaften eines Objekts betrachtet, die es aus konzeptioneller Sicht von anderen Objekten unterscheidet. Dabei wird von der internen Objektstruktur und der Implementierung der Methoden abstrahiert.

Kapselung. Kapselung einer Datenstruktur und der Implementierung der auf sie anwendbaren Operationen. Eine gekapselte Datenstruktur besitzt eine Schnittstelle mit den von außen zugreifbaren Operationen. Alle Zugriffe auf die gespeicherten Daten erfolgen ausschließlich über die Operationen dieser Schnittstelle.

Vererbung. Beziehung zwischen Klassen, durch die eine Klasse die Merkmale einer oder mehrerer anderer Klassen übernimmt. Die Vererbung führt zu einer hierarchischen Anordnung der Klassen in einer Klassenhierarchie.

Polymorphie. Mit Polymorphie wird die Zuordnung von Objekten unterschiedlichen Typs zu einer Variablen bezeichnet. Damit haben verschiedene Objekte bei Aufruf derselben Operation unterschiedliches Verhalten.

Spätes Binden. Verknüpfung einer Nachricht - einer Methode zum Aufruf einer Operation - erst zur Laufzeit eines Programms.

Sofern diese Charakteristika von einer mit Objekten arbeitenden Programmiersprache nicht voll unterstützt werden, spricht man auch von einer objektbasierten Programmiersprache. Beispielsweise werden bei JavaScript bereits existierende Objekte - auch Prototypen genannt - abgeleitet und auf die Deklaration von Klassen verzichtet.

Seit Ende der 70er Jahre gibt es Sprachentwicklungen, die objektorientierte Prinzipien mehr oder weniger stark unterstützen. Dabei sind grundsätzlich zwei Entwicklungen zu unterscheiden:

  • Die Erweiterung einer Programmiersprache um objektorientierte Konzepte; die erste bedeutende Sprachentwicklung war Simula-67.
  • Die Neuentwicklung einer objektorientierten Programmiersprache. Hier gilt Smalltalk-80 als der erste bekannte Vertreter.
Es wird von mehr als 1.000 verschiedenen Programmiersprachen gesprochen, deren Basis objektorientierte Prinzipien sind. Dabei konnten sich nur wenige hinsichtlich ihrer Verbreitung durchsetzen. Zur o.g. ersten Gruppe werden insbesondere C++, SIMULA-67, OBJECTICE-C, CLOS und PROLOG++ gezählt. Sicherlich auch unter der Berücksichtigung objektorientierter Konzepte von SMALLTALK-80 und EIFFEL kam es zur konsequenten Neuentwicklung von objektorientierten Programmiersprachen wie Java, C-Sharp (C#), Scala, Hypertext Preprocessor (PHP), Python oder Ruby. Davon unterstützen einige wie Java und Python neben der Objektorientierung auch das prozedurale Programmierparadigma. Diese nennt man daher auch Multiparadigmen-Programmiersprachen.

Informationen zum Artikel
Deutsch: Objektorientierte Programmiersprache
Englisch: object oriented programming language - OOPL
Veröffentlicht: 28.10.2013
Wörter: 583
Tags: #Sonstige Programmiersprachen
Links: Abstraktion, AspectJ, Attribut, C++, CLOS (common LISP object system)