Diskussion:Abstrakte Klasse

aus Wikipedia, der freien Enzyklopädie
Letzter Kommentar: vor 5 Jahren von Kp0 in Abschnitt Beispiel verwirrend
Zur Navigation springen Zur Suche springen
Diese Diskussionsseite dient dazu, Verbesserungen am Artikel „Abstrakte Klasse“ zu besprechen. Persönliche Betrachtungen zum Thema gehören nicht hierher. Für allgemeine Wissensfragen gibt es die Auskunft.

Füge neue Diskussionsthemen unten an:

Klicke auf Abschnitt hinzufügen, um ein neues Diskussionsthema zu beginnen.

Hochachtung vor dem Autor. Klasse gemacht!
(Der vorstehende Beitrag stammt von HbJ – 01:00, 1. Jun. 2003 (MESZ) – und wurde nachträglich unterschrieben.)

dem möchte ich mich anschließen! ich habe den Artikel verstanden, obwohl er in der Kategorie "Programmierung" steht - sowas passiert mir sonst nie... --feba 13:21, 15. Feb 2006 (CET)

Problematisches Beispiel: Basisklasse „Tier“[Quelltext bearbeiten]

Das Problem an dem Beispiel ist, dass die Basisklasse Tier gar keine abstrakte Klasse ist (wenn sie nicht ausdrücklich so delariert wird) . Man kann sehr wohl ein Objekt der Klasse Tier erzeugen (und es später als Kuh oder Schwein spezialisieren). Das liegt daran, dass die Tier-Klasse keine abstrakte Methode enthält, nur gemeinsame Methoden, die Schwein und Kuh gleichzeitig verwenden.
(Der vorstehende Beitrag stammt von 217.80.88.51 – 00:40, 21. Jun. 2006 (MESZ) – und wurde nachträglich unterschrieben.)

Oberklasse vs Basisklasse[Quelltext bearbeiten]

sehr verständlich, das ganze, aber es werden für dieselbe Art von Klassen (im Beispiel: Klasse Tier), verschiedene Begriffe benutzt (Oberklasse/Basisklasse) ist die Klasse nun Basis, also unten, oder Ober, also oben??, 2h später weiss nun das Oberklasse/Basisklasse synonyme sind. doch wäre es besser im Artikel einen Begriff dafür zu benutzen.
(Der vorstehende Beitrag stammt von 195.176.0.202 – 15:48, 18. Aug. 2006 (MESZ) – und wurde nachträglich unterschrieben.)

Datei:Generalization-1.png
Basisklasse: Person
Unterklasse: Privatkunde
Vielen Dank für den Hinweis! Ich hatte stillschweigend die Begriffe "Basisklasse" und "Oberklasse" synonym benutzt, ohne zu ahnen, dass das Fragen aufwerfen könnte; es gibt keinen Bedeutungsunterschied zwischen beiden Bezeichnungen. Helmut Balzert verwendet in seinen Lehrbüchern die Bezeichnung "Oberklasse", während hier in der Wikipedia bisher nur Basisklasse als Stichwort existiert hatte. Geeignete Querverweise werde ich nachher noch machen. In der grafischen Darstellung hat sich eingebürgert, dass die Basisklasse oberhalb der abgeleiteten Klasse gezeichnet wird; das kann den verwirren, der erwartet, die "Basis" irgendwo unten zu finden.
(Der vorstehende Beitrag stammt von Lukian – 16:30, 18. Aug. 2006 (MESZ) – und wurde nachträglich unterschrieben.)

Schweine geben doch Milch[Quelltext bearbeiten]

Martin83MZ: ((Schweine gebe keine Milch) entfernt. Dies sollte zur Allgemeinbildung gehören und ist daher hier eher überflüssig.) Selbstverständlich hat Martin83MZ recht, und selbstverständlich wussten alle bisherigen Leser das, ohne die biologisch falsche Aussage zu beanstanden. Im Sinne der Absicht des Artikels, die Idee der abstrakten Klasse zu erläutern, ist es aber günstiger, die Bemerkung nicht ersatzlos zu streichen, sondern durch eine Formulierung zu ersetzen, die deutlich macht, weshalb es bei der einen Klasse Attribute gibt, die für die andere Klasse nicht benötigt werden. -- Lukian 10:20, 10. Feb. 2007 (CET)Beantworten

Bin ich auch der Meinung ----
(Der vorstehende Beitrag stammt von 193.22.76.13 – 14:30, 11. Mai 2007 (MESZ) – und wurde nachträglich unterschrieben.)

Neue Version[Quelltext bearbeiten]

Der Artikel war dermassen schlecht, dass ich ihn sofort gelöscht und mit einer neuen Version angefangen habe. Der überwiegende Teil des Artikels handelte davon, welchen Sinn es denn hat, abstrakte Klassen zu verwenden. Darin vermisst habe ich lediglich den tatsächlichen Grund. "Es gebietet die Vernunft"??? "Aus programmorganisatorischen Gründen"??? So ein Bockmist. Der Artikel stammt definitiv von einem Amateur oder Anfänger.
Ich behaupte nicht, dass meine neue Version der Weisheit letzter Schluss ist - aber sicher besser als was bisher hier vorhanden war. --Trugbild 15:42, 9. Jan. 2008 (CET)Beantworten

