Diskussion:Objektorientierte Programmierung
So wahnsinning neu ist OOP auch nicht mehr. 1980 kam mit Smalltalk eine vollständige OOP-Sprache heraus, die ihrerseits auf der objektorientierten Sprache Simula beruhte. Der Artikel sollte etwas stärker fokussiert und stilistisch verbessert werden. Nützlich wäre auch den Bezug zu Abstrakter Datentyp und Modul, bzw. Komponente herzustellen. Wer wagt es? --HHK
Der beste Neustart wäre wohl erst mal die Übertragung des englischen Artikels - sobald ich dazu komme. Lukian
Aus dem Artikel erst mal nach hier geholt, da etwas fragwürdig:
Deshalb wird Vererbung in der Objektorientierten Programmierung inzwischen sehr sparsam eingesetzt (vgl. Kreis Ellipse Dilemma).
- Interface:Ein Interface bietet eine weiter Möglichkeit Polymorphie zu realisieren und vermeidet dabei die Probleme der Vererbung.
Kommentar:
- "inzwischen sehr sparsam" kann ich so pauschal nicht nachvollziehen; ob und wie man Vererbung korrekt einsetzt, sollte von der konkreten Aufgabe abhängen, und weniger von Moden, die "inzwischen" kommen und gehen. Das ganze Smalltalk-System z.B. lebt regelrecht von Vererbung, die kann man da nicht "inzwischen sehr sparsam" einsetzen.
- Das "Dilemma" ist keins; siehe im dortigen Artikel
- Im Satz vor dieser Aufzählung steht, was hier aufgezählt wird, nämlich einige unstrittige Charakteristika der OOP. Die Interface-Bemerkung gehört zweifelsfrei nicht hierher und ist mir, wenn sie etwas bestimmtes aussagen will, so zu allgemein. -- Lukian 13:41, 8. Jul 2003 (CEST)
Viele Autoren von Fachbüchern gehen inzwischen sehr deutlich in Distanz zur Vererbung:
* Nico Josurtis in "Erfolgreich mit Objektorientierung" (ISBN: 3486255657): "Vermeide Vererbung" (die genaue Textstelle habe ich dezeit nicht zur Hand. * http://www.javaworld.com/javaworld/jw-08-2003/jw-0801-toolbox.html
In dem Java-World Artikel kommt James Gosling (Java's inventor) zu dem Satz: Vermeide Vererbung wenn immer möglich!
Zum Thema Interfaces: Seit es in Java Interfaces als Sprachelement gibt, werden Interfaces auch in anderen OO Sprachen (C#, Delphi ...) eingeführt. Neue Sprachen wie .NET und Java verzichten meines Erachtens nach ganz bewusst auf Mehrfachvererbung und bringen stattdessen Interfaces.
Ich gebe dir in sofern Recht, dass es bei OO um das Konzept der Polymorphie geht. Vererbung und Interfaces sind nur Umsetzungen dieses Konzepts. Aber dann sollten weder Interfaces noch Vererbung im Artikel als wesentliche Merkmale auftauchen.
Es ist eins der am meisten verbreiteten Missverständnisse, gegen die ich in meinen Schulungen kämpfe, dass OO = Vererbung ist. Diese Sicht war von 10 Jahren sicher richtig. Die Erfahrungen der letzten Jahre zeigen aber, dass Vererbung eher das Problem als die Lösung ist.
Dass sowohl Smalltalk als auch C++ Biblotheken reichlich Vererbung einsetzen ist sicherlich richtig. Das liegt aber zum großen Teil daran, dass die entsprechenden Systeme auch schon gut 10 Jahre alt sind. Moderne OO Software sollte Vererbung nur sehr sehr sparsam einsetzen (siehe Java World Artikel). Die Kombination aus Delegation (für die Wiederverwendung) und Interface für die Polymorphie ist auf jeden Fall die bessere Wahl.
Das Kreis Ellipse Dilemma ist aus meiner Sicht ein gutes Bespiel, da schon dieses triviale Problem sich eben nicht mit einer Vererbung (ein Kreis ist ein Sonderfall einer Ellipse) lösen lässt. -- Guido 16:00h, 25. Jul 2003 (CEST)
Wer sagt, dass sich der Gipsverband nicht zur Behandlung einer Blinddarmentzündung eignet, hat natürlich recht. Wer sagt, dass sich Vererbung nicht für den Fall Ellipse/Kreis eignet, hat natürlich auch recht. Gleichzeitig ist das weder ein Argument gegen den Gipsverband noch gegen die Vererbung. Wer nach genügend häufigem Lesen der Clineschen Abhandlung http://users.utu.fi/~sisasa/oasis/cppfaq/proper-inheritance.html nicht früher oder später verinnerlicht (im englischen sagt man "to know by heart"), dass Vererbung für den Fall Kreis/Ellipse schlicht die falsche Behandlung ist, dem kann man nicht empfehlen, "Vererbung nur sehr sehr sparsam" einzusetzen, sondern dem muss man den Einsatz von Vererbung strikt verbieten, denn er würde sie weil unverstanden mit Schaden einsetzen. -- Lukian 12:00, 9. Sep 2003 (CEST)