Wie kann man Objekte dynamisch erstellen? (Einige OOP-Sachen) - Seite 4

 

Auf jeden Fall. Es hat mich Monate gekostet, mein eigenes GUI-Framework mit MQL zu erstellen, nicht gerechnet die Erfahrung, die ich bereits in der Vergangenheit bei der Erstellung von Bibliotheken wie diesen hatte. Der schwierigste Teil sind nicht die Ereignisse, sondern die Architektur und die fast unmögliche Möglichkeit, den Code zu debuggen, wegen all der Verschachtelungen und Rekursionen, aber auch wegen der Zustände der Maus, die bereits ungültig werden, wenn das Debugging beginnt.

Übrigens habe ich MQ schon vor Monaten eine Zusammenarbeit mit diesen Libs angeboten und leider nicht einmal eine Antwort erhalten. Aber Fakt ist, die Standard Control Library ist nur ein netter, aber auch schlechter Versuch im Vergleich zu dem, was tatsächlich möglich ist. Das kann man viel besser machen. Vielleicht sollte ich die Bibliothek hier auf dem Marktplatz anbieten, aber ich schrecke vor der Arbeit zurück, die ganze Dokumentation dafür zu schreiben.

 
Doerk Hilger:
Das ist überhaupt keine Frage. OOP basiert auf den Grundsätzen der Natur. Die Erde ernährt dich nicht, sie stellt nur die Ressourcen zur Verfügung und es liegt an dir, ob, wann und wo du was brauchst.
Können Sie sagen, was Sie damit meinen? Ich habe das allgemeine Gefühl, was Sie sagen, aber es ist mir nicht ganz klar.
Sie meinen, wenn Sie einen Rahmen schaffen, müssen Sie sich nur um die Bereitstellung der Ressourcen kümmern? Das habe ich verstanden, aber ich finde es irgendwie schwierig zu praktizieren, weil meine Tendenz zu stark ist.

Wenn ich zum Beispiel ein Framework erstelle und dann die Schaltfläche und den Radiobutton, der eine Art Schaltflächencontainer ist, erstelle, neige ich dazu, bei der Erstellung des Radiobuttons an das abhängige Objekt zu denken, in diesem Fall die Schaltfläche, und daran, wie ich mit ihr kommuniziere. Das ist eine prozedurale Programmiergewohnheit. Ich frage mich, ob Sie irgendwann in Ihrer Vergangenheit von der prozeduralen zur OO-Programmierung gewechselt haben und mir eine klare Vorstellung davon geben können, worauf ich mich in diesem Fall konzentrieren muss. Ich neige nämlich dazu, mich mehr auf die Schaltfläche (abhängiges Objekt) als auf den Radiobutton zu konzentrieren.

Ich bin mir nicht sicher, ob ich mich klar ausgedrückt habe. Es geht nur darum, die wichtigen Dinge aufzuzeigen, auf die man sich bei der Erstellung einer Ebene in einem Framework konzentrieren sollte.
 
Amir Yacoby:
Können Sie sagen, was Sie damit meinen? Ich habe das Gefühl, was Sie sagen, aber es ist mir nicht ganz klar.
Sie meinen, wenn Sie ein Framework erstellen, sollten Sie sich nur um die Bereitstellung der Ressourcen kümmern? Das habe ich verstanden, aber es fällt mir schwer, es in die Praxis umzusetzen, weil meine Tendenz zu stark ist.

Wenn ich zum Beispiel ein Framework erstelle und dann die Schaltfläche und den Radiobutton, der eine Art Schaltflächencontainer ist, erstelle, neige ich dazu, bei der Erstellung des Radiobuttons an das abhängige Objekt zu denken, in diesem Fall die Schaltfläche, und daran, wie ich mit ihr kommuniziere. Das ist eine prozedurale Programmiergewohnheit. Ich frage mich, ob Sie irgendwann in Ihrer Vergangenheit von der prozeduralen zur OO-Programmierung gewechselt haben und mir eine klare Vorstellung davon geben können, worauf ich mich in diesem Fall konzentrieren muss. Ich neige nämlich dazu, mich mehr auf die Schaltfläche (abhängiges Objekt) als auf den Radiobutton zu konzentrieren.

Ich bin mir nicht sicher, ob ich mich klar ausgedrückt habe. Es geht nur darum, die wichtigen Dinge aufzuzeigen, auf die man sich bei der Erstellung einer Ebene in einem Framework konzentrieren sollte.

Vielleicht habe ich das Thema verfehlt, aber ich möchte Ihnen meine Meinung sagen.