Hallo Trugbild, Dir liegt daran, dass die Artikel in der Wikipedia gut sind. Mir auch, mindestens so sehr wie Dir. Als Autor der früheren Version fühle ich mich durch Attribute wie "dermaßen schlecht" und "Bockmist" schon genötigt, hier irgendwie zu reagieren, zudem ich weder Amateur noch Anfänger bin und die frühere Version zumindest erst mal hinreichend passabel fand. Den von Dir vermissten "tatsächlichen Grund" für den Einsatz abstrakter Klassen finde ich im Artikel auch: "Das ist deshalb entwurfstechnisch geboten, weil es Arbeit spart, Redundanz vermeidet und somit die Zahl der Fehlermöglichkeiten verringert."
Ein Grund für die so unterschiedliche Beurteilung der Qualität ist möglicherweise der ins Auge gefasste Leserkreis. Meine Version ist nicht für den Fachmann geschrieben, der nach dem Lesen des Artikels nickt und sagt: "ja, das ist nach Fachbuch alles korrekt" (und der den Artikel deshalb genau so eben gar nicht braucht, weil er das alles schon weiß), sondern für den Interessenten, der nach Einarbeitung in Programmierung und auch Klassen neu über den Begriff "abstrakte Klasse" stolpert und extra deswegen die Wikipedia aufsucht, um sich erstmalig darüber zu orientieren, was damit eigentlich gemeint ist. Unser beider Ziel sollte sein, dass das Lesen des Artikels demjenigen weiterhilft, der einen Grund hatte, hier in der Wikipedia nach Hilfe und Orientierung zu suchen. Dem Fachmann brauchst Du nichts zu erklären, der weiß die Sache so gut wie Du. Also, wie erklärst Du es einem Laien ohne zu viele Fachbegriffe zu benutzen, die der gar nicht kennen kann? Jedenfalls würde ich mich sehr freuen, wenn Du einen Zustand erreichst, nach dem die neue Artikelversion in der Beurteilung deutlich besser abschneidet als die alte. Mal sehen, vielleicht gelingt es mir, auch feba noch mal für die Beteiligung an der Diskussion hier zu gewinnen. -- Lukian 12:25, 10. Jan. 2008 (CET)Beantworten
"Das ist deshalb entwurfstechnisch geboten, weil es Arbeit spart, Redundanz vermeidet und somit die Zahl der Fehlermöglichkeiten verringert." - soll ich mich dafür entschuldigen, dass das Mist ist? Redundanz vermeiden? Fehlermöglichkeiten verringern? Junge, du musst nochmals über die Bücher.
Kein Amateur und kein Anfänger? Du willst mir aber hoffentlich nicht weis machen, dass Du OO-Entwickler bist, oder? --Trugbild 13:35, 10. Jan. 2008 (CET)Beantworten
Oh, das interessiert mich nun doch. Wieso wäre es nicht Redundanz, wenn du Attribute, die in eine abstrakte Oberklasse gehören, auf Unterklassen verteilst? Und wieso wäre das nicht fehleranfälliger? -- Lukian 14:02, 10. Jan. 2008 (CET)Beantworten
Dafür muss die Oberklasse nicht abstrakt sein. --Trugbild 14:05, 10. Jan. 2008 (CET)Beantworten
Was die Verständlichkeit betrifft: Die Wikipedia ist kein Programmier-Tutorial. Völlige Laien erkennen am ersten Satz, aus welchem Bereich der Begriff kommt. Wer sich in Programmierung und Klassen einarbeitet und mit Ausdrücken wie Parameter, Programmcode, Klassenhierachie, instanzieren etc. nichts anfangen kann - dem empfehle ich, der Reihe nach zu lesen. Und wenn er's dennoch nicht versteht, ist mir das lieber, als wenn er es zwar versteht, die mitgeteilte Information aber völlig falsch ist. --Trugbild 13:38, 10. Jan. 2008 (CET)Beantworten
Und welche ist die "völlig falsche" Information? -- Lukian 14:02, 10. Jan. 2008 (CET)Beantworten
Alles über Sinn und Zweck war falsch. --Trugbild 14:05, 10. Jan. 2008 (CET)Beantworten
PPS: Was verstehst Du eigentlich unter "erstmal" in und die frühere Version zumindest erst mal hinreichend passabel fand - seit 2003 hat sich kaum etwas am Artikel verändert. Wie lange sollte also dieser "erstmal"-Status denn noch andauern? --Trugbild 13:43, 10. Jan. 2008 (CET)Beantworten
Jede tatsächliche Verbesserung ist, gut, je schneller, je besser, keine Frage -- Lukian 14:02, 10. Jan. 2008 (CET)Beantworten
In diesem Fall war dieses Vorgehen die einzige Möglichkeit, die ich sah. --Trugbild 14:05, 10. Jan. 2008 (CET)Beantworten
als Laie muß ich leider sagen, daß ich mit der Einleitung jetzt vor lauter Fremdworten überhaupt nichts mehr anfangen kann, das gefiel mir vorher wesentlich besser. - Enzyklopädischer klingt allerdings im Vergleich schon die neuere Version; Formulierungen wie "es gebietet die Vernunft" sollten hier sicher nicht stehen. Vielleicht könnte man den Artikel dahingehend gestalten, daß die Einleitung wieder laienverständlich wird (wer hier nachschlägt weiß vermutlich nicht, was "Objekte werden instanziert" bedeuten soll) und die neue technisch klingende Beschreibung in einen eigenen Absatz kommt; die Gliederung (die vorher allerdings fehlte) könnte man ja noch erweitern, sodaß Bestandteile beider Versionen Platz haben; als Laie erscheint mir die (vielleicht ein bischen zu kürzende) Bauernhoferklärung um einiges anschaulicher als die geometrische , die mir aber auch gefällt, weil sie straffer ist - nur eben nicht für Mathemuffel geeignet, die bei dem Wort Geometrie gleich abschalten - warum nicht beide unter Beispiele fassen? - Vielleicht könnt ihr beide Texte so mischen, daß "das beste aus allen Welten" dabei herauskommt? -- feba 13:04, 10. Jan. 2008 (CET)Beantworten
In der Wikipedia geht es nicht darum, fachliche Spezialitäten detailiert zu erklären. Wenn Du nicht weisst, was in der Programmierung Objekte und Instanzen sind, hast du keine Chance, abstrakte Klassen zu verstehen.
Aber dafür gibt es dann ja die Querverweise. Du verstehst nicht, was Objekte sind? Rate mal warum das Wörtchen verlinkt ist?
Ausserdem: es ist sicher nicht Aufgabe der Wikipedia, einem Laien die OO-Programmierung beizubringen.
Abgesehen davon. Willst mir ja nicht weis machen, dass Du mit dem Satz Jede Klasse beschreibt genau die Eigenschaften all derjenigen Objekte, die eben dieser Beschreibung gemäß aus ihr hervorgehen würden. irgendetwas angfangen kannst. --Trugbild 13:35, 10. Jan. 2008 (CET)Beantworten
Ach hätte ich schon gedacht, wie würdest Du es denn bündiger und verständlicher ausdrücken? -- Lukian 14:02, 10. Jan. 2008 (CET)Beantworten
Gar nicht - Was eine Klasse ist, gehört in den Artikel Klasse. Man kann doch nicht in 1 Satz erklären, worum es bei Klassen geht... --14:05, 10. Jan. 2008 (CET)
als Laie erscheint mir die (vielleicht ein bischen zu kürzende) Bauernhoferklärung um einiges anschaulicher als die geometrische -- Dabei war schon die Einleitung Quatsch: Die Leitung eines Bauernhofs mag vorhaben, den Viehbestand (Rinder und Schweine) objektorientiert zu verwalten. Klar, der Bauer sagt "Hey. Ich will meinen Bauernhof objektorientiert verwalten." LOL. --Trugbild 13:46, 10. Jan. 2008 (CET)Beantworten
Ich lache gern mit, und noch mehr freue ich mich, wenn Du Beispiele ausführst, die noch griffiger und verständlicher sind. -- Lukian 14:02, 10. Jan. 2008 (CET)Beantworten

