Anzeigegulli:Toolbox |
gulli:lexikon - Alle Begriffe der Untergrund-SzeneTipp: Benutze die Suche, um weitere Begriffe im gulli:lexikon nachzuschlagen. Die objektorientierte Programmierung, kurz OOP, ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma, welches Flexibilität und Wiederverwendbarkeit von Programmen fördert. Die Grundidee der objektorientierten Programmierung ist, Daten und Funktionen, die auf diese Daten angewandt werden können, möglichst eng in einem sogenannten Objekt zusammenzufassen und nach außen hin zu kapseln, so dass Methoden fremder Objekte diese Daten nicht versehentlich manipulieren können. Im Gegensatz dazu beschreibt das vor der OOP vorherrschende Paradigma eine strikte Trennung von Funktionen (Programmcode) und Daten, dafür aber eine schwächere Strukturierung der Daten selbst.
Grundlegende BegriffeIm Folgenden werden wichtige Begriffe der objektorientierten Programmierung kurz umrissen. Für nähere Details sei auf die jeweiligen Einzelabschnitte und -artikel verwiesen. Die einzelnen Bausteine, aus denen ein objektorientiertes Programm während seiner Abarbeitung besteht, werden als Objekte bezeichnet. Die Konzeption dieser Objekte erfolgt dabei in der Regel auf Basis der folgenden Paradigmen:
KlassenHauptartikel: Klasse Zur besseren Verwaltung gleichartiger Objekte bedienen sich die meisten Programmiersprachen des Konzeptes der Klasse. Klassen sind Vorlagen, aus denen Instanzen genannte Objekte zur Laufzeit erzeugt werden. Im Programm werden dann nicht einzelne Objekte, sondern eine Klasse gleichartiger Objekte definiert. Man kann sich die Erzeugung von Objekten aus einer Klasse vorstellen wie das Fertigen von Autos aus dem Konstruktionsplan eines bestimmten Fahrzeugtyps. Klassen sind die Konstruktionspläne für Objekte. Die Klasse entspricht in etwa einem komplexen Datentyp wie in der prozeduralen Programmierung, geht aber darüber hinaus: Sie legt nicht nur die Datentypen fest, aus denen die mit Hilfe der Klassen erzeugten Objekte bestehen, sie definiert zudem die Algorithmen, die auf diesen Daten operieren. Während also zur Laufzeit eines Programms einzelne Objekte miteinander interagieren, wird das Grundmuster dieser Interaktion durch die Definition der einzelnen Klassen festgelegt. Beispiel: Die Klasse Auto legt fest, dass das Auto vier Reifen, fünf Türen, einen Motor und fünf Sitze hat. Das Objekt „Automodell1“ hat schließlich vier Reifen mit dem Durchmesser 60 cm und der Breite 20 cm, fünf rote Türen, einen Motor mit 150 kW und fünf Ledersitze. Ein weiteres Objekt „Automodell2“ hat vier Reifen mit dem Durchmesser 40 cm und der Breite 15 cm, fünf blaue Türen ... Beide Objekte sind unterschiedlich, gehören aber zu der gemeinsamen Klasse Auto. MethodenDie einer Klasse von Objekten zugeordneten Algorithmen bezeichnet man auch als Methoden. Häufig wird der Begriff Methode synonym zu den Begriffen Funktion oder Prozedur aus anderen Programmiersprachen gebraucht. Die Funktion oder Prozedur ist jedoch eher als Implementierung einer Methode zu betrachten. Im täglichen Sprachgebrauch sagt man auch „Objekt A ruft Methode m von Objekt B auf.“ Eine besondere Rolle spielen Methoden für die Kapselung, insbesondere die Zugriffsfunktionen. Spezielle Methoden zur Erzeugung bzw. Zerstörung von Objekten heißen Konstruktoren und Destruktoren. In vielen objektorientierten Programmiersprachen lässt sich festlegen, welche Objekte eine bestimmte Methode aufrufen dürfen. So unterscheidet beispielsweise die Programmiersprache Java vier Zugriffsebenen, die bereits zur Übersetzungszeit geprüft werden.
Analog zu diesen vier Zugriffsebenen sind in der Unified Modeling Language (UML) vier Sichtbarkeiten für Operationen definiert. AttributeObjekte (Hosen, Jacken, Pullover, ...) besitzen verschiedene Eigenschaften (Farbe, Größe, Material,...). Diese Eigenschaften eines Objekts heißen Attribute.
PolymorphieHauptartikel: Polymorphie (Programmierung) Unter bestimmten Voraussetzungen können Algorithmen, die auf den Schnittstellen eines bestimmten Objekttyps operieren, auch mit davon abgeleiteten Objekten zusammenarbeiten. Geschieht dies so, dass durch Vererbung überschriebene Methoden an Stelle der Methoden des vererbenden Objektes ausgeführt werden, dann spricht man von Polymorphie. Polymorphie stellt damit eine Möglichkeit dar, einer durch ähnliche Objekte ausgeführten Aktion einen Namen zu geben, wobei jedes Objekt die Aktion in einer für das Objekt geeigneten Weise implementiert. Diese Technik, das so genannte Overriding, implementiert aber keine universelle Polymorphie, sondern nur die sogenannte Ad-hoc-Polymorphie. BezeichnungenDie Begriffe der objektorientierten Programmierung haben teilweise unterschiedliche Namen. Folgende Bezeichnungen werden synonym verwendet:
Objektorientierte ProgrammiersprachenBild:Historie.png Historie objektorientierter Programmiersprachen Objektorientierte Programmiersprachen besitzen einen speziellen Datentyp – das Objekt. Damit ermöglichen sie die Objektorientierung. Die rein objektorientierten Sprachen, wie Smalltalk, folgen dem Prinzip: „Alles ist ein Objekt.“ Auch elementare Typen wie Ganzzahlen werden dabei durch Objekte repräsentiert – selbst Klassen sind hier Objekte, die wiederum Exemplare von Metaklassen sind. Die verbreiteten objektorientierten Programmiersprachen, unter anderem C#, C++ und Java, handhaben das Objektprinzip nicht ganz so streng. Bei ihnen sind elementare Datentypen keine vollwertigen Objekte, da sie auf Methoden und Struktur verzichten müssen. Sie stellen dem Entwickler auch frei, wie stark er die Kapselung objektinterner Daten einhält. Die erste bekannte objektorientierte Programmiersprache war Simula-67. Später wurden die Prinzipien dann in Smalltalk weiter ausgebaut. Mit dem ANSI/X3.226-1994-Standard wurde Common Lisp/CLOS zur ersten standardisierten objektorientierten Programmiersprache und mit ISO 8652:1995 wurde Ada 95 zur ersten objektorientierten Programmiersprache nach dem internationalen ISO-Standard. Gängige moderne Programmiersprachen wie Java, C++, C#, Python, Perl, PHP und Ruby unterstützen sowohl die OOP als auch den prozeduralen Ansatz, der in den gängigen Programmiersprachen der 1970er und 1980er Jahre wie Pascal, Fortran oder C vorherrschend war. Im Gegensatz dazu setzt Smalltalk, die älteste heute noch bedeutsame OOP-Sprache, auf kompromisslose Objektorientierung und hatte damit starken Einfluss auf die Entwicklung populärer OOP-Sprachen, ohne selber deren Verbreitung zu erreichen. Auch wenn der Durchbruch der OOP erst in den 1990ern stattfand, wurde die objektorientierte Programmierung bereits Ende der sechziger Jahre als Lösungsansatz für die Modularisierung und die Wiederverwendbarkeit von Code entwickelt. Die erste objektorientierte Programmiersprache war Simula-67. Siehe auch: TechnikenIn einigen objektorientierten Programmiersprachen wie zum Beispiel JavaScript, NewtonScript und Self wird auf die Deklaration von Klassen gänzlich verzichtet. Stattdessen werden bestehende Objekte, so genannte Prototypen abgeleitet. Die Attribute und Methoden des Prototyps kommen immer dann zum Einsatz, wenn sie nicht im abgeleiteten Objekt explizit überschrieben wurden. Dies ist vor allem für die Entwicklung kleinerer Programme von Vorteil, da es einfacher und zeitsparend ist. In manchen Programmiersprachen gibt es zu jeder Klasse ein bestimmtes Objekt (Klassenobjekt), das dazu da ist, die Klasse zur Laufzeit zu repräsentieren; dieses Klassenobjekt ist dann auch zuständig für die Erzeugung von Objekten der Klasse und den Aufruf der korrekten Methode. Klassen werden in der Regel in Form von Klassenbibliotheken zusammengefasst, die häufig thematisch organisiert sind. So können Anwender einer objektorientierten Programmiersprache Klassenbibliotheken erwerben, die den Zugriff auf Datenbanken ermöglichen. Es gibt inzwischen auch Verfeinerungen der objektorientierten Programmierung durch Methoden wie Entwurfsmuster (englisch design patterns), Design by Contract (DBC) und grafische Modellierungssprachen wie UML. Einen immer wichtigeren Stellenwert nimmt die aspektorientierte Programmierung ein, bei dem Aspekte von Eigenschaften und Abhängigkeiten beschrieben werden. Erste Ansätze sind beispielsweise in Java mit J2EE oder der abstrakten Datenhaltung über Persistenz-Layer sichtbar. Kritik
| {{#if: | .
|
}}{{#if:
|
}}
|}}}},}}{{#if:| S. {{{seiten}}},}}{{#if:| abgerufen am | Abgerufen am }}{{#if:21. Juni 2008|{{#if:21. Juni 2008|21. Juni 2008}}{{#if:|{{{z}}}}}{{#if:|{{#if: | {{#if: | .
|
}}{{#if:
|
}}
|}}}}|Fehlender Parameter "zugriff", "z" oder "zugriff-jahr"}}.{{#if:| „{{{zitat}}}“}}{{#if:| ({{#if:|{{{format}}}{{#if:|, }}}}{{#if:|{{{sprache}}}{{#if:|, }}}}{{#if:|{{{kommentar}}}}})}}</ref>
... die Gesellschaft lechzt nach Schlangenöl. Natuerlich hat das Schlangenöl die eindrucksvollsten Namen — sonst würde man es nicht verkaufen können — wie "Strukturierte Analyse und Design", "Software Engineering", "Maturity Models", "Management Information Systems", "Integrated Project Support Environments" "Object Orientation" und "Business Process Re-engineering" (die letzten drei auch bekannt als IPSE, OO and BPR)." — EWD 1175: The strengths of the academic enterprise Siehe auch
Literatur
Referenzen<references/> Weblinks
ar:برمجة شيئية bg:Обектно-ориентирано програмиране ca:Orientació a objectes cs:Objektově orientované programování da:Objektorienteret programmering en:Object-oriented programming eo:Objektema programado es:Programación orientada a objetos eu:Objektuei orientatutako programazio fi:Olio-ohjelmointi fr:Programmation orientée objet he:תכנות מונחה עצמים hu:Objektumorientált id:Pemrograman Berorientasi Objek ja:オブジェクト指向 lt:Objektinis programavimas ms:Pengaturcaraan Berorientasikan Objek nl:Object-oriëntatie no:Objektorientert programmering pl:Programowanie obiektowe pt:Orientação a objeto ru:Объектно-ориентированное программирование sv:Objektorienterad programmering th:การเขียนโปรแกรมเชิงวัตถุ uk:Об’єктно-орієнтоване програмування vi:Lập trình hướng đối tượng zh:面向对象的程序设计 Dieser Artikel basiert auf dem Artikel Objektorientierte Programmierung aus der freien Enzyklopädie Wikipedia und steht unter der GNU-Lizenz für freie Dokumentation. In der Wikipedia ist eine Liste der Autoren verfügbar. |
Weitere Tipps | ||||||||||||||||||||||