Diskussion:Objekt (Programmierung)
Der Titel "Objekt (Programmiersprache)" ist etwas unpassend, denn es handelt sich bei "Objekt" nicht um eine Programmiersprache, sondern ein Konzept in der objektorientierten Programmierung.
Was haltet Ihr von "Objekt (objektorientierte Programmierung)"?
--zeno 11:36, 23. Apr 2003 (CEST)
Das wäre eindeutig viel besser --Lukian 17:34, 23. Apr 2003 (CEST)
Drei Sätze springen mir ins Auge:
- Ein Objekt gehört immer einer Klasse an, und wird nach einer in der Klasse niedergelegten Bauvorschrift erzeugt (instanziiert).
- In objektorientierten Sprachen sind alle Objekte Instanzen von Klassen.
- Programmiersprachen, die keine Klassen, sondern nur Objekte haben, nennt man objektbasiert. Man erhält hier neue Objekte, indem man ein altes Objekt (den Prototyp) klont.
Müsste es im zweiten nicht heißen: "In klassenbasierten Sprachen ..."? Der erste Satz steht im leichten Widerspruch zu dem was folgt. Es sei denn man sagt, dass objektbasierte Sprachen keine objektorientierten Sprachen sind. Ich würde die Aussage _immer_ im ersten Satz irgendwie entschärfen.
Desweiteren:
- C++ ist konventioneller: Klassen enthalten nur die Beschreibung von Objekten.
Inwiefern ist C++ konventioneller? Was ist an Smalltalk unkonventionell? Wie definieren wir hier konventionell?
--zeno 22:32, 23. Jun 2003 (CEST)
Da der zweite Satz fast das gleiche sagte wie der Anfang des dritten Absatzes, ist er vielleicht entbehrlich.
Die Begriffe "objektorientiert" und "objektbasiert" sind mit der hier verwendeten Bedeutung ziemlich direkt aus dem englischen "object oriented" und "object based" übernommen. Wer weiß genauer, mit welchen Inhalten "klassenbasiert" schon vorbelegt ist?
Das "immer" im ersten Satz war richtig, so lange wir uns streng an den Titel des Artikels halten, in dem ja ausdrücklich von "objektorientierter Programmierung" die Rede ist, und da gilt das "immer". Für objektbasierte Programmierung gilt es nicht - vielleicht schreibt jemand einen Artikel zu "objektbasiert"? -- Lukian 11:51, 24. Jun 2003 (CEST)
- Der Unterschied koennte auch in diesem Artikel dargestellt werden. --zeno 13:47, 24. Jun 2003 (CEST)
Die Diskussion über das Objekt scheint eingeschlafen zu sein, daher frische ich sie wieder mal auf :) und ich beziehe mich auf die akt. Version des Artikels.
"In klassischen objektorientierten Sprachen sind alle Objekte Instanzen von Klassen."
Wieso klassischen? Ich würde sagen das ist wissenschaftlich definiertes Fakt in der Objektorientierung. Der folgenden Absatz suggeriert, Smalltalk gehört nicht zu den klassischen Sprachen (also wirds dort anders sein ...). Doch auch in Smalltalk sind alle Objekte Instanzen von Klassen (Metaklassen) oder etwa nicht?
Bei der Beschreibung von objektbasierten Sprachen (muss allerdings dazu sagen, dass ich von denen zum ersten mal höre und ka habe) versteh ich auch was nicht. Woher kommen die Objekte, wenns keine Klassen gibt?
"Es reicht prinzipiell aus, Prototypen, also bereits vorhandene Objekte zu klonen"
Was ist der Unterschied von einem solchen Prototyp zu einer Klasse?
Zs.gefasst finde ich den Artikel derzeit noch etwas verwirrend ... würde ihn gerne verbessern aber mir scheints da noch an Fachkenntnis zu fehlen. --brunft 23:52, 9. Mär 2004 (CET)
- Ich hab doch mal einen Vorschlag zur Änderung gemacht. Und dabei ist mir auch ein Licht aufgegangen, was es mit diesem objektbasierten Sprachen auf sich hat und ich meine nun, doch Bescheid zu wissen.
- "(...) zeichnet sich eine interessante Weiterentwicklung der klassischen, klassenbasierten OO ab"
- IMO Humbug, denn objektorientiert programmieren ohne Klassen zu definieren ist vielleicht einfacher (weniger Schreibarbeit) aber nicht zugleich besser! Wenn ich richtig liege, ist es damit zu vergleichen, keine Datentypen anzugeben? Ich will jetzt nicht die unzähligen Nachteile (zB Fehlerquellen) im Detail aufzählen, die dadurch enstehen. Auf jeden Fall ist das keine Weiterentwicklung sondern simple Vereinfachung, die trotz Objektorientierung schnellere und einfachere Entwicklung von kleinen Prg. ermöglichen soll und spätestens bei der Entwicklung von komplexer Software an ihre Grenzen stößt.
- Also der dritte Absatz gehört IMO unbedingt geändert. Mach ich gerne, wenns keine groben Einwände gibt ... --brunft 00:41, 10. Mär 2004 (CET)
- Ich teile diese Ansicht. Das Einzige, was mir in der Richtung je über den Weg gelaufen ist, ist das Entwurfsmuster Protoyp. Ausserdem bezeichnet der Begriff objektbasierte Programmierung m. E. die Programmierung mit Objekten (und Klassen) jedoch ohne das Konzept der Vererbung (und manchmal auch ohne Schnittstellen). (Beispiele: Visual Basic, JavaScript). Siehe dazu auch die Abgrenzung im Artikel Objektorientierte Programmierung. Den Begriff "objektbasierte Objektorientierung" habe ich noch nie gehört. Was sagt denn Benutzer:Lukian dazu, von der Abschnitt ursprünglich stammt? -- Jpp 08:57, 10. Mär 2004 (CET)
- Der Gegensatz ist nicht objektorientiert vs. objektbasiert, sondern objektbasiert vs. klassenbasiert. Beide Sorten von Sprachen (objektbasierte und klassenbasierte) sind objektorientierte Programmiersprachen. --zeno 09:43, 10. Mär 2004 (CET)
Hab den letzten Absatz jetzt ganz rausgenommen, und dann doch (stark) umformuliert versucht zu ersetzen. Nachteile sollten vielleicht noch ausformuliert werden --brunft 20:14, 10. Mär 2004 (CET)
Der Begriff Instanz ist ungern gesehen, da er schlicht durch einen Übersetzungsfehler des englischen „instance“ herrührt, was zu deutsch in diesem Kontext lediglich Exemplar bedeutet. Der Begriff Methode meint im deutschen eher das Entwicklungsverfahren, wie CRC-Karten, der Begriff Operation ist hier präziser. Anmerkung: Ich zöge die Formulierung „Programmierung nach dem Objekt-orientierten Paradigma“ eher vor, als von Objekt-orientierter Programmierung zu sprechen, da OOP nur eine Denkweise ist. Man sollte auf jeden Fall die Sprache Eiffel von Bertrand Meyer erwähnen. Und das Prinzip des Vertragsmodells wie „durch Zusicherungen von definierten Ergebnissen einer Operation und der Prüfung zu Laufzeit dieser Ergebnisse auf Erfüllung unter definierten Vorbedingungen, entsteht eine sich selbst kontrollierende Softwarekomponente.“ (oder so ähnlich)
--Just-Z
Verstehbar?
ich möchte gern verstehen, was ein Objekt ist. Aber diesen Artikel verstehe ich nicht. Vielleicht wären für mich ein paar Beispiele (in deutscher Sprache) leichter zu verstehen? Oder eine erläuternde Grafik? Danke, --Markus Bärlocher 01:03, 6. Sep 2006 (CEST)