Ich denke, dass Sie sich zu sehr auf die "Theorie" konzentrieren und darauf warten, dass Ihnen jemand anderes das Licht ausmacht. Es gibt nicht die eine perfekte Lösung, es gibt Lösungen, und du musst sie anhand deiner Erfahrung und deiner konkreten Bedürfnisse finden.

Dieses Thema begann mit einem praktischen Fall, und es wurde zu einer obskuren Diskussion über OOP. Es gibt eine interessante Reihe von Artikeln über GUI, die Sie sich ansehen sollten. Versuchen Sie dann, eine Schnittstelle mit der Standardbibliothek zu erstellen und die Bibliothek aus diesen Artikeln zu verwenden, und studieren Sie den Code... oder auch nicht.

Nur ein Vorschlag, denn ich sehe wirklich nicht, wie man Ihnen besser helfen könnte.

Graphical Interfaces I: Preparation of the Library Structure (Chapter 1)
Graphical Interfaces I: Preparation of the Library Structure (Chapter 1)
  • 2016.02.01
  • Anatoli Kazharski
  • www.mql5.com
This article is the beginning of another series concerning development of graphical interfaces. Currently, there is not a single code library that would allow quick and easy creation of high quality graphical interfaces within MQL applications. By that, I mean the graphical interfaces that we are used to in familiar operating systems.
 
Alain Verleyen:

Vielleicht habe ich das Thema verfehlt, aber ich möchte Ihnen meine Meinung sagen.

Ich denke, dass Sie sich zu sehr auf die "Theorie" verlassen und darauf warten, dass Ihnen jemand anderes das Licht ausmacht. Es gibt nicht die eine perfekte Lösung, es gibt Lösungen, und Sie müssen sie anhand Ihrer Erfahrung und Ihrer konkreten Bedürfnisse finden.

Dieses Thema begann mit einem praktischen Fall, und es wurde zu einer obskuren Diskussion über OOP. Es gibt eine interessante Reihe von Artikeln über GUI, die Sie sich ansehen sollten. Versuchen Sie dann, eine Schnittstelle mit der Standardbibliothek zu erstellen, und verwenden Sie die Bibliothek aus diesen Artikeln, und studieren Sie den Code...oder auch nicht.

Nur ein Vorschlag, denn ich sehe wirklich nicht, wie man Ihnen besser helfen könnte.

Alain, ich habe eine Schnittstelle gebaut und ich habe die Artikel gelesen.
Vielleicht ist es nicht der richtige Ort, um über OO zu diskutieren, da könntest du Recht haben.
Ich habe angefangen, darüber zu diskutieren, weil Doerk das Thema als Antwort auf den Themeneinsteiger präsentiert hat und über den richtigen OO-Ansatz gesprochen hat.
Der Themeneinsteiger selbst war an Doerks OO-Präsentation interessiert, und ich denke, es ist nur natürlich, das hier zu diskutieren.
Auch wenn Sie vielleicht Recht haben, dass es zu theoretisch ist, bin ich dennoch der Meinung, dass korrektes OO nicht ohne Theorie auskommt und am Ende praktisch wird.

Meine Schwierigkeit ist das korrekte OO-Denken, ich habe mich nur gefragt, ob Doerk zufällig aus seiner Erfahrung die mentale Schwierigkeit kennt, die ich dargestellt habe.

 
Alain Verleyen:

Es gibt eine interessante Reihe von Artikeln über GUI, die Sie sich ansehen sollten. Versuchen Sie dann, eine Schnittstelle mit der Standardbibliothek zu erstellen und die Bibliothek aus diesen Artikeln zu verwenden, und studieren Sie den Code... oder auch nicht.


Ich habe sie gerade heruntergeladen, um zu sehen, was sie kann. Und der erste Eindruck zeigt, dass sie die gleichen schlimmen Fehler gemacht haben, die sie auch bei der Standard Control Library gemacht haben. Schon das allererste Beispiel mit einem einzigen Dialogfenster hebt die CPU-Auslastung von 10% (ohne) auf 50-65% (geladen). Dies ist bereits der beste Beweis dafür, dass die Autoren nicht die nötige Erfahrung haben, um eine solche Bibliothek zu entwickeln und dass dies kein Weg sein kann, es richtig zu machen.

Ich verstehe sowieso nicht, warum MQ nicht ein professionelles GUI-Framework zur Verfügung stellt, anstatt zu erklären, wie es (nicht) geht. Die meisten MQL-Programmierer wollen sicherlich EAs und Indikatoren entwickeln, aber sie wollen sich nicht mit solchem Zeug herumschlagen.

