Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Warum und wann eine Klasse benutzen (https://www.delphipraxis.net/177105-warum-und-wann-eine-klasse-benutzen.html)

p80286 17. Okt 2013 11:13

AW: Warum und wann eine Klasse benutzen
 
Zitat:

Zitat von DeddyH (Beitrag 1232236)
Vererbung:
Wird eine Klasse von einer anderen abgeleitet, so erbt sie automatisch deren Properties und Methoden, ohne dass eine einzige zusätzliche Zeile Code nötig wäre. So lässt sich eine Klassenhierarchie aufbauen, in der die Funktionalität und/oder Spezialisierung von oben nach unten stetig zunimmt.

Nichts für ungut, aber solche Erklärungen können einem den ganzen Spaß vertreiben.
Schön daß man so etwas machen kann, aber wofür ist es gut?
Was bringt es mir?
Wenn Olaf schreibt:
Zitat:

Im bisherigen Schema mußt du nun ALLE ROUTINEN, die sich mit Dateien befassen, ERNEUT schreiben. Also Routinen wie
- OpenMP3File
- ProcessMP3Header
Dann ist das wie ein Buhmann für kleine Kinder; ich kann mit Copy&Paste arbeiten, da schrecken die paar Zeilen Code nicht.

Wenn man mit Klassen arbeitet wird das dann noch etwas einfacher, da die "Code-Organisation" etwas übersichtlicher wird. Ebenso kann man innerhalb der Klasse arbeiten wie man will, da die Schnittstellen nach draußen definiert sind und ich keine Seiteneffekte beachten muß.

Schau ich mir VBA an, dann weiß ich wie OOP sich nicht präsentieren sollte, die gleiche Information in 5 verschiedenen Klassen und der Nutzer weiß nicht wofür es gut sein soll.

Gruß
K-H

OlafSt 17. Okt 2013 11:20

AW: Warum und wann eine Klasse benutzen
 
Zitat:

Zitat von p80286 (Beitrag 1232279)
Wenn Olaf schreibt:
Zitat:

Im bisherigen Schema mußt du nun ALLE ROUTINEN, die sich mit Dateien befassen, ERNEUT schreiben. Also Routinen wie
- OpenMP3File
- ProcessMP3Header
Dann ist das wie ein Buhmann für kleine Kinder; ich kann mit Copy&Paste arbeiten, da schrecken die paar Zeilen Code nicht.

Und genau das ist der Punkt, den ich versucht habe, hervorzuheben. Man kann mit Copy&Paste arbeiten. Und in solchen Kleinprogrammen funktioniert das sogar bis zu einem gewissen Grad.

Doch wenns dann größer und komplexer wird, dann geht die Nummer mit Copy&Paste schwer in die Hose. Merkt man dann allerspätestens beim Fehlersuchen. Darum auch mein abschließender Tip.

DeddyH 17. Okt 2013 12:47

AW: Warum und wann eine Klasse benutzen
 
Wenn ich mit C&P arbeite, dann muss ich bei elementaren Änderungen darauf achten, dass ich auch wirklich alle betreffenden Stellen ändere. Das hat aber streng genommen noch nicht einmal direkt mit OOP zu tun.

Popov 17. Okt 2013 13:21

AW: Warum und wann eine Klasse benutzen
 
Zitat:

Zitat von IMPEGA (Beitrag 1232251)
Ich bin noch auf der Suche nach einem Buch der meiner Art zu lernen am weitesten entspricht, habe aber schon ein paar Ansätze, das hilft.

Das "Problem" mit Lehrbüchern ist, dass sie von Leuten geschrieben werden, die das Thema inzwischen beherrschen und vergessen haben welche Fragen sie damals selbst hatten. Die meisten schreiben dann aber eher ein Nachschlagewert als ein Lehrbuch.

Ich weiß nicht wie viel Bücher ich damals zum Thema OOP gelesen habe, aber an eines kann ich mich erinnern, so richtigen Bezug zu OOP brachte mir keiner bei. Als dann der Groschen gefallen war, stellte ich fest, dass alle Bücher sehr gut geschrieben waren. Das Problem war also weniger die Fachkompetenz der Autoren, als dass sie keine Lehrbücher schrieben konnten.

Vor Jahren wollte es mal besser machen und hab ein Lehr-Tut angefangen. Damals habe ich mir viel Gedanken darüber gemacht und da Ganze versucht für absolute Anfänger zu schreiben, also keine Fachbegriffe, jedes Fitzelchen wurde nicht nur beschrieben, sondern auch der Sinn dahinter erklärt. Und viele Beispiel. Logische Beispiele die man auch in der Praxis anwenden konnte. Nur leider habe ich nach etwa 50 Seiten irgendwie die Lust verloren, denn es ist noch lange nicht fertig. Aber ausführlich wäre es geworden ;)

