Vorwort: Derzeit schreibe ich ein Buch für erfahrene Delphi-Programmierer zum Thema Erstellen gut gestalteter Programme mithilfe objektorientierter Programmiertechniken in Delphi.
Dieses Buch befindet sich noch im Entstehungsprozess. Ich hoffe, dass jeder ein vorläufiges Verständnis für das Thema und den Sprachstil dieses Buches erlangen kann. Gleichzeitig können Sie Ihre eigene Meinung einbringen. Als Autor hoffe ich, dass dieses Buch ein Klassiker unter den inländischen Original-Delphi-Büchern werden kann. Es wird vielleicht kein Erfolg sein, aber ich werde mein Bestes geben.
Aus den oben genannten Gründen ist es mir unmöglich, das gesamte Buch zu veröffentlichen (haha, dann wird es niemand kaufen), daher sollten hier keine weiteren Kapitel veröffentlicht werden (vielleicht gibt es einige Auszüge).
An dieser Stelle möchte ich den Freunden danken, die mich ermutigt und mir ihre Meinung geäußert haben (ich habe es im Delphi-Forum von csdn gepostet und eine Vielzahl von Antworten erhalten, vielen Dank an alle). Ich möchte mich auch bei meiner Freundin Esan bedanken, die mich immer unterstützt und inspiriert hat. Ich kann nur gut schreiben und es allen danken. Ich weiß, dass alle (einschließlich mir) zu sehr auf ein gutes Buch gewartet haben!
Kapitel 1 Delphi neu verstehen
Einfachheit ist das Schwierigste auf der Welt: Sie ist die ultimative Grenze der Erfahrung und das ultimative Ziel des Genies. ——George Sand Sie sind bereits ein erfahrener Delphi-Programmierer und können Delphi verwenden, um schnell ein schönes und praktisches Programm zu schreiben. Sie lieben Delphi, es ist zu einem unverzichtbaren Bestandteil Ihrer Arbeit und Ihres Studiums geworden. Ich gehe davon aus, dass dies zutrifft. Dann müssen Sie Ihre eigenen Gründe oder Gründe dafür haben, Delphi als Entwicklungstool erster Wahl zu wählen. Zumindest erfülle ich alle oben genannten Annahmen. Was ich Ihnen nun mitteilen möchte, sind die Gründe und Gründe, warum ich mich für Delphi entschieden habe, sowie mein Verständnis von Delphi. Sie können mich als Fanatiker betrachten, der Delphi unterstützt, obwohl ich dadurch das Gefühl habe, dass Sie mich zu oberflächlich betrachten. Das gebe ich nicht zu, aber es macht mir nichts aus. Weil ich sie wirklich liebe. Die Version von Delphi, mit der ich zum ersten Mal in Kontakt kam, war 3.0. Damals habe ich sie einfach als RAD-Tool wie Visual Basic verwendet. Mit der Zeit entwickeln Delphi 3, Delphi 4, Delphi 5, Delphi 6 und Kylix jedoch ein immer tieferes Verständnis von Delphi. Es ist ein Werkzeug mit reichhaltiger Konnotation. Je mehr Menschen sie verstehen, desto mehr werden sie von ihr besessen und desto mehr fühlen sie sich untrennbar mit ihr verbunden, obwohl es immer noch nur ein Werkzeug ist. Pascal ist eine Sprache, die auf Programmästhetik achtet – es besteht kein Zweifel, dass Pascal-Code der schönste Code ist – Delphi, das auf Object Pascal (einer Pascal-Sprache, die objektorientiert unterstützt) basiert, treibt diese Schönheit auf die Spitze. Jetzt können Sie Delphi öffnen, das Menü „Hilfe“ – „Info“ auswählen. Wenn das Fenster „Info“ angezeigt wird, halten Sie die Alt-Taste gedrückt und geben Sie gleichzeitig nacheinander „Team“ ein. Was wird angezeigt? Ja, die Liste der Delphi-Entwickler, danken wir ihnen für die Entwicklung solcher Entwicklungstools, die eher Kunstwerken ähneln!
1.1 Die „menschenorientierte“ Theorie der Entwicklungswerkzeuge
In verschiedenen Programmierforen sieht man oft Fragen wie diese: „Hat VB noch eine Zukunft?“; „Wird Delphi abgeschafft?“; „Wird MFC durch .NET ersetzt?“ Als die Frage gestellt wurde, konnte niemand eine Antwort geben. Denn die Zukunft einer Technologie oder eines Produkts wird nicht ausschließlich von der Technologie selbst bestimmt, sondern hängt auch von Faktoren wie der Marktnachfrage und der Entwicklungsrichtung des produzierenden Unternehmens ab. Und worüber wir uns Sorgen machen sollten, sind die Antworten auf diese Fragen? Ich denke nicht. Wir wissen, dass alles auf der Welt aus Atomen besteht; sich ständig ändernde Programme bestehen letztendlich aus drei Strukturen: Sequenz, Schleife und Verzweigung. Sowohl der MFC von VC als auch der VCL von Delphi sind mit objektorientierter Technologie aufgebaut (unabhängig vom Grad des Objekts). -orientiert ). Wenn Sie über die oberflächliche Erscheinung der Dinge hinausblicken, sehen Sie das gleiche oder ein ähnliches Wesen! Nachdem Sie die Essenz gemeistert haben, werden Sie feststellen, dass die Manifestation des Aussehens so natürlich ist. Stellen Sie sich vor, wenn Sie MFC wie Hou Jie (der Autor von „Introduction to MFC“) vollständig abziehen können, werden Sie sich dann immer noch Sorgen machen, dass MFC durch ein bestimmtes Framework ersetzt wird? Aus dieser Perspektive bleibt das Konzept der Programmierung für einen professionellen Programmierer unverändert. Beim Entdecken, Analysieren und Lösen von Problemen gibt es ein bestimmtes Muster. Sobald Sie dieses Muster beherrschen, haben verschiedene Programmiersprachen und unterschiedliche Entwicklungsumgebungen etwas gemeinsam. Ich denke, C++ ist etwas, das jeder professionelle Programmierer beherrschen muss. Natürlich bedeutet dies nicht einfach das Erlernen der Syntax (Sie können das Erlernen einiger Syntax sogar ignorieren), sondern das Erlernen objektorientierter Design- und Programmiermethoden mithilfe von C++. Weil C++ umfassend und tiefgründig ist, weil C++ allmächtig ist. In C++ können Sie alles über die objektorientierte Theorie lernen. Nach dem Lernen werden Sie von C++ transformiert. Weil umstrittene Funktionen, die es in der objektorientierten Theorie gibt (z. B. Mehrfachvererbung), in C++ unterstützt werden. Erst wenn Sie es beherrschen, können Sie Ihre eigene Entscheidung (dafür oder dagegen) treffen. Nachdem Sie die objektorientierte Theorie beherrscht haben, sei es C++, Object Pascal, Java oder sogar C#, werden Sie ihre Ähnlichkeiten spüren. Bedeutet das, dass es keine anderen Unterschiede zwischen Entwicklungstools gibt (vielleicht sollte man sie integrierte Entwicklungsumgebungen nennen, aber ich werde sie im Folgenden entsprechend meiner Gewohnheit als Entwicklungstools bezeichnen), außer den Sprachen, die sie unterstützen? Natürlich nicht. Entwicklungstools sind Werkzeuge, die Ihnen bei der Umsetzung Ihrer Ideen helfen, bei denen es sich um Aufbauten handelt, die auf Grundideen aufbauen. Der Grad, in dem ein Entwicklungstool das Konzept unterstützt, das Sie implementieren möchten, und der Grad, in dem es den Implementierungsprozess vereinfacht, ist die Überlegung des Entwicklungstools. Entwicklungstools für Programmierer sind wie Waffen für Soldaten. Wenn die Waffen nicht zur Hand sind, wird die Hälfte von ihnen vor dem Kampf besiegt. Der Werbeslogan von Nokia-Handys hat mir schon immer gefallen: Technologie ist menschenorientiert! Ja, „Menschen“ sind die Basis, und die Aufgabe von Tools besteht darin, Menschen dabei zu helfen, ihre Ziele schneller und einfacher zu erreichen. Daher sollten Entwicklungstools auch den Menschen in den Mittelpunkt stellen! Als Programmierer und der direkteste Benutzer von Entwicklungstools hoffe ich, dass die von mir verwendeten Entwicklungstools mir wirklich ein Gefühl der Freiheit vermitteln und es mir ermöglichen, frei in der Welt des Codes zu navigieren Mich und passe dich mir an, anstatt mir Fesseln anzulegen! Heutzutage stehen auf der Windows-Plattform viele Entwicklungstools zur Auswahl: Visual C++, Visual Basic, Delphi, C++ Builder, JBuilder... Sie basieren auf verschiedenen Programmiersprachen und sind den Produktkonzepten verschiedener Unternehmen treu. Aus dieser Perspektive ist der Unterschied zwischen ihnen sehr groß. Welche Entwicklungstools sind also ausgezeichnet, rücksichtsvoll und menschenorientiert? Mein Anspruch besteht darin, die folgenden vier Punkte zu erfüllen: 1. Das zu lösende Problem vereinfachen und mit einem bestimmten Konzept schnell umsetzen können. 2. Keine Details verbergen, die Sie wissen möchten. 3. Die Details ignorieren können, die Sie nicht möchten Wissenswertes 4. Ergreifen Sie die Initiative: Gibt es Entwicklungstools, die die oben genannten vier Punkte erfüllen und für Programmierer unterschiedlicher Niveaus geeignet sind? Meine Antwort ist: Ja! Das ist Delphi! Sie hat alles vereinfacht, mich aber nie davon abgehalten, nach der Wahrheit zu suchen. Sie können Aufgaben in der vereinfachten virtuellen VCL-Welt erledigen, die sie für Sie erstellt hat. Sie können auch in die Welt von VCL eintauchen, um seine Zuordnungsbeziehung zur realen Welt (d. h. die reale Schnittstelle der Windows-Plattform) zu erkunden und das Design seines Frameworks kennenzulernen. Sie können diese virtuelle VCL-Welt auch entsprechend Ihren Anforderungen erweitern. Ich bin froh, dass es ein solches Entwicklungstool gibt, und noch glücklicher, dass ich sie auswählen und meine Arbeit mit ihr abschließen kann! (In der Realität liegen die im Projekt verwendeten Programmiersprachen und Entwicklungstools oft außerhalb Ihrer persönlichen Kontrolle und werden durch viele Faktoren eingeschränkt. Zum Beispiel: die Hardwareumgebung des Kunden, die Betriebssystemumgebung, die Entwicklungsumgebung, die Kosten und die Lizenzierung der Entwicklungstools . Zertifikat usw. Daher habe ich großes Glück, meine bevorzugten Entwicklungstools für die Entwicklungsarbeit auswählen zu können.) Das Erlernen objektorientierter Konzepte durch C++ und die Verwendung von Delphi zur Lösung realer Probleme ist mein Ansatz. Gleichzeitig bestätigt es auch das Sprichwort: Lernen Sie an schwierigen Orten und bewerben Sie sich an einfachen Orten. Echte Programmierer verwenden C++, kluge Programmierer verwenden Delphi. Nun ja, wirklich kluge Programmierer nutzen C++, um Delphi zu verstehen!
1.2 Weitere Vorteile von Delphi
Ich habe viele gängige Entwicklungstools verwendet. Warum habe ich mich für Delphi entschieden? Vielleicht liegt es daran, dass ich mit anderen Entwicklungstools nicht im Detail vertraut bin, aber die Exzellenz von Delphi selbst ist mindestens einer der Gründe! Was ist das Tolle an Delphi? n Die effiziente Entwicklung von Delphi ist ein RAD (Rapid Application Development Tool), das über eine visuelle Entwicklungsumgebung verfügt. Natürlich gibt es viele Entwicklungstools mit ähnlichen Funktionen (z. B. Visual Basic), aber Delphi verfügt über die folgenden einzigartigen Funktionen: 1 ) Delphi ist wirklich objektorientiert. Alle Komponenten seiner auf OO-Technologie basierenden VCL-Bibliothek können vererbt werden, um neue Komponenten zu erstellen, einschließlich der Formularklasse TForm. Im Gegensatz dazu fehlt ActiveX-Komponenten diese Flexibilität. 2) Die CodeInsight-Technologie von Delphi (d. h. die Funktion zur automatischen Vervollständigung des Codes) basiert auf Compiler-Informationen, während VB Typbibliotheksinformationen verwendet. Der Vorteil der Verwendung von Compiler-Informationen ist mehr Flexibilität. Programmierer beschweren sich jedoch häufig darüber, dass die Code-Eingabeaufforderungen von Delphi zu lange dauern. Tatsächlich habe ich persönlich das Gefühl, dass ich, nachdem ich mich an die Geschwindigkeit gewöhnt habe, ein Gefühl von rhythmischem Vergnügen verspüren kann. n Die effiziente Delphi-Sprache basiert auf der Object Pascal-Sprache. Dies ist eine wirklich objektorientierte und dennoch elegante Sprache. Sie steht verschiedenen anderen objektorientierten Sprachen hinsichtlich der funktionalen Integrität in nichts nach, ist aber gleichzeitig nicht gierig nach mehr und erhöht blind die Komplexität. Dadurch erhalten Entwickler umfassende Unterstützung beim Entwurf mit verschiedenen Mustern, ohne bei der Implementierung zu viele Sprach-/Compilerdetails berücksichtigen zu müssen. n Kompilierungseffizienz Man kann sagen, dass Delphi der schnellste Hochsprachen-Lokalcode-Compiler auf der Windows-Plattform ist. Welche Vorteile bietet eine schnelle Kompilierung? Mit einem schnellen Compiler können Sie häufig zwischen dem Ändern von Code und dem Kompilieren und Ausführen wechseln. Zumindest bin ich an diese Arbeitsweise sehr gewöhnt: Führen Sie das Programm aus, um den Effekt zu sehen, beenden Sie das Programm, ändern Sie eine kleine Menge Code und führen Sie dann das Programm aus. Und der Compiler von Delphi löst bei mir nie das Gefühl des Wartens aus. n Effiziente Ausführung Delphi verfügt nicht nur über eine schnelle Kompilierungsgeschwindigkeit, sondern auch die Ausführungseffizienz des generierten Zielcodes ist sehr hoch. Delphi und C++Builder verwenden denselben Back-End-Optimierer, sodass der von ihm generierte Code genauso effizient ist wie der von einem hervorragenden C++-Compiler generierte Code. Delphi generiert vollständig nativen Code, sodass die aus der Delphi-Kompilierung resultierende ausführbare Datei unabhängig ausgeführt und verteilt werden kann (dies ist sehr wichtig für die Entwicklung „grüner Software“). Es ist keine weitere Laufzeitunterstützung erforderlich. Natürlich können Sie auch die dynamische Linkkompilierung wählen, wodurch die Länge der ausführbaren Datei erheblich reduziert werden kann. In diesem Fall müssen jedoch bei der Verteilung des Programms gleichzeitig die erforderlichen Laufzeitdateien verteilt werden. n Effiziente Wartung C++ gibt Programmierern viel Entscheidungsbefugnis und ist daher sehr leistungsfähig. Gleichzeitig erfordert die Verwendung von C++ zum Schreiben exzellenten objektorientierten Codes jedoch, dass Programmierer über bestimmte Qualitäten verfügen. Delphi-Programmierer sind bis zu einem gewissen Grad auf das von VCL bereitgestellte Framework beschränkt (natürlich können Sie in Delphi auf die VCL-Programmierung verzichten). Relativ gesehen ist es einfacher, gut gestalteten Code zu erstellen. Visual Basic bietet überhaupt keinen objektorientierten Programmiermechanismus (VB6.0 und frühere Versionen basieren auf Objekten, nicht objektorientiert). Die Exzellenz des Code-Frameworks reduziert die Softwarewartungskosten erheblich. Aus all den oben genannten Gründen habe ich mich für Delphi entschieden!
1.3 Thema dieses Buches
Normalerweise schreiben wir viel Code, für das Unternehmen, für uns selbst oder für Freunde. Manchmal schreibe ich experimentellen Code, um eine Idee zu verifizieren oder eine bestimmte Technologie zu erlernen. Der Lebenszyklus eines solchen Codes ist sehr kurz und erfordert grundsätzlich keine Wartung. Sie können ihn einfach so schreiben, wie Sie möchten. Wenn Sie jedoch ein Projekt wirklich abschließen möchten, ist das Codedesign sehr wichtig. Denn ein solcher Code erfordert eine langfristige Wartung, ständige Modifikation oder Erweiterung. Ein unordentliches Codedesign erschwert die Wartung oder macht sie unmöglich, und die Änderung solchen Codes führt zu mehr Fehlern oder Katastrophen. Bevor Code geschrieben werden kann, muss er daher entworfen werden. Das hier erwähnte Design bezieht sich nicht auf das funktionale Design, sondern auf das Design des Code-Frameworks durch Programmierer vor dem Codieren, damit der Code in Zukunft leichter zu verstehen und zu warten ist. Ich höre oft ein Sprichwort: Das Programmleben eines Programmierers beträgt erst 35 Jahre. Ich glaube nie, dass die Lebensdauer eines Programmierers nur 35 Jahre beträgt. Vielleicht nimmt die Umsetzungsfähigkeit (eigentlich die handwerkliche Fähigkeit) ab, während die Designfähigkeit mit zunehmender Erfahrung nicht abnimmt, sondern zunimmt. Das ist das Kostbarste. Das Rückgrat ausländischer Softwareentwicklungsteams sind in der Regel Menschen im Alter von etwa 40 Jahren. Die sogenannten Programmierer, die nach dem 35. Lebensjahr keine Programmierer mehr sein können, sind überhaupt nicht qualifiziert, Programmierer genannt zu werden. Software-Engineering muss Programmierer zu Programmierern machen und zu einem Bindeglied am Fließband werden, und die Entwurfsarbeit wird von spezialisierten Designern (z. B. Framework-Designern) durchgeführt. Vielleicht geht der Trend dahin, die Arbeitsteilung zu verfeinern, aber ob wir uns damit zufrieden geben, Programmierer zu sein, oder hoffen, zu Designern heranzuwachsen, hängt von unserer Vision und unseren Bemühungen ab. Öffnen Sie Ihren Horizont, anstatt sich darauf zu beschränken, „Meister zu werden“. Erkenntnisfähigkeit ist die Grundlage. Nur mit einer bestimmten Erkenntnisfähigkeit können wir wachsen. Allerdings ist sie nur eine notwendige Bedingung, keine ausreichende. Andernfalls wäre es so, als ob man den Berghang erklimmt und denkt, dass man den Gipfel des Berges erreicht hat und stagniert. Dann können Sie nur noch Programmierer sein und die Lebensdauer Ihres Programms beträgt nur 35 Jahre. Nachdem ich diese Perspektive gewonnen habe, hoffe ich, dass dieses Buch Ihnen den Einstieg erleichtern kann. In China veröffentlichte Bücher mit Bezug zu Delphi erklären im Wesentlichen die Implementierung. Der Titel dieses Buches lautet „Breakthrough by Delphi Masters“. Gehen Sie also davon aus, dass Sie jetzt ein Delphi-Meister sind. Daher wird in diesem Buch nicht zu viele Implementierungstechniken behandelt. Obwohl es Beispielcodes gibt, liegt der Schwerpunkt auf dem Design seiner Architektur und nicht auf seiner Implementierung. An diesem Punkt haben Sie vielleicht das Thema dieses Buches erraten: Wie man objektorientierte Technologie in Delphi nutzt, um gut gestalteten Code zu erstellen. Meiner Meinung nach ist das Schreiben von Code künstlerisches Schaffen. Eleganter Code ist selbsterklärend, ohne dass übermäßige Kommentare erforderlich sind. Wenn es zu viele Kommentare gibt, ist es an der Zeit, darüber nachzudenken, ob das Design angemessen ist. Das Schreiben eines Buches sollte auch eine künstlerische Schöpfung sein, wenn man den Lesern sein eigenes Verständnis und seine Erfahrung künstlerisch mitteilen kann, ohne dass es zu vieler „Anmerkungen“ (Unsinn, der Platz verschwendet) bedarf. Ich hoffe, ich kann es schaffen, zumindest mein Bestes geben.
1.4 Zusammenfassung
Ich glaube, dass es für mich unvermeidlich ist, den Weg des Programmierens einzuschlagen. Die Möglichkeit, ein professioneller Programmierer zu werden, ist auch das, wovon ich geträumt und es verwirklicht habe. Allerdings muss man sagen, dass das Erscheinen von Delphi und die Tatsache, dass ich es kennenlernte, mich damit vertraut machte, davon besessen wurde und Teil meiner Arbeit wurde, eine unerwartete Überraschung war. Was ich hier sagen möchte, ist, dass Sie mehr auf sich selbst bestehen sollten. Wenn Sie sich klar positioniert haben und den eingeschlagenen Weg genau kennen, brauchen Sie keine Zweifel und Skrupel mehr zu haben und können einfach weitermachen. Auch wenn es mir am Ende vielleicht nicht gelingt (natürlich definiert jeder Erfolg anders), liebe ich, was ich liebe, ohne es zu bereuen!