Diskussion:Objektorientierung
Überführung der OOP-Anteile in den Artikel Objektorientierte Programmierung
BearbeitenIch habe heute die OOP-relevanten Anteile in den Artikel Artikel Objektorientierte Programmierung überführt. Hier bitte nur noch übergreifende Inhalte zum Konzept OO einstellen. -- ReqEngineer Au weia!!! 11:00, 15. Aug 2006 (CEST)
unverständlich
BearbeitenIm Artikel steht: ... ist ein Ansatz zur Entwicklung von Software, der darauf beruht, die zu verarbeitenden Daten gleichzeitig anhand ihrer Eigenschaften und der möglichen Operationen zu klassifizieren. .
- Welche zu verarbeitenden Daten sind hier gemeint?
- Warum muss die Klassifizierung gleichzeitig stattfinden?
--Fra Diavolo 23:59, 18. Aug 2006 (CEST)
Es sind alle Daten gemeint, die innerhalb des Programms verwendet oder von ihm erzeugt werden. In der Sprache Java geht das Konzept sogar so weit, dass man das ganze Programm als eine Klasse ansieht, aus der das Programm selbst als Objekt hervorgeht. Die Klassifizierung beinhaltet bereits alle Operationen (Methoden) und Eigenschafften (die Daten) des Objektes und können darauf folgend verwendet werden. Sie sind daher gleichzeitig, da die Operationen ebenso zu einem Objekt gehören und nicht an anderer Stelle von außen zugeführt werden müssen. Zum Beispiel: Der Hund bellt. Es ist die eigene Handlung, die jedes Objekt vom Typ Hund mitbringen muss, zu bellen.
--Freak 1.5 14:14, 26. Sep 2006 (CEST)
Meiner Meinung nach ist der Artikel zu speziell und weniger allgemein. Aufgefallen ist mir das beispielsweise gleich im ersten Satz. OO ist eben nicht nur ein Ansatz zur Entwicklung von Software, sondern zum Beispiel auch eine Methode, um Diskursbereiche der realen Welt in ein Datenbankschema zu formen (man geht dabei etwas anders vor, weil man beispielsweise nicht alle Möglichkeiten der OO ausnutzt, aber es ist ein objektorientierter Entwurf, bei dem auch UML als Sprache zum Einsatz kommt). Formulieren würde ich es also, dass OO ein Konzept zur Abbildung von Bereichen der realen Welt ist. Die populärste Anwendung der OO ist dabei die Softwareentwicklung (in der OO eine Variante des Prinzieps "Teile und Herrsche (Informatik)" darstellt). Letzteres wird durch den letzten Absatz im Artikel angeschnitten.
Weiterhin finde ich nicht, dass Klassen "nur eine Ergänzung" von OO sind. Sie sind viel mehr Kern der OO und dienen als eine Art Schablone für Objekte. Klassen sind dabei Abstraktion und Objekte Ausprägung (oder Instanz der Abstraktion). Ich finde, es ist besonders wichtig, dass man auf diese Beziehung eingeht, denn "Abstraktion und Ausprägung" ist das Hauptprinzip in der Informatik, dass sich in allen Bereichen wiederfinden lässt.
Auch müsste man gesondert auf die wichtigsten Arten von Beziehungen zwischen Klassen (und damit auch zwischen Objekten) eingehen, also Vererbung, Assiziation und Aggregation.
Des weiteren wäre wohl ein Beispiel, vielleicht anhand eines Autos, angebracht: Das Auto besteht aus (Aggregation) Rädern, Türen, Lenkrad, Sitzen, ... . Dabei kann man zwischen Hintersitzen und Fordersitzen, sowie zwischen forderen Rädern und hinteren Rädern unterscheiden (Vererbung). Die Funktion des Lenkrads hat einen Einfluss auf die forderen Räder (Assoziation). Bei dieser Abstraktion ist noch keine Aussage über Marke und Typ des Autos nötig, genau so wenig über Farbe und Größe der Räder. Dies kommt erst bei der Ausprägung, also der Instanziierung als Objekt zur Geltung.
--84.179.204.47 11:44, 21. Okt. 2006 (CEST)
Eines der Hauptprobleme bei der Entwicklung dieses Artikels liegt in der Überschneidung mit dem Artikel "Objektorientierte Programmierung".
Tatsächlich sollte ein Großteil der Änderungen vorgenommen werden. (Insbesondere die Klasse als Kernaspekt der OO. Allerdings können durchaus Objekte verwendet werden, ohne das man generalisierende Klassen schreibt. Das ist nur die nächste Stufe, um die Wiederverwertbarkeit einzuführen. Letztendlich stehen die Klassen im Mittelpunkt, weil sie eben die Aspekte der Polymorphie etc. erst ermöglichen und sinnvoll machen.) Ebenso wie die Verwendung eine Beispiels. Hierbei ist vermutlich das in der Literatur sehr häufig verwendete Säugetier am einfachsten zu verstehen wegen der Brücke zur Biologie.
Das bei der Entwicklung von Datenbanken eine ähnliche Diagramm-Sprache wie UML verwendet wird und die Datenmodellierung vergleichbar ist mit der Schaffung von Objekten, kann kurz erwähnt werden. Tatsächlich geht die OO sehr viel weiter, als nur das reine Abspeichern von Eigenschafften zu beschreiben. Schließlich stellt eine Tabelle keine Klasse dar.
Zudem sollte Verweise auf folgende Artikel leichter zugänglich sein:
Die oberen Beiden Artikel sollten dabei komplett oder wenigstens teilweise neu überarbeitet werden. Die sind einfach nicht ausreichend. (meiner Meinung nach)
--Freak1.5 18:49, 21. Okt. 2006 (CEST)
- Mir wäre kein Ansatz außerhalb der Softwareentwicklung bekannt, in dem OO vorkäme. Was sollte dies sein? -- ReqEngineer Au weia!!! 22:39, 21. Nov. 2006 (CET)
unverständlich2
BearbeitenDer Artikel ist wirklich unverständlich. Es fehlt ein Faden durch den Artikel. Zuerst wird von Datenkapselung gesprochen, es erschliesst sich aber nicht, welche Daten gemeint sind. Dann sind Klassen Sammlungen von Objekten, dann wiederum Konstruktionsvorschriften. Dann wird auf die Abstraktion der realen Welt in Objekte gesprochen. Alles ist richtig, aber in welcher Reihenfolge wird denn nun abstrahiert? Was ist Objektorientierung? Woher kommen die Objekte? Besser wäre daher ein Faden ala "Reale Objekte werden klassifiziert aus diesen während des Programmlaufes konstruiert (instanziiert) und werden durch Referenzen (Namen) angesprochen". An einem solchen Satz kann man die Abschnitte gut herausarbeiten. -- vicbrother 18:20, 25. Feb. 2009 (CET)
- Nach langer Zeit meldet sich hier mal wieder ein Diskutant. Gut so. Es fehlt aber nicht nur der Faden. Es ist so wie immer: etwas schwappt über den großen Teich hierher rüber. Alle reden davon. Die Kernidee haben nur wenige verstanden. Jetzt werden Fremdworte (Polymorphie, Instanzierung usw.) erklärt und das soll ausreichen. Die Kernidee heisst dann Paradigma. Dabei ist doch eins entscheidend: die Aussagen der Nichtprogrammierer, der Nichtinformatiker erhalten das entscheidende Gewicht. Diese entscheiden (pragmatisch): Was ist ein Objekt und welche Eigenschaften hat es. So wird das "Wasserzulaufventil xy" gesteuert, angezeigt, nachbestellt, montiert, gewartet, kalkuliert und, und und.-- Kölscher Pitter 11:37, 29. Jul. 2009 (CEST)
- Ich habe nun auch nicht mehr auf den Artikel aufgepasst - so hat er sich nun wieder zu einem der üblichen Laberartikel entwickelt, wo jeder was dazuschreibt... An einer Reduktion auf die Kernidee wäre ich auch interessiert, halte aber Polymorphie, Instanzierung usw. schon für relevant. Zumindest um die richtigen Verweise zu setzen. Am besten, man würde sich auf historische oder zumindestens relevante Quellen d.h. wahre Fachleute beziehen, z.B. Meyer. ReqEngineer Au weia!!! 18:41, 27. Aug. 2009 (CEST)
- Ja, sehr richtig!!!
- Der Schwerpunkt auf OOP und Softwareentwicklung ist ein ganz großer Mangel dieses Artikels und nicht nur dort - besonders intensiv wird das "OO-Bashing" zur Zeit von bestimmten Kreisen betrieben (sh. Business/IT-Alignment sowie auch die agile Szene). Wenn man die "alten Meister" zum Thema OO liest (ich bevorzuge Grady_Booch, James_Rumbaugh u.a.) ist da sehr viel mehr von einem allgemeinen Konzept die Rede, und OOP wirklich nur eine Anwendung. Die öffentliche Wahrnehmung von "OO" ist leider etwas "verrutscht", weil halt alle Leute nur OOP gemacht haben und OO sowieso nur die wenigsten gelesen und verstanden haben. Nachdem der Hype vorbei war, hieß es dann: OO taugt nix, aber die konkrete Kritik bezieht sich immer nur auf die konkreten OOP-Ansätze (und natürlich auf die durch den Hype naturgemäß geweckten überzogenen Erwartungen).
- @ ReqEngineer : Du schriebst seinerzeit "Mir wäre kein Ansatz außerhalb der Softwareentwicklung bekannt, in dem OO vorkäme". Nun, es gibt den Bereich der "Analyse und Modellierung von Unternehmen", der sich am Ende zwar meist schon auch mit Software befaßt, im Ansatz aber zunächst rein Unternehmens-fachlich ist, dort kann OO sehr gut ohne Bezug zu Software angewandt werden. Ganz besonders ist dies im Bereich "Business Process Modelling (BPM)" der Fall, hier gibt es eine bekennende Gruppe von nicht-IT-Leuten, die gerne modellieren möchten ohne etwas mit Software zu tun haben zu wollen. Andreas (nicht signierter Beitrag von 85.177.172.73 (Diskussion | Beiträge) 09:44, 2. Dez. 2009 (CET))
Schwachsinniger Artikel
BearbeitenHallo,
ich programmiere seit Jahren Quellcode auf OOP Basis. Leider ist dieser Artikel absolut hirnverbrannt wenn es darum geht jemanden in diese interessante Materie einzuführen.
Gruß,
C. (nicht signierter Beitrag von 84.184.178.101 (Diskussion | Beiträge) 19:39, 22. Mär. 2010 (CET))
- Na wenn du so ein Programmiergenie bist, verbessere doch den Artikel! Hirnverbrannt finde ich eher unkonstruktives Rumgetrolle und die Darstellung der eigenen Meinung ("diese interessante Materie") als Fakt. Ein Enzyklopädie-Artikel ist übrigens keine Einführung. --213.221.250.85 18:06, 8. Dez. 2010 (CET)
Frage zum Abschnitt Polymorphie
BearbeitenWorauf bezieht sich der Satz "Hinzu kommt mit der Aggregation die Unterscheidung ...". Kommt die Aggregation zur Polymorphie dazu (wenn ja, wie? oder zur Objetorientierung allgemein? --Weekeebit (Diskussion) 12:23, 10. Dez. 2012 (CET)
zum Abschnitt "Vererbung"
BearbeitenIm Abschnitt "Vererbung" steht: "Wird keine Vererbung zugelassen, so spricht man zur Unterscheidung oft auch von Objektbasierung." Dies ist m.E. nicht richtig, Sprachen wie JavaScript sind objektbasiert und lassen Vererbung zu. Objektbasiert heißt "Existieren in der gewählten Programmiersprache keine Klassen oder werden diese explizit unterdrückt, so spricht man zur Unterscheidung oft auch von objektbasierter Programmierung. " (s. Objektorientierte Programmierung Dieses Thema wird aber generell widersprüchlich dargestellt, z.B. "Die objektbasierte Programmierung ist ein Programmierparadigma, das Objekte und damit das Prinzip der Datenkapselung unterstützt. Im Gegensatz zur objektorientierten Programmierung unterstützt die objektbasierte Programmierung keine Vererbung." http://www.itwissen.info/definition/lexikon/Objektbasierte-Programmierung-object-based-programming.html und "Die prototypbasierte Vererbung in JavaScript basiert darauf, dass jedes neu erzeugte Objekt eine implizite Referenz auf den Prototyp seines Konstruktors besitzt. Eine mehrstufige Vererbung ist dadurch möglich, dass der Prototyp eines Objekts selbst wieder eine Referenz auf einen weiteren Prototypen besitzen kann." http://www.teialehrbuch.de/Kostenlose-Kurse/AJAX/31940-Objektbasierte-Programmierung.html Gibt es irgendwo eine belastbare, anerkannte Definition? --Wikiemmbee (Diskussion) 17:25, 6. Jun. 2013 (CEST) Noch einen interessantenHinweis zu diesem Thema gibt das "Tachenbuch Programmiersprachen" auf Seite 27/28. Leseprobe zum "Tachenbuch Programmiersprachen"--Wikiemmbee (Diskussion) 17:43, 6. Jun. 2013 (CEST)
Der Artikel basiert, wie viele andere hier, auf dem Missverständnis, dass Objektorientierung irgendwas mit Klassen zu tun habe. Das war schon immer falsch, ist falsch und wird mutmaßlich ewig falsch bleiben. Es ist eine Legende, die irgendwann mal von Erfindern früh bindender Sprachen in die Welt gesetzt worden ist, um das Etikett "Objektorientiert" draufkleben zu können. Die Existenz von prototypenbasierten, objektorientierten Sprachen belegt, dass es keine Verbindung von Objektorientierung zu Klassenbasierung gibt. Sonst dürfte es nämlich gleichzeitig prototypenbasierte und objektorientierte Programmiersprachen gar nicht geben.
Wiederholung von Urban-Legends auf Wiki. Genau so sollte es nicht sein. Amin Negm-Awad (Diskussion) 10:37, 13. Jun. 2013 (CEST)
- Vermutlich hast du recht - vielleicht änderst du es im Artikel? --Sebastian.Dietrich ✉ 20:42, 13. Jun. 2013 (CEST)
Geschichte
BearbeitenWann wurde die Objektorientierung von wem eingeführt? (nicht signierter Beitrag von 185.82.160.20 (Diskussion) 13:13, 1. Jun. 2016 (CEST))
Funktionales DDD
Bearbeiten"In Programmiersprachen, die nicht auf Objektorientierung eingerichtet sind, werden Daten und Programmteile bewusst getrennt; sie müssen separat deklariert werden."
Gilt das auch für funktionale Programmierung? Funktionales DDD zum Beispiel?