OOP, Vorlagen und Makros in mql5, Feinheiten und Anwendungen - Seite 7

 
Ilya Malev:

Meiner Meinung nach ist das gar nicht so schlecht. Meiner Meinung nach gibt es in C# nicht so viele grundlegende Schnittstellen (ich bin kein C#-Experte), dass ihre Methoden nicht auf eine grundlegende Superklasse reduziert werden können, die dann von denjenigen geerbt wird, die was brauchen

Was meinen Sie mit "erben, wer was braucht"? Nicht die ganze Klasse erben, sondern einen Teil davon? ) Ich kenne eine solche Funktion nicht
 
Alexey Navoykov:
Was meinen Sie mit "erben, was Sie brauchen"? Nicht die ganze Klasse erben, sondern einen Teil davon? ) Ich bin mit einer solchen Funktionalität nicht vertraut.

Nein, ich meinte, viele virtuelle Funktionen zu definieren und sie bei Bedarf in Erben zu überladen.

 
Ilya Malev:

Nein, ich meinte, viele virtuelle Funktionen zu definieren und sie bei Bedarf in Erben zu überladen.

Schnittstellen definieren abstrakte Methoden, die implementiert werden müssen, nicht "zwangsläufig". Und wenn Sie mit Ihrem Ansatz vergessen, irgendwo eine Methode zu überladen, wird das Programm kompiliert, als ob nichts passiert wäre, aber statt der benötigten Methode wird es Dummy genannt.
 
Alexey Navoykov:
Schnittstellen definieren abstrakte Methoden, die implementiert werden müssen, nicht "zwangsläufig". Und wenn Sie bei Ihrem Ansatz vergessen, irgendwo eine Methode zu überladen, wird das Programm kompiliert, als ob nichts passiert wäre, aber das Programm wird anstelle der benötigten Methode aufgerufen.

Es handelt sich nicht um eine Leerstelle, sondern um eine "nicht implementierte" Ausnahme. In C# ist das ganz anders.

 
Alexey Navoykov:
... Wenn man vergisst, irgendwo eine Methode zu überladen, wird das Programm kompiliert, als ob nichts passiert wäre, aber statt der benötigten Methode wird eine leere aufgerufen. Das ist normal...

So funktioniert es übrigens auch in MQL ;(.

 
Ilya Malev:

Es handelt sich nicht um eine Leerstelle, sondern um eine "nicht implementierte" Ausnahme. Auch in C# scheint es überall zu haken.

Es geht nicht darum, dass Sie vorschlagen, Fehler zur Laufzeit abzufangen, während diese Fehler zur Kompilierzeit abgefangen werden können (und sollten).
 
Vasiliy Sokolov:

So funktioniert es übrigens auch in MQL ;(

Sie meinen ihre Standardbibliothek? )
 
Alexey Navoykov:
Es geht nicht darum, dass Sie vorschlagen, Fehler zur Laufzeit abzufangen, während diese Fehler zur Kompilierzeit abgefangen werden können (und sollten).

Ich denke, das ist besser als Strukturen wie die Vorlage <,,,,,,,> für Klassen zu bauen. Es wird Ihnen das Gehirn zerbrechen, bevor Sie ein solches "Klassensystem" aufgebaut haben.

 
Ilya Malev:

Ich denke, das ist besser als Strukturen wie die Vorlage <,,,,,,,> für Klassen zu bauen. Es wird Ihnen das Gehirn zerbrechen, bevor Sie ein solches "Klassensystem" aufgebaut haben.

Da zerbreche ich mir lieber den Kopf mit dem Compiler, aber ich will sicher sein, dass mein Programm garantiert richtig funktioniert und eine funktionierende Methode aufgerufen wird und nicht etwas anderes.
 
Alexey Navoykov:
Lieber zerbreche ich mir den Kopf über den Compiler, aber ich will sicher sein, dass mein Programm garantiert richtig funktioniert und eine funktionierende Methode aufgerufen wird und nicht irgendetwas Verrücktes.

Wenn das Ganze eine einfache Basisklasse hat, die meistens überall auftaucht, und dann die dynamischen Casts gehen, könnte es funktionieren).