article

Objektorientierte Programmierung (OOP) setzt die Objektorientierung in der Erstellung von Computerprogrammen um. Dabei werden zusammengehörige Daten und die darauf arbeitende Programmlogik zu Einheiten zusammengefasst, zu den so genannten Objekten.

Die Diversifizierung zwischen OOP und prozeduralen Programmierung muss man dabei strikt trennen von der Unterscheidung zwischen benutzergetriebenen Programmen und automatisch ablaufenden Systemen. In benutzergetriebenen Programmen entfaltet sich die Programmlogik in der Kommunikation zwischen Benutzer und Programm. In automatisch ablaufenden Programmen werden sequenziell einzelne Funktionsbereiche eines Algorithmus durchlaufen. Beide können sowohl prozedural oder in OOP verfasst sein: Während sich bei der Ausführung von prozeduralen Programmen vor allem globale Variabeln ändern, äussert sich der Programmablauf beim OOP-Ansatz in den internen Zustandsveränderungen der Objekte, aus denen das Programm aufgebaut ist.

Objektorientierte Programmiersprachen


Historie.png 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++ 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.

Siehe auch:

Techniken


In 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


  • Das Konzept der objektorientierten Programmierung kann im allgemeinen dabei helfen, Programmcode zu modularisieren. Modularisierte Quelltexte sind in vielen Fällen leichter zu warten und können bedarfsgerecht in mehreren Projekten verwendet werden (Wiederverwendbarkeit), ohne den Verwaltungsaufwand zu erhöhen.

  • OOP steht mit der Objektorientierung dem Paradigma der relationalen Modellierung von relationalen Datenbanken gegenüber. Relationale Datenbanken und Assoziationen objektorientierter Modelle bilden etwa das gleiche ab. In modernen Systemen sind wegen der hohen Performanz die Informationen aus technischer Sicht in relationalen Datenbanken abgelegt, während sie sich aus der Sicht des Anwenders wie ein Objekt verhalten. Die hohe Performanz von Transaktionen auf Datenbanken steht dabei den intuitiv zugänglicheren Methoden von Objekten gegenüber.

Siehe auch


Literatur


  • Harold Abelson, Gerald Jay Sussman, Julie Sussman: Structure and Interpretation of Computer Programs. The MIT Press, ISBN 0262011530
  • Heide Balzert: Objektorientierte Systemanalyse, Spektrum Akademischer Verlag, Heidelberg 1996, ISBN 3-8274-0111-9
  • Grady Booch: Object-Oriented Analysis and Design with Applications. Addison-Wesley, ISBN 0805353402
  • Peter Eeles, Oliver Sims: Building Business Objects. John Wiley & Sons, ISBN 0-471-19176-0
  • Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides: Design Patterns: Elements of Reusable Object Oriented Software. Addison-Wesley, ISBN 0201633612
  • Paul Harmon, William Morrissey: The Object Technology Casebook. Lessons from Award-Winning Business Applications. John Wiley & Sons, ISBN 0-471-14717-6
  • Ivar Jacobson: Object-Oriented Software Engineering: A Use-Case-Driven Approach. Addison-Wesley, ISBN 0201544350
  • Bertrand Meyer: Object-Oriented Software Construction. Prentice Hall, ISBN 0136291554
  • Bernd Oestereich: Objektorientierte Programmierung mit der Unified Modeling Language. Oldenbourg, ISBN 3-486-24319-5
  • James Rumbaugh, Michael Blaha, William Premerlani, Frederick Eddy, William Lorensen: Object-Oriented Modeling and Design. Prentice Hall, ISBN 0136298419
  • David A. Taylor: Object-Oriented Information Systems. Planning and Implementation. John Wiley & Sons, ISBN 0-471-54364-0

Weblinks


Objektorientierte Programmierung

برمجة شيئية | Обектно-ориентирано програмиране | Orientació a objectes | Objektově orientované programování | Objektorientering | Object-oriented programming | Objektema programado | Programación orientada a objetos | Objektuei orientatutako programazio | Olio-ohjelmointi | Programmation orientée objet | תכנות מונחה עצמים | Objektumorientált | Pemrograman Berorientasi Objek | オブジェクト指向 | Objektinis programavimas | Pengaturcaraan Berorientasikan Objek | Object-oriëntatie | Objektorientert programmering | Programowanie obiektowe | Orientação a objeto | Объектно-ориентированное программирование | Objektorienterad programmering | การเขียนโปรแกรมเชิงวัตถุ | Об’єктно-орієнтоване програмування | Lập trình hướng đối tượng | 面向对象的程序设计

 

This article is licensed under the GNU Free Documentation License. It uses material from the "Objektorientierte Programmierung".

Home Pageartsbusinesscomputersgameshealthhospitalshomekids & teensnewsphysiciansrecreationreferenceregionalscienceshoppingsocietysportsworld