Beispiel: Datenbank-Zugriff[Quelltext bearbeiten]

Bezüglich dieses Beispieles, ein Hinweis - mehr inhaltlicher Natur, da ich dies nicht als repräsentativ empfinde und dem Leser der Eindruck vermittelt werden könnte, dass dies gängige Praxis ist.
Bei der Verwendung von Property-Dateien, wird das Speichern der Zugangsdaten in diesen erfolgen, weniger die Datei mit der konkreten Verbindung. Grund dafür ist schell erklärt; Das Schaffen einer Klasse pro Verbindung erfordert eine Integration in den laufenden Code (z.B. JAR, ein Deployment o.ä.), einfacher ist da das Abändern der gewünschten Werte, zum Beispiel DB-URL, und eventueller Neustart der Applikation/ des Servers. Somit erspart man sich die Integration - sicher kann man das JavaArchiv auch manipulieren und nur die gewünschte Klasse ersetzen, dass ist aber eher als unsauber zu bezeichnen (zu fehleranfällig).
Ich wollte den Punkt an dieser Stelle einfach mal ansprechen. --Cl0udy0ne 21:32, 24. Apr. 2009 (CEST)Beantworten

Artikelwunsch[Quelltext bearbeiten]

en:Abstraction (computer science) - Abstraktion (Informatik) --Bin im Garten (Diskussion) 14:14, 24. Dez. 2013 (CET)Beantworten

Beispiel verwirrend[Quelltext bearbeiten]

Hallo,

ich finde das aktuelle Beispiel verwirrend. Wieso startet das Beispiel gleich mit einem Interface (A)? Um abstrakte Klassen zu erklären, muss man nicht gleich mit einem Interface beginnen. Hier werden zwei Konzepte vermischt.

In B wird die Klasse nur durch das Interface abstrakt.

--Kp0 (Diskussion) 12:23, 25. Okt. 2018 (CEST)Beantworten