www.wikidata.de-de.nina.az
Die objektorientierte Programmierung kurz OOP ist ein auf dem Konzept der Objektorientierung basierendes Programmierparadigma Die Grundidee besteht darin die Architektur einer Software an den Grundstrukturen desjenigen Bereichs der Wirklichkeit auszurichten der die gegebene Anwendung betrifft Ein Modell dieser Strukturen wird in der Entwurfsphase aufgestellt Es enthalt Informationen uber die auftretenden Objekte und deren Abstraktionen ihre Typen Die Umsetzung dieser Denkweise erfordert die Einfuhrung verschiedener Konzepte insbesondere Klassen Vererbung Polymorphie und spates Binden dynamisches Binden Inhaltsverzeichnis 1 Definition 2 Konzepte 2 1 Objekte 2 2 Klassen 2 2 1 Methoden bei Klassen 2 2 2 Attribute 2 3 Polymorphie 2 4 Terminologie 3 Objektorientierte Programmiersprachen 4 Techniken 4 1 Objekt Konzepte in Programmiersprachen 4 2 Entwurf von Objekt Konzepten 5 Grenzen der OOP 5 1 Abbildung von Problemstellungen auf OOP Techniken 5 2 Objektorientierte Programmiersprachen und naturliche Sprachen 5 3 OOP und Kontrollfluss 5 4 OOP und relationale Datenbanken 5 5 Laufzeitverhalten und Energieeffizienz 6 Kritik 6 1 Modularisierung und andere Prinzipien nicht ausgereift 6 2 Keine Erhohung der Produktivitat gegenuber prozeduralen Ansatzen 7 Siehe auch 8 Literatur 9 Weblinks 10 EinzelnachweiseDefinition BearbeitenDie Definition was objektorientierte Programmierung ist und im Kern ausmacht variiert und ist auch Veranderungen unterworfen Alan Kay der Erfinder der Programmiersprache Smalltalk und des Begriffs object oriented definierte ihn im Kontext von Smalltalk folgendermassen 1 Everything is an object 2 Objects communicate by sending and receiving messages in terms of objects 3 Objects have their own memory in terms of objects 4 Every object is an instance of a class which must be an object 5 The class holds the shared behavior for its instances in the form of objects in a program list 6 To eval a program list control is passed to the first object and the remainder is treated as its message 1 Alles ist ein Objekt 2 Objekte kommunizieren durch das Senden und Empfangen von Nachrichten welche aus Objekten bestehen 3 Objekte haben ihren eigenen Speicher strukturiert als Objekte 4 Jedes Objekt ist die Instanz einer Klasse welche ein Objekt sein muss 5 Die Klasse beinhaltet das Verhalten aller ihrer Instanzen in der Form von Objekten in einer Programmliste 6 Um eine Programmliste auszufuhren wird die Ausfuhrungskontrolle dem ersten Objekt gegeben und das Verbleibende als dessen Nachricht behandelt Alan Kay The Early History of Smalltalk 1993 1 Alan Kay druckte spater seine Unzufriedenheit uber den von ihm gewahlten Begriff Objektorientierung aus weil dieser aus seiner Sicht den Kernaspekt des Messaging zu kurz kommen liesse 2 2003 gab Alan Kay folgende Definition von objektorientierter Programmierung OOP to me means only messaging local retention and protection and hiding of state process and extreme late binding of all things OOP bedeutet fur mich nur Messaging lokales Beibehalten und Schutzen und Verbergen des Prozesszustands sowie spatestmogliche Bindung aller Dinge Alan Kay Antwort auf eine Anfrage 2003 3 Der ISO IEC 2382 15 Standard von 1999 definiert den Begriff object oriented dagegen wie folgt Pertaining to a technique or a programming language that supports objects classes and inheritance Bezieht sich auf eine Technik oder Programmiersprache welche Objekte Klassen und Vererbung unterstutzt ISO IEC 2382 15 4 Die ISO Definition gilt inzwischen im Allgemeinen als zu vereinfachend da auch klassenlose objektorientierte Sprachen existieren und auch der Vererbung inzwischen weniger Bedeutung beigemessen wird als noch in den 1990ern Konzepte BearbeitenIm Vergleich mit anderen Programmiermethoden verwendet die objektorientierte Programmierung neue andere Begriffe Die einzelnen Bausteine aus denen ein objektorientiertes Programm wahrend seiner Abarbeitung besteht werden als Objekte bezeichnet Die Objekte werden dabei in der Regel auf Basis der folgenden Konzepte entwickelt Abstraktion Jedes Objekt im System kann als ein abstraktes Modell eines Akteurs betrachtet werden der Auftrage erledigen seinen Zustand berichten und andern und mit den anderen Objekten im System kommunizieren kann ohne offenlegen zu mussen wie diese Fahigkeiten implementiert sind vgl abstrakter Datentyp Solche Abstraktionen sind entweder Klassen in der klassenbasierten Objektorientierung oder Prototypen in der prototypbasierten Programmierung Klasse Die Datenstruktur eines Objekts wird durch die Attribute auch Eigenschaften seiner Klassendefinition festgelegt Das Verhalten des Objekts wird von den Methoden der Klasse bestimmt Klassen konnen von anderen Klassen abgeleitet werden Vererbung Dabei erbt die Klasse die Datenstruktur Attribute und die Methoden von der vererbenden Klasse Basisklasse Prototyp Objekte werden durch das Klonen bereits existierender Objekte erzeugt und konnen anderen Objekten als Prototypen dienen und damit ihre eigenen Methoden zur Wiederverwendung zur Verfugung stellen wobei die neuen Objekte nur die Unterschiede zu ihrem Prototyp definieren mussen Anderungen am Prototyp werden dynamisch auch an den von ihm abgeleiteten Objekten wirksam dd Datenkapselung Als Datenkapselung bezeichnet man in der Programmierung das Verbergen von Implementierungsdetails Auf die interne Datenstruktur kann nicht direkt zugegriffen werden sondern nur uber definierte Schnittstellen Objekte konnen den internen Zustand anderer Objekte nicht in unerwarteter Weise lesen oder andern Ein Objekt hat eine Schnittstelle die daruber bestimmt auf welche Weise mit dem Objekt interagiert werden kann Dies verhindert das Umgehen von Invarianten des Programms Feedback Verschiedene Objekte kommunizieren uber einen Nachricht Antwort Mechanismus der zu Veranderungen in den Objekten fuhrt und neue Nachrichtenaufrufe erzeugt Dafur steht die Kopplung als Index fur den Grad des Feedbacks Persistenz Objektvariablen existieren solange die Objekte vorhanden sind und verfallen nicht nach Abarbeitung einer Methode Polymorphie dt Mehrgestalt Fahigkeit eines Bezeichners abhangig von seiner Verwendung unterschiedliche Datentypen anzunehmen Verschiedene Objekte konnen auf die gleiche Nachricht unterschiedlich reagieren Wird die Art der Reaktion auf die Nachricht erst zur Laufzeit aufgelost wird dies auch spate Bindung genannt Vererbung Vererbung heisst vereinfacht dass eine abgeleitete Klasse die Methoden und Attribute der Basisklasse ebenfalls besitzt also erbt Somit kann die abgeleitete Klasse auch darauf zugreifen Neue Arten von Objekten konnen auf der Basis bereits vorhandener Objektdefinitionen festgelegt werden Es konnen neue Bestandteile hinzugenommen werden oder vorhandene uberlagert werden Objekte Bearbeiten Objekt von dt Ding Sache Ein Element welches Funktionen Methoden Prozeduren einen inneren Zustand oder mehrere dieser Dinge besitzt Entitat Ein Objekt mit einer eindeutigen Identitat zur Speicherung von Daten Beispiel Eine Person mit den Daten Adresse Telefonnummer oder Name Die Daten konnen geandert werden ohne dass die Person ihre Identitat verliert Eine Person ist also eine Entitat 5 Wertobjekt Ein Objekt welches uber seinen Wert definiert wird Eine Telefonnummer welche sich andert ist also eine andere Telefonnummer Gleichartig ist eine Adresse bei der sich lediglich die Hausnummer andert eine andere Adresse selbst wenn alle anderen Daten gleich bleiben Somit stellt eine Telefonnummer und eine Adresse keine Entitat dar sondern ein Wertobjekt 5 Eigenschaft Ein Bestandteil des Zustands eines Objekts Hierbei kann es sich um eine Entitat oder ein Wertobjekt handeln Dienst Ein Objekt welches ein Verhalten z B eine Geschaftslogik in Form von Prozeduren Funktionen oder Methoden implementiert Der Dienst verwendet hierbei Entitaten oder Wertobjekte 5 Prozedur Verandert den Zustand eines Objektes ohne einen Ruckgabewert zu liefern Eine Prozedur kann andere Objekte als Parameter entgegennehmen Funktion Ordnet einer gegebenen Eingabe einen bestimmten Ruckgabewert zu Eine Funktion zeichnet sich insbesondere dadurch aus dass sie nicht den Zustand eines Objekts verandert 5 Methode Verandert den Zustand eines Objekts und liefert zudem einen Ruckgabewert Eine Methode kann andere Objekte als Parameter entgegennehmen Modul Eine zusammengefasste Gruppe von Objekten Klassen Bearbeiten Hauptartikel Klasse Objektorientierung 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 nicht einzelne Objekte sondern eine Klasse gleichartiger Objekte definiert Existieren in der gewahlten Programmiersprache keine Klassen oder werden diese explizit unterdruckt so spricht man zur Unterscheidung oft auch von objektbasierter Programmierung 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 Konstruktionsplane fur Objekte Die Klasse entspricht in etwa einem komplexen Datentyp wie in der prozeduralen Programmierung geht aber daruber 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 Wahrend also zur Laufzeit eines Programms einzelne Objekte miteinander interagieren wird das Grundmuster dieser Interaktion durch die Definition der einzelnen Klassen festgelegt BeispielDie Klasse Auto legt fest dass das Auto vier Reifen einer bestimmten Grosse funf farbige Turen einen Motor mit einer bestimmten Leistung und funf Sitze mit wahlbaren Bezugen hat Das Objekt Auto1 hat vier Reifen mit dem Durchmesser 19 Zoll und der Breite 255 mm funf rote Turen einen Motor mit 150 kW und funf Ledersitze Das Objekt Auto2 hat vier Reifen mit dem Durchmesser 19 Zoll und der Breite 255 mm funf rote Turen einen Motor mit 150 kW und funf Ledersitze Ein weiteres Objekt Auto3 hat vier Reifen mit dem Durchmesser 16 Zoll und der Breite 205 mm funf blaue Turen einen Motor mit 90 kW und funf Sitze mit Textilbezug Es handelt sich um drei Objekte zwei davon haben gleiche Attribute Alle drei sind aber Auspragungen Instanzen der Klasse Auto Methoden bei Klassen Bearbeiten Hauptartikel Methode Programmierung Die einer Klasse von Objekten zugeordneten Algorithmen bezeichnet man auch als Methoden Haufig 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 taglichen Sprachgebrauch sagt man auch Objekt A ruft Methode m von Objekt B auf Eine besondere Rolle spielen Methoden fur die Kapselung insbesondere die Zugriffsfunktionen Spezielle Methoden zur Erzeugung und Zerstorung von Objekten heissen Konstruktoren beziehungsweise Destruktoren Methoden konnen Parameter erhalten die beim Aufruf ubergeben werden mussen und einen Ruckgabewert besitzen den sie am Ende dem Aufrufer zuruckgeben Beispielsweise hat die Methode addiere die Parameter Zahl 1 und Zahl 2 und gibt als Ruckgabewert die Summe der Zahlen zuruck In vielen objektorientierten Programmiersprachen lasst sich festlegen welche Objekte eine bestimmte Methode aufrufen durfen So wird meist zwischen folgenden vier Zugriffsebenen unterschieden die bereits zur Ubersetzungszeit gepruft werden Offentliche public Methoden durfen von allen Klassen aufgerufen werden Geschutzte protected Methoden durfen von Klassen im selben Paket und abgeleiteten Klassen aufgerufen werden Methoden auf Paket Ebene konnen nur von Klassen aufgerufen werden die sich im selben Paket befinden diese Zugriffsebene ist nur bei Programmiersprachen vorhanden die Pakete bzw Namespaces kennen Private Methoden konnen nur von anderen Methoden derselben Klasse aufgerufen werden Analog zu diesen vier Zugriffsebenen sind in der Unified Modeling Language UML vier Sichtbarkeiten fur Operationen definiert Attribute Bearbeiten Hauptartikel Attribut Programmierung Objekte Fenster Schaltflachen Laufleisten Menus besitzen verschiedene Eigenschaften Farbe Grosse Ausrichtung Diese Eigenschaften eines Objekts heissen Attribute Polymorphie Bearbeiten Hauptartikel Polymorphie Programmierung Unter bestimmten Voraussetzungen konnen Algorithmen die auf den Schnittstellen eines bestimmten Objekttyps operieren auch mit Objekten davon abgeleiteter Klassen zusammenarbeiten Geschieht dies so dass durch Vererbung uberschriebene Methoden an Stelle der Methoden der vererbenden Klasse ausgefuhrt werden dann spricht man von Polymorphie Polymorphie stellt damit eine Moglichkeit dar einer durch ahnliche Objekte ausgefuhrten Aktion einen Namen zu geben wobei jede Klasse die Aktion in einer fur das Objekt geeigneten Weise implementiert Diese Technik das sogenannte Overriding implementiert aber keine universelle Polymorphie sondern nur die sogenannte Ad hoc Polymorphie Terminologie Bearbeiten Die Begriffe der objektorientierten Programmierung haben teilweise unterschiedliche Namen Folgende Bezeichnungen werden synonym verwendet Bezeichnungen in der objektorientierten Programmierung Deutscher Begriff Alternativen EnglischAbgeleitete Klasse Kindklasse Unterklasse Subklasse child class subclassAttribut Objektvariable Instanzvariable Datenelement Eigenschaft member propertyBasisklasse Elternklasse Oberklasse Superklasse parent class superclassObjekt Exemplar Instanz instanceMethode Elementfunktion methodStatische Methode Klassenfunktion Metafunktion static methodObjektorientierte Programmiersprachen BearbeitenObjektorientierte Programmiersprachen unterstutzen die Programmstrukturierung mit einem speziellen Datentyp dem Objekt der die Objektorientierung ermoglicht Die rein objektorientierten Sprachen wie Smalltalk folgen dem Prinzip Alles ist ein Objekt Auch elementare Typen wie Ganzzahlen werden dabei durch Objekte reprasentiert 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 alle so streng Bei ihnen sind elementare Datentypen keine vollwertigen Objekte da sie auf Methoden und Struktur verzichten mussen Sie stellen dem Entwickler auch frei wie stark er die Kapselung objektinterner Daten einhalt Die erste bekannte objektorientierte Programmiersprache war Simula 67 Spater wurden die Prinzipien der Kapselung in einer Klassenhierarchie 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 als erste nach dem internationalen ISO Standard normierte objektorientierte Programmiersprache festgelegt Gangige moderne Programmiersprachen z B Python unterstutzen sowohl die OOP als auch den prozeduralen Ansatz der in den klassischen Programmiersprachen der 1970er und 1980er Jahre wie Pascal Fortran oder C vorherrschte Im Gegensatz dazu setzt Smalltalk die alteste heute noch bedeutsame OOP Sprache auf kompromisslose Objektorientierung und hatte damit starken Einfluss auf die Entwicklung popularer OOP Sprachen ohne selber deren Verbreitung zu erreichen weil keine kostengunstig allgemein verfugbare Implementierung angeboten wurde Auch wenn der Durchbruch der OOP erst in den 1990er Jahren stattfand wurde die objektorientierte Programmierung bereits Ende der 1960er Jahre mit Simula 67 als Losungsansatz fur die Modularisierung und die Wiederverwendbarkeit von Code entwickelt Siehe auch Geschichte der Programmiersprachen Liste objektorientierter Programmiersprachen und Objektbasierte ProgrammierspracheTechniken BearbeitenObjekt Konzepte in Programmiersprachen Bearbeiten In einigen objektorientierten Programmiersprachen wie Go NewtonScript und Self wird auf die Deklaration von Klassen ganzlich verzichtet Stattdessen werden neue Objekte von bestehenden Objekten den sogenannten Prototypen abgeleitet Die Attribute und Methoden des Prototyps kommen immer dann zum Einsatz wenn sie im abgeleiteten Objekt nicht explizit uberschrieben wurden Dies ist vor allem fur die Entwicklung kleinerer Programme von Vorteil da es einfacher und zeitsparend ist In manchen Programmiersprachen beispielsweise in Objective C gibt es zu jeder Klasse ein bestimmtes Objekt Klassenobjekt das die Klasse zur Laufzeit reprasentiert dieses Klassenobjekt ist dann auch fur die Erzeugung von Objekten der Klasse und den Aufruf der korrekten Methode zustandig Klassen werden in der Regel in Form von Klassenbibliotheken zusammengefasst die haufig thematisch organisiert sind So konnen Anwender einer objektorientierten Programmiersprache Klassenbibliotheken erwerben die zum Beispiel den Zugriff auf Datenbanken ermoglichen Entwurf von Objekt Konzepten Bearbeiten Hauptartikel Objektorientierte Analyse und Design Die Wortarten einer sprachlichen Problembeschreibung konnen hilfreiche Hinweise dafur geben eine Objekt basierte Modellierung zu konzipieren sogenannte Verb Substantiv Methode 6 Dabei werden Objekte und Klassen in der Regel sprachlich durch Substantive beschrieben wobei Eigennamen auf Objekte und Appellative wie Haus und Tier auf Klassen hindeuten 7 Verben stehen in der Regel fur Methoden wobei Adverbien und Substantive erganzende Charakterisierungen der Methoden geben konnen Die Werte von Objektattributen entsprechen haufig Numeralien oder Adjektiven 8 Es gibt inzwischen auch Verfeinerungen der objektorientierten Programmierung durch Methoden wie Entwurfsmuster Design by contract und grafische Modellierungssprachen wie die Unified Modeling Language Einen immer hoheren Stellenwert nimmt die aspektorientierte Programmierung ein bei der Aspekte von Eigenschaften und Abhangigkeiten beschrieben werden Erste Ansatze sind beispielsweise in Java mit Jakarta EE oder der abstrakten Datenhaltung uber Persistenzschichten sichtbar Grenzen der OOP BearbeitenDas objektorientierte Paradigma hat Vor und Nachteile je nach Anwendungsfeld in der Softwaretechnik oder konkreter Problemstellung Abbildung von Problemstellungen auf OOP Techniken Bearbeiten Die OOP kann wie auch andere Programmierparadigmen verwendet werden Probleme aus der realen Welt abzubilden Als ein typisches Beispiel fur Problemstellungen die sich einer geschickten Modellierung mit OOP Techniken entziehen gilt das Kreis Ellipse Problem Objektorientierte Programmiersprachen und naturliche Sprachen Bearbeiten Objektorientierte Programmiersprachen konnen auch unter sprachwissenschaftlichen Aspekten mit naturlichen Sprachen verglichen werden OO Programmiersprachen haben ihren Fokus auf den Objekten welche sprachlich Substantive sind Die Verben Aktionen sind sekundar fest an Substantive gebunden gekapselt und konnen im Allgemeinen nicht fur sich allein stehen Bei naturlichen Sprachen und z B prozeduralen Sprachen existieren Verben eigenstandig und unabhangig von den Substantiven Daten z B als Imperativ und Funktion Es kann argumentiert werden dass diese sprachliche Einschrankung in einigen Anwendungsfallen zu unnotig komplizierten Beschreibungen von Problemen aus der realen Welt mit objektorientierten Sprachen fuhrt 9 10 OOP und Kontrollfluss Bearbeiten Haufig genannte Vorzuge des OOP Paradigmas sind eine verbesserte Wartbarkeit und Wiederverwendbarkeit des statischen Quellcodes 11 Hierzu werden jedoch die Kontrollflusse und das dynamische Laufzeitverhalten den Daten Objekten im Allgemeinen untergeordnet abstrahiert und weggekapselt Die Kontrollflusse bilden sich nicht mehr fur den Entwickler transparent direkt in den Codestrukturen ab wie z B bei prozeduralen Sprachen eine Umsetzung in dieser Hinsicht wird dem Compiler uberlassen Hardware nahere Sprachen wie das prozedurale C oder Assembler bilden den echten Kontrollfluss und das Laufzeitverhalten transparenter ab 12 Mit der wachsenden Bedeutung von paralleler Hardware und nebenlaufigem Code wird jedoch eine bessere Kontrolle und Entwickler Transparenz der komplexer werdenden Kontrollflusse immer wichtiger etwas das schwierig mit OOP zu erreichen ist 13 14 OOP und relationale Datenbanken Bearbeiten Ein haufig genannter Bereich in dem OOP Techniken als unzureichend gelten ist die Anbindung von relationalen Datenbanken OOP Objekte lassen sich nicht direkt in allen Aspekten mit relationalen Datenbanken abbilden Umgekehrt konnen uber OOP die Starken und Fahigkeiten von relationalen Datenbanken ebenfalls nicht vollstandig ausgeschopft werden Die Notwendigkeit eine Brucke zwischen diesen beiden Konzeptwelten zu schlagen ist als object relational impedance mismatch bekannt Hierzu existieren viele Ansatze beispielsweise die haufig verwendete objektrelationale Abbildung jedoch keine allgemeingultige Losung ohne den einen oder anderen Nachteil 15 Laufzeitverhalten und Energieeffizienz Bearbeiten Die Effektivitat des Laufzeitverhaltens von Anwendungen die auf OOP Techniken basieren wird seit jeher kontrovers diskutiert Alexander Chatzigeorgiou von der Universitat Makedonien verglich die Laufzeiteffektivitat und die Energieeffizienz von typischen Algorithmen Gauss Jordan Algorithmus Trapez Integration und QuickSort von prozeduralen Ansatzen und OOP Techniken implementiert als C und C Software Auf dem verwendeten ARM Prozessor ergab sich fur drei Algorithmen im Mittel eine um 48 41 bessere Laufzeiteffektivitat mit den prozeduralen C Algorithmusvarianten Es ergab sich ausserdem eine im Mittel um 95 34 hohere Leistungsaufnahme der C Varianten zu den C Varianten 16 Fur Anwendungen auf mobilen Geraten wie Handys oder MP3 Spielern mit begrenzten Leistungs und Energiespeichervermogen sind derartige Unterschiede signifikant allerdings machen derartige Algorithmen in der Regel nur einen Bruchteil der Applikationen aus Als Grund fur den Unterschied in Effektivitat und Energieeffizienz werden in dem Artikel generelle Abstraktions Leistungseinbussen und die deutlich grossere Anzahl von Zugriffen auf den Arbeitsspeicher durch OOP Techniken genannt Kritik BearbeitenModularisierung und andere Prinzipien nicht ausgereift Bearbeiten Luca Cardelli untersuchte 1996 fur das DEC Systems Research Center die Effizienz von OOP Ansatzen in dem Artikel Bad Engineering Properties of Object Oriented Languages mit den Metriken Programmablaufgeschwindigkeit economy of execution Kompilationsgeschwindigkeit economy of compilation Entwicklungseffizienz fur grosse und kleine Teams economy of small scale development und economy of large scale development und die Eleganz des Sprachumfangs selbst economy of language features Er kam zu dem Schluss dass das objektorientierte Sprachdesign noch viel aus dem prozeduralen Sprachendesign lernen musste insbesondere im Bereich der guten Modularisierung der Datenabstraktion und des Polymorphismus um die hochgesteckten Erwartungen zu erfullen 17 Keine Erhohung der Produktivitat gegenuber prozeduralen Ansatzen Bearbeiten Eine Studie von Potok et al aus dem Jahre 1999 zeigte keine signifikanten Produktivitatsunterschiede zwischen OOP und prozeduralen Ansatzen 18 Die Autoren definieren Produktivitat in der Einheit entwickelte geanderte Programmzeilen pro Zeiteinheit und untersuchen insbesondere den Einfluss von Code Reuse auf diese Metrik Sie weisen darauf hin dass eine Konzentration auf Code Reuse unter Umstanden der objektorientierten Programmierung nicht gerecht wird da sie sich noch auf andere Weisen positiv auf die Produktivitat auswirken konnte beispielsweise durch ein einfacheres Design Die Autoren fuhren mehrere Grunde an weshalb die Ergebnisse ihrer Studie verzerrt sein konnten Es konnte sein dass als objektorientiert deklarierte Software in Wirklichkeit prozedural entwickelt wurde Sie analysierten nur zwei Generationen objektorientierter Software was ihrer Aussage nach zu wenig sein konnte Es konnte sein dass die Qualifikation der verschiedenen Entwicklungsteams unterschiedlich war Insbesondere ware es moglich dass die objektorientierte Software von geringer qualifizierten Teams entwickelt wurde Die Autoren vertreten die Meinung diese Punkte trafen nicht zu Siehe auch BearbeitenCommon Object Request Broker Architecture CORBA Distributed Component Object Model DCOM Liste objektorientierter Programmiersprachen Prinzipien objektorientierten Designs Reflexion Programmierung Schnittstelle Objektorientierung Literatur BearbeitenBernhard Lahres Gregor Rayman Praxisbuch Objektorientierung Galileo Computing ISBN 3 89842 624 6 Frei verfugbar auf der Verlags Website Harold Abelson Gerald Jay Sussman Julie Sussman Structure and Interpretation of Computer Programs The MIT Press ISBN 0 262 01153 0 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 0 8053 5340 2 Peter Eeles Oliver Sims Building Business Objects John Wiley amp 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 0 201 63361 2 Paul Harmon William Morrissey The Object Technology Casebook Lessons from Award Winning Business Applications John Wiley amp Sons ISBN 0 471 14717 6 Ivar Jacobson Object Oriented Software Engineering A Use Case Driven Approach Addison Wesley ISBN 0 201 54435 0 Bertrand Meyer Object Oriented Software Construction Prentice Hall ISBN 0 13 629155 4 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 0 13 629841 9 Weblinks BearbeitenPraxisbuch Objektorientierung openbook Objektorientiertes Programmieren in Java openbook Aufgaben der OOP Flash ActionScript OOP Einfuhrung in die objektorientierte Programmierung Fachwissen auf ELEKTRONIKPRAXIS ONLINE Objektorientierte Programmierung mit CEinzelnachweise Bearbeiten Alan Kay The Early History of Smalltalk In The second ACM SIGPLAN conference on History of programming languages ACM 1 Marz 1993 S 78 abgerufen am 4 Juni 2012 englisch 10 1145 155360 155364 smalltalk org Memento des Originals vom 5 Februar 2012 im Internet Archive PDF nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot www smalltalk org Alan Kay On Messaging 10 Oktober 1998 abgerufen am 4 Juni 2012 Smalltalk is not only NOT its syntax or the class library it is not even about classes I m sorry that I long ago coined the term objects for this topic because it gets many people to focus on the lesser idea The big idea is messaging Stefan Ram Dr Alan Kay on the Meaning of Object Oriented Programming fu berlin de 23 Juli 2003 abgerufen am 4 Juni 2012 englisch ISO 2382 15 1998 Information technology Vocabulary Part 15 Programming languages Revision of first edition ISO 2382 15 1985 iso org 1999 abgerufen am 4 Juni 2012 englisch a b c d Debasish Ghosh Functional and Reactive Domain Modeling Manning 2016 ISBN 978 1 61729 224 8 englisch 325 S David J Barnes Michael Kolling Java lernen mit BlueJ Eine Einfuhrung in die objektorientierte Programmierung Munchen 2009 ISBN 978 3 86894 001 5 S 496 Russell J Abbott Program design by informal English descriptions In Communications of the ACM 26 Jahrgang 1983 S 882 894 doi 10 1145 182 358441 Jorg Bewersdorff Objektorientierte Programmierung mit JavaScript Direktstart fur Einsteiger 2 Auflage Wiesbaden 2018 ISBN 978 3 658 21076 2 S 30 33 doi 10 1007 978 3 658 21077 9 4 Steve Yegge Execution in the Kingdom of Nouns steve yegge blogspot com 30 Marz 2006 abgerufen am 3 Juli 2010 Timothy Boronczyk What s Wrong with OOP zaemis blogspot com 11 Juni 2009 abgerufen am 3 Juli 2010 Scott Ambler A Realistic Look at Object Oriented Reuse drdobbs com 1 Januar 1998 abgerufen am 4 Juli 2010 Asaf Shelly Flaws of Object Oriented Modeling Intel Software Network 22 August 2008 abgerufen am 4 Juli 2010 Justin James Multithreading is a verb not a noun techrepublic com 1 Oktober 2007 abgerufen am 4 Juli 2010 Asaf Shelly HOW TO Multicore Programming Multiprocessing Visual C Class Design Guidelines Member Functions support microsoft com 22 August 2008 abgerufen am 4 Juli 2010 Ted Neward The Vietnam of Computer Science Interoperability Happens 26 Juni 2006 archiviert vom Original am 4 Juli 2006 abgerufen am 2 Juni 2010 nbsp Info Der Archivlink wurde automatisch eingesetzt und noch nicht gepruft Bitte prufe Original und Archivlink gemass Anleitung und entferne dann diesen Hinweis 1 2 Vorlage Webachiv IABot blogs tedneward com Alexander Chatzigeorgiou Performance and power evaluation of C object oriented programming in embedded processors In Information and Software Technology 45 Jahrgang Nr 4 2003 ISSN 0950 5849 S 195 201 doi 10 1016 S0950 5849 02 00205 7 Luca Cardelli Bad Engineering Properties of Object Oriented Languages In ACM Comput Surv 28 Jahrgang ACM 1996 ISSN 0360 0300 S 150 doi 10 1145 242224 242415 lucacardelli name abgerufen am 21 April 2010 Thomas Potok Mladen Vouk Andy Rindos Productivity Analysis of Object Oriented Software Developed in a Commercial Environment In Software Practice and Experience 29 Jahrgang Nr 10 1999 S 833 847 ornl gov PDF abgerufen am 21 April 2010 Normdaten Sachbegriff GND 4233947 9 lobid OGND AKS Abgerufen von https de wikipedia org w index php title Objektorientierte Programmierung amp oldid 227329957 Objektorientierte Programmiersprachen