Was ich dir daraus aber als Tipp zurück geben kann ist, wie du evtl. an die Sache ran gehen kannst: lass dich nicht von Fachbegriffen abschrecken. Sie sind wichtig, verwirren am Anfang aber. Übung macht den Meister. Stürze dich auf Beispiele. Und logisch müssen sie sein. Diese Obst ist Eltern und Banane ist Kindklasse ist zwar logisch, aber praxisfern. Schreibe Klassen die dem entsprechen was du auch sonst programmierst. Wenn du Grafik programmierst, dann schreib Bitmap Klassen. Irgendwas, was du schon mal als Unit gemacht hast. Um es (frei) mit Worten von Monkeyboy Ballmer zu sagen: Bitmap Klassen, Bitmap Klassen, Bitmap Klassen. Am Anfang ableiten und erweitern (siehe Bitmap64 Beispiel), dann eine Bitmap um Funktionen und Eigenschaften erweitern die du schon immer dran vermisst hast, wie zum Beispiel Clear Funktion, oder Hintergrundfarbe setzen, Skalierung, usw. Einfach sinnvolle Erweiterungen. Denn wenn man an einem Problem arbeitet, dann sucht man auch Lösungen. Dann wälzt man auch Bücher nach Tipps in die Richtung. Wenn man stattdessen aber nur stupide Beispiele aus Büchern abtippt, erkennt man oft nicht den Sinn dahinter. Und zuletzt, nutze die vorhandenen Klassen von Delphi als Beispielpool. Einfach TStringList tippen, die Strg Taste drücken und mit der Maus drauf klicken. Und nun die Klasse studieren. Aus den vorhandenen Klassen kann man viel lernen. Die sind in der Regel gut und knapp geschrieben. Und wenn du etwas nicht verstehst, dann gezielt nach Erklärung suchen.

Meflin 17. Okt 2013 13:35

AW: Warum und wann eine Klasse benutzen
 
Wenn man Objektorientierung wirklich grundlegend verinnerlichen will (was sehr über "es gibt Klassen, Vererbung und Instanzen" hinausgeht), hat mir persönlich am meisten gebracht, mit einer tatsächlich objektorientierten Umgebung zu arbeiten. Und das war / ist Smalltalk. Dort ist einfach alles ein Objekt. Selbst Klassen und Methoden sind Objekte. True und False sind Objekte. Keywords gibt es keine. Genausowenig Operatoren (es gibt eben nur Nachrichten). Im Vergleich dazu kann man Delphi, Java und Co wirklich bestenfalls noch als klassenorientiert bezeichnen ;)

Die Einstiegshürde war zwar durchaus nicht gerade flach, aber es hat sich für mich richtig ausgezahlt. Es schult eben einfach die Denkweise extrem, wenn das Paradigma so extrem umgesetzt ist. Und ich denke, dass ich heute auch mit Java und Co deutlich objektorientierteren Code schreibe, als ich das getan habe, bevor ich Smalltalk konnte.

Perlsau 17. Okt 2013 14:43

AW: Warum und wann eine Klasse benutzen
 
Zitat:

Zitat von Meflin (Beitrag 1232295)
Wenn man Objektorientierung wirklich grundlegend verinnerlichen will (was sehr über "es gibt Klassen, Vererbung und Instanzen" hinausgeht), hat mir persönlich am meisten gebracht, mit einer tatsächlich objektorientierten Umgebung zu arbeiten. Und das war / ist Smalltalk. Dort ist einfach alles ein Objekt. Selbst Klassen und Methoden sind Objekte. True und False sind Objekte. Keywords gibt es keine. Genausowenig Operatoren (es gibt eben nur Nachrichten). Im Vergleich dazu kann man Delphi, Java und Co wirklich bestenfalls noch als klassenorientiert bezeichnen ;)

Die Einstiegshürde war zwar durchaus nicht gerade flach, aber es hat sich für mich richtig ausgezahlt. Es schult eben einfach die Denkweise extrem, wenn das Paradigma so extrem umgesetzt ist. Und ich denke, dass ich heute auch mit Java und Co deutlich objektorientierteren Code schreibe, als ich das getan habe, bevor ich Smalltalk konnte.