Außerdem ist das Panel ihres Beispiels im Strategietester tot, und hier wird der ganze GUI-Kram sowieso absurd. Das ist keine Kritik an Ihnen oder an dem, was Sie geschrieben haben, ich weiß selbst, dass es hier einfach keinen besseren öffentlichen Kram für MQL gibt.

 
Amir Yacoby:

Alain, ich habe eine Schnittstelle gebaut und die Artikel gelesen.
Vielleicht ist es nicht der richtige Ort, um über OO zu diskutieren, da könntest du Recht haben.
Ich habe angefangen, darüber zu diskutieren, weil Doerk das Thema als Antwort auf den Themeneinsteiger präsentiert hat und über den richtigen OO-Ansatz gesprochen hat.
Der Themeneinsteiger selbst war an Doerks OO-Präsentation interessiert, und ich denke, es ist nur natürlich, das hier zu diskutieren.
Auch wenn Sie vielleicht Recht haben, dass es zu theoretisch ist, bin ich dennoch der Meinung, dass korrektes OO nicht ohne Theorie auskommt und am Ende praktisch wird.

Meine Schwierigkeit ist das korrekte OO-Denken, ich habe mich nur gefragt, ob Doerk zufällig aus seiner Erfahrung die mentale Schwierigkeit kennt, die ich dargestellt habe.

Es ist kein Problem, hier über OOP zu diskutieren.

Ich bin nicht einverstanden mit Ihrem "OO kann nicht ohne eine gewisse Theorie", aber das macht nichts.

 
Alain Verleyen:

Es ist kein Problem, hier über OOP zu diskutieren.

Ich bin nicht einverstanden mit Ihrer "OO kann nicht ohne die Einbeziehung einiger Theorie", aber das spielt keine Rolle.

Wie erklärst du dir dann die Tatsache, dass es schlechte OO-Programmierung gibt? Schauen Sie sich einfach den Versuch des Themenerstellers an, eine OO-Lösung zu finden und Doerks Antwort. Es muss doch eine Theorie geben, die den Unterschied zwischen richtig und falsch ausmacht, oder?
 
Doerk Hilger:

Ich habe es gerade heruntergeladen, um zu sehen, was es kann. Und der erste Eindruck zeigt, dass sie die gleichen schlimmen Fehler gemacht haben wie bei der Standard Control Library. Schon das allererste Beispiel mit einem einzigen Dialogfenster hebt die CPU-Auslastung von 10% (ohne) auf 50-65% (geladen). Dies ist bereits der beste Beweis dafür, dass die Autoren nicht die nötige Erfahrung haben, um eine solche Bibliothek zu entwickeln und dass dies kein Weg sein kann, es richtig zu machen.

Ich verstehe sowieso nicht, warum MQ nicht ein professionelles GUI-Framework zur Verfügung stellt, anstatt zu erklären, wie es (nicht) geht. Die meisten MQL-Programmierer wollen sicherlich EAs und Indikatoren entwickeln, aber sie wollen sich nicht mit solchem Zeug herumschlagen.

Außerdem ist das Panel ihres Beispiels im Strategietester tot, und hier wird der ganze GUI-Kram sowieso absurd. Das ist keine Kritik an Ihnen oder an dem, was Sie geschrieben haben, ich weiß selbst, dass es hier einfach keinen besseren öffentlichen Kram für MQL gibt.

Doerk, Sie haben wahrscheinlich recht, aber das ist nicht mein Punkt.

Du solltest ein konkretes Beispiel schreiben, warum dieses CPU-Problem auftritt und Anatoli (Autor des Artikels) erklären, wo das Problem liegt. Es tut mir leid zu sagen, dass bis jetzt alles, was Sie gesagt haben, fast nutzlos ist, auch wenn Sie 100% Recht haben. Es ist einfach zu allgemein und theoretisch. Nichts für ungut.

 
Das Problem ist, dass dieses Thema viel zu komplex ist, um genaue Anweisungen zu geben. Deshalb versuche ich, denjenigen, die sich dafür interessieren, einige Ideen und mögliche Wege aufzuzeigen. Leider habe ich nicht die Zeit, einen Artikel zu schreiben oder eine vollständig dokumentierte Bibliothek zu veröffentlichen. Entschuldigung.
 
Doerk Hilger:
Das Problem ist, dass dieses Thema viel zu komplex ist, um genaue Anweisungen zu geben. Deshalb versuche ich, denjenigen, die sich dafür interessieren, einige Ideen und mögliche Wege aufzuzeigen. Leider habe ich nicht die Zeit, einen Artikel zu schreiben oder eine vollständig dokumentierte Bibliothek zu veröffentlichen. Tut mir leid.
Schxxxx. Du hast es verstanden