Diskussion:Objektorientierte Programmierung

Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 9. September 2003 um 13:28 Uhr durch Lukian~dewiki (Diskussion | Beiträge). Sie kann sich erheblich von der aktuellen Version unterscheiden.

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).

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 spricht das weder 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 vom Einsatz der Vererbung ganz abraten, denn er könnte damit – weil unvollständig verstanden – einigen Schaden stiften. Wenn ein Arzt lauter solche Knochenbrüche auf dem Tisch hat, für die der Gipsverband die einzig angebrachte Behandlung ist, dann wäre eine Empfehlung an ihn, den Gipsverband "nur sehr sehr sparsam" einzusetzen, ziemlich unangebracht. Einem Blinddarmchirurgen gegenüber wäre die gleiche Bemerkung zwar nicht ganz so unangebracht, besonders klug klingt sie in dieser Situation aber auch nicht. Fazit: Es ist nicht besonders produktiv, über die Anwendungshäufigkeit eines Verfahrens zu reden, ohne die Eignung in der konkreten Situation zu berücksichtigen. Einem Programmierer, der weiß, was er tut, kann man die Entscheidung über die Mittel getrost selbst überlassen. Für einen Programmierer, der nicht weiß, was er tut, ist die Empfehlung, ein bestimmtes Mittel "sehr sehr sparsam" einzusetzen, genauso wertvoll, wie die Empfehlung an einen Arzt, der nicht weiß, was er tut, den Gipsverband nur sehr sehr sparsam einzusetzen -- Lukian 12:00, 9. Sep 2003 (CEST)