Wenn man in Delphi-OOP einsteigen will, ist es auf jeden Fall hilfreich, sich in ein oder zwei der zahlreich verfügbaren Open-Source-Quellen einzuarbeiten. So hatte ich damals über die Verwendung der ein oder anderen Unit aus dem Netz sehr schnell begriffen, wie man damit arbeitet und wie sie aufgebaut sind. Ob der Rat an den OP, erst einmal Smalltalk zu erlernen, wirklich hilfreich ist, darf bezweifelt werden.

Meflin 17. Okt 2013 14:57

AW: Warum und wann eine Klasse benutzen
 
Zitat:

Zitat von Perlsau (Beitrag 1232300)
Ob der Rat an den OP, erst einmal Smalltalk zu erlernen, wirklich hilfreich ist, darf bezweifelt werden.

Und das denkst du beurteilen zu können, weil...? Ich habe geschildert, was mir persönlich am meisten gebracht hat, um OOP zu "lernen". Was der Fragesteller mit diesem Erfahrungsbericht anfängt, sollten wir ihm doch selbst überlassen :roll:

Perlsau 17. Okt 2013 15:21

AW: Warum und wann eine Klasse benutzen
 
Zitat:

Zitat von Meflin (Beitrag 1232301)
Zitat:

Zitat von Perlsau (Beitrag 1232300)
Ob der Rat an den OP, erst einmal Smalltalk zu erlernen, wirklich hilfreich ist, darf bezweifelt werden.

Und das denkst du beurteilen zu können, weil...? Ich habe geschildert, was mir persönlich am meisten gebracht hat, um OOP zu "lernen". Was der Fragesteller mit diesem Erfahrungsbericht anfängt, sollten wir ihm doch selbst überlassen :roll:

Durch meinen geäußerten Zweifel daran, daß das Erlernen von Smalltalk nützlich sei für einen Delphiprogrammierer, der in OOP einsteigen will, bleibt es dem Fragesteller auch weiterhin und entgegen deiner Andeutung selbst überlassen, was er damit anfängt. Dein "Erfahrungsbericht" war doch als Ratschlag gedacht, oder etwa nicht? Mag ja sein, daß du jetzt wunderbar in Java OOP entwickelst, aber es ging doch ursprünglich um die Frage, warum und wann in Delphi eine Klasse verwendet werden sollte, und nicht darum, zum Erlernen von OOP erst einmal Smalltalk zu erlernen. Und mal im Ernst: Welcher Delphi-Entwickler, der auch weiterhin mit Delphi programmieren möchte, würde nun erst einmal Smalltalk erlernen? Außer dir natürlich ...

Ich denke nicht, "das kann ich beurteilen", sondern ich beurteile es, weil ich es beurteilen kann. Übrigens: Wenn man in öffentlichen Fachforen mitreden will, sollte man auch ein wenig Gegenwind vertragen können und nicht gleich losheulen, sobald man kritische Stimmen vernimmt.

JasonDX 17. Okt 2013 15:32

AW: Warum und wann eine Klasse benutzen
 
Zitat:

Zitat von Perlsau (Beitrag 1232303)
Und mal im Ernst: Welcher Delphi-Entwickler, der auch weiterhin mit Delphi programmieren möchte, würde nun erst einmal Smalltalk erlernen? Außer dir natürlich ...

Jeder, der seinen Horizont erweitern will und keine Angst vor einem Tellerrand hat. Konzepte erlernt und versteht man erst dann richtig, wenn man gezwungen ist, sie zu benutzen.
Die Empfehlung, kurzzeitig mal mit Smalltalk zu arbeiten kann ich nur bestärken. Auch wenn man die Sprache danach nie wieder berührt, man nimmt viel mit, das sich auf Delphi gut übertragen lässt - zum Beispiel, warum und wie man Klassen verwendet.

Daniel 17. Okt 2013 16:42

AW: Warum und wann eine Klasse benutzen
 
Frank - schalt' mal 'nen Gang runter. Sonst müssen wir Dich noch melden. *g*

Welchen Weg der Fragesteller am Ende verfolgt, bleibt - wie immer - ihm überlassen. Meine Güte nochmal ... das kann doch nicht so schwer sein, auch mal eine andere Ansicht neben der eigenen stehen zu lassen, selbst wenn beide nicht deckungsgleich sind.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:27 Uhr.
Seite 3 von 4     123 4      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz