Diskussion:Objekt (Programmierung)/Archiv/1
Lemma
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
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)
Wieso klassisch?
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)
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)
Ich finde den Artikel in Teilen nicht besonders gelungen. Schon der erste Satz enthält mehrere Unklarheiten:
- Ein Objekt ist keine „Instanz“, sondern eine logisch zusammengehörige Entität, die durch einen Zustand und einer Menge von Operationen, die den Zustand des Objekts ändern, definiert wird.
- Der Term in der Objektorientierung suggeriert, dass die „Objektorientierung“ eine Disziplin sei. Besser: Informatik.
- Es ist nicht so, dass Objekte durch Klassen definiert werden, vielmehr sind Klassen Zusammenfassungen und Vereinheitlichungen von gleichartigen Objekten. In der objektorientierten Denkweise ist das Objekt der Grundbaustein, die Klasse muss als Konzept nicht einmal vorhanden sein.
Die nächsten Sätze enthalten weitere Ungenauigkeiten. Vor allem wird das abstrakte Modell eines Objekts mit konkreten Realisierungen in Programmiersprachen vermischt. Begriffe wie Datentyp, Klasse, Objekt, Instanz, Exemplar, Daten, Attribute, Methoden und Operationen werden eher wahllos gebraucht, dabei sind sie klar definiert. Die letzten zwei Drittel des Artikels bestehen aus einer reinen Metadiskussion des Begriffs Instanz, obwohl es um diesen Begriff in dem Artikel gar nicht geht. --Phst 01:47, 1. Nov. 2006 (CET)
Noch schlimmer ...
Ich wollte wissen was Instanz im Zusammenhang mit OOP bedeutet. Ich wurde mehr oder weniger direkt zu diesem Artikel geleitet. Jetzt weiß ich weniger als vorher. Das einzige was ich weiß, ist dass dieser Artikel überhaupt nicht zu verstehen ist. Jedenfalls für einen Leihen wie mich. Vieleicht sollte der Artikel in wenigstens zwei Artikel getrennt werden. (Objekt und Instanz). Weil meine Kenntnisse nicht weit genug reichen kann ich zu einer Verbesserung des Artikels leider nichts beitragen.
Im Artikel heisst es: "Aus sprachwissenschaftlicher Sicht ist ein Objekt deshalb keine Instanz einer Klasse, weil dies eine Fehlübersetzung des englischen Begriffes Instance ist. Tatsächlich ist die richtige Übersetzung des Englischen Begriffes Instance etwa Objekt, Exemplar oder Ausprägung. Den abgeleiteten Verbformen wie instanziieren oder ähnlichen ist dementsprechend ausprägen, Objekt erzeugen oder Objekt anlegen vorzuziehen." Das stimmt so nicht ganz: die Bezeichnung "Instanz" ist hier keine Übersetzung aus dem Englischen auf den deutschen Begriff "Instanz" (das wäre tatsächlich falsch!) sondern ein in die deutsche Sprache eingeführter Anglizismus der inzwischen sehr weit verbreitet ist, der dazu führt dass die Bezeichnung "Instanz" tatsächlich als Homonym für verschiedene Begriffe auftritt. In diesem Sinn ist auch die Verbform "instanziieren" zu verstehen. R.K.A.L. 15:16, 16. Nov. 2006 (CET)
Es tut mir leid, aber die aktuelle Version des Artikels gibt nicht mehr den tatsächlichen Sprachgebrauch wieder. Der Artikel sollte keine sprachwissenschaftliche Belehrung sein, sondern eine Beschreibung des tatsächlichen Spachgebrauchs. In der Objektorientierung wird der Begriff Instanz im Sinne von Expemplar verwendet. Ob das nun ursprünglich ein Übersetzungsfehler war oder nicht spielt dabei keine Rolle. Es gibt nun mal Homonyme in der Sprache die verschiedene Bedeutungen in unterschiedlichen Kontexten haben, und in diesem Fall hat sich ein solches Homonym bereits etabliert. Wenn ich sage "ich sitze auf einer Bank", dann ist aus dem Kontext zu erschliessen dass damit nicht das Geldinstitut gemeint ist. Genauso ist aus dem Kontext zu entnehmen dass eine Instanz einer Klasse ein Exemplar dieser Klasse ist. R.K.A.L.
Ich habe die Bezeichnung "Instanz" wieder eingeführt, weil sie dem tatsächlichen Sprachgebrauch entspricht. Beispiel: Google-Suche: "Ausprägung einer Klasse" liefert 94 Treffer "Exemplar einer Klasse" liefert 333 Treffer "Instanz einer Klasse" liefert 24800 Treffer R.K.A.L.
Und ich habe die Bemerkung zu der angeblich falschen Übersetzung ganz entfernt. Sie ist nämlich falsch, es ist keine falsche Übersetzung. Eine Bemerkung dazu steht im Instanz (Informatik) Artikel, falls jemand interessiert ist.
- Danke! Gruss R.K.A.L. 17:43, 30. Mai 2007 (CEST)
Instanz
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
Ist wirklich jede Instanz eines beliebigen Datentyps in jeder Sprache (also nicht objektorientierten Sprachen) ein Objekt. (Also auch ein int in C ein Objekt)???
(Der vorstehende Beitrag stammt von 80.171.26.178 – 16:59, 18. Jan. 2006 (CET) – und wurde nachträglich signiert.)
- Im Prinzip schon. aber int in C oder Java werden idR anders behandelt "Simple Types" --P.C. ✉ 17:03, 18. Jan 2006 (CET)
- das klingt mir fischig, einen wert ohne methoden als objekt zu bezeichnen.. -- ∂ 17:05, 18. Jan 2006 (CET)
Ich finde, wir sollten hier die Kirche im Dorf lassen und nicht primitive Datentypen als Objekte einführen. Hierzu konkret:
- C kennt keine Objekte.
- Auch in Java ist ein Wert vom Typ int kein Objekt.
Besser fände ich z.B. eine Darstellung, wo die verschiedenen Programmiersprachen die Grenze zwischen primitiven Datentypen und Objekten ziehen. Über Meinungen zu diesem Vorschlag würde ich mich freuen. --Martin Wagenleiter 21:53, 22. Jan 2006 (CET)
Das wäre auf jeden Fall auch mehr in Übereinstimmung zu Instanz (Informatik). --80.171.25.209 19:55, 2. Feb 2006 (CET)
- Man kann auch einfach danach gehen, wie in der jeweiligen Programmiersprache "Objekt" definiert wird. In C z.B. sehr simpel, siehe Abschnitt 3.14:
- „object: region of data storage in the execution environment, the contents of which can represent values. Note: When referenced, an object may be interpreted as having a particular type; see 6.3.2.1.“
- --RokerHRO 10:17, 30. Dez. 2009 (CET)
Gebrauch?
Interessant. "Objekt" war für mich immer etwas anderes: Ich sah "Objekt" immer als mögliche Instanz, wie auch als Klasse. "Haus" ist für mich Objekt, sowohl als Instanz: das gelbe Haus an der Strassenecke; als auch als Klasse: wenn ich eine Klasse "Haus" definiere, ist das für mich das Haus "Objekt". Im Normalfall (mein Sprachgebrauch) definiere ich "Objekt"e, nicht "(Objekt)klasse"n. -> "Ist dieses 'Objekt' von jenem abgeleitet?", (ich) nicht "Ist jene 'Klasse' von dieser abgeleitet?" (Vielleicht bin ich ja Java/Implementation ("Object") geschädigt.) --Alien4 03:36, 28. Feb. 2007 (CET)
Diese unscharfe Interpretation habe ich auch schon einige Male gehört. Vielleicht, weil bei jeder Java-Einführung immer gesagt wird "Everything is an object" (Eckel "Thinking in Java" S.31). Dennoch bin ich der Meinung, dass die übliche Interpretation die ist, ein Objekt als Instanz einer Klasse aufzufassen. Das stimmt auch mit der Begrifflichkeit in Java überein: "Every object has a type" (Eckel "Thinking in Java" S.32). R.K.A.L. 12:30, 28. Feb. 2007 (CET)
- Mag so sein; obschon ich vielleicht bezweifle, dass ich das von Java habe, und nicht eher schon bevor ich mich überhaupt mit Java beschäftigt habe. Ob das also wirklich von Java kommt(...) --Alien4 18:46, 26. Mär. 2007 (CEST)