OOP vs. prozedurale Programmierung - Seite 34

 
Andrei:

Das ist der Punkt - wenn Sie alles von allem isolieren, wird es um ein Vielfaches schwieriger sein, mit solchem Code umzugehen, ganz zu schweigen von der Unmöglichkeit, den Code angemessen zu debuggen, wenn Sie die aktuellen Werte aller notwendigen Variablen kennen müssen...

Wenn Sie eine Klasse schreiben, die die Schnittstelle des Handelsprozessors verwendet, sollten Sie die aktuellen Variablen innerhalb dieser Schnittstelle nicht kennen. Debuggen Sie den REMOTE-Teil.

Wenn Sie den Handelsprozessor selbst debuggen müssen, sollten Sie ihn ebenfalls debuggen, und innerhalb dieser Klasse sollten Sie keine Variablen kennen, beispielsweise vom Eingangssignalgenerator.

Das ist das Wesen der Verkapselung - an jedem Ort arbeiten wir nur mit dem, was wir brauchen, ohne andere Orte zu beeinträchtigen.

 
Andrei:
Es geht nicht um die niedrige Ebene, es geht um die Logik dessen, was dort fließt und was zu jedem möglichen Zeitpunkt daraus wird, einschließlich der Kenntnis aller internen Variablen... Wenn man diese ganze redundante Logik nicht versteht, verschwindet der Sinn der Verwendung dieses Codes für einen Nicht-Autor völlig...

Hallo...

Verstehen Sie viel über die Funktionsweise von Metatrader? Kennen Sie eine der Variablen von MT? Das hält Sie aber nicht davon ab, es zu benutzen.

Genau das sollten Sie in Ihrem Programm tun. Es gibt eine Reihe von Blöcken, die über vordefinierte Schnittstellen interagieren und sich gegenseitig nicht beeinträchtigen.

 
George Merts:

Wenn Sie eine Klasse schreiben, die die Schnittstelle des Handelsprozessors verwendet, sollten Sie die aktuellen Variablen innerhalb dieser Schnittstelle nicht kennen. Debuggen Sie den REMOTE-Teil.

Wenn Sie den Handelsprozessor selbst debuggen müssen - auch hier sollten Sie ihn debuggen, und zwar innerhalb dieser Klasse - sollten Sie keine Variablen kennen, z. B. vom Eingangssignalgenerator.

Das ist das Wesen der Verkapselung - an jedem einzelnen Ort arbeiten wir nur mit dem, was wir brauchen, und beeinträchtigen andere Orte nicht.

Wenn Sie schon einmal einen etwas komplexeren Rechenalgorithmus geschrieben haben, ist Ihnen sicher aufgefallen, dass es immer viele Variablen gibt, die an verschiedenen Stellen mehrfach verarbeitet werden müssen und deren Werte in verschiedenen Teilen des Programms jederzeit kontrolliert werden können... Wie man zu dieser Situation noch hinzufügen kann, dass der gesamte interne Inhalt des Objekts von der Außenwelt gekapselt ist, ist unklar....
 
George Merts:

Hallo...

Verstehen Sie viel über die Funktionsweise von Metatrader? Kennen Sie eine der Variablen von MT? Das hält Sie aber nicht davon ab, es zu benutzen.

Sie sollten dies innerhalb Ihres Programms tun. Es gibt eine Reihe von Blöcken, die über vordefinierte Schnittstellen interagieren und sich gegenseitig nicht beeinträchtigen.

Seien Sie vorsichtig, wir sprechen hier nicht von internen MT-Variablen, sondern von internen Objektvariablen, die Sie isoliert haben, um zu verhindern, dass ihre Werte beim Debuggen und Schreiben von Code gelesen werden können...
 
Andrei:
Seien Sie vorsichtig, wir sprechen hier nicht von internen MT-Variablen, sondern von internen Objektvariablen, die Sie isoliert haben, um zu verhindern, dass ihre Werte beim Debuggen und Schreiben von Code gelesen werden können...

Wenn interne Objektvariablen an anderer Stelle benötigt werden, handelt es sich nicht mehr um interne Objektvariablen, sondern man muss sich Gedanken über die Logik des Aufbaus dieses Objekts machen (höchstwahrscheinlich muss es wieder in kleinere Objekte aufgeteilt werden). Als letzter Ausweg, wenn es wirklich notwendig ist und es keine andere Möglichkeit gibt, wird eine öffentlich zugängliche Get-Methode in der Schnittstelle ausgeführt.

 
George Merts:
Andrei ist noch klinischer als Peter oder Sansanych, du verschwendest deine Zeit
 
Andrei:
Wenn Sie schon einmal einen etwas komplexeren Rechenalgorithmus geschrieben haben, werden Sie festgestellt haben, dass es immer viele Variablen gibt, die Sie mehrfach an verschiedenen Stellen behandeln und deren Werte Sie jederzeit an verschiedenen Stellen des Programms kontrollieren können müssen... Wie man zu dieser Situation noch hinzufügen kann, dass der gesamte interne Inhalt des Objekts von der Außenwelt gekapselt ist, ist unklar....

so etwas zeigt, dass Sie es waren, der leider fast nichts geschrieben hat :-(

Was für ein Chaos im System!

 
Ihor Herasko:

Wenn interne Objektvariablen an anderer Stelle benötigt werden, sind sie keine internen Objektvariablen mehr. Als letztes Mittel, wenn es wirklich notwendig ist und es keine andere Möglichkeit gibt, wird eine öffentlich zugängliche Get-Methode in die Schnittstelle aufgenommen.

Ja... man kann nicht anders, als sich zu fragen, was zum Teufel da drin ist :) Die Idee ist, eine adäquate Programmiersprache zu haben, um das Debuggen und das Schreiben von Code mit minimalen Gesten zu erleichtern, und hier haben wir eine völlig entgegengesetzte Situation...

 
Maxim Kuznetsov:

so etwas zeigt, dass Sie es waren, der leider fast nichts geschrieben hat :-(

ein solches Chaos im System!

Wenn Sie weniger emotional und nachdenklich wären und sich konkreter ausdrücken könnten, wären Sie nicht viel wert. :)
 
Andrei:
Wenn Sie schon einmal einen etwas komplexeren Rechenalgorithmus geschrieben haben, ist Ihnen sicher aufgefallen, dass es immer viele Variablen gibt, die an verschiedenen Stellen mehrfach verarbeitet werden müssen und deren Werte Sie an verschiedenen Stellen des Programms jederzeit kontrollieren können müssen... Wie man zu dieser Situation noch hinzufügen kann, dass der gesamte interne Inhalt eines Objekts von der Außenwelt gekapselt ist, ist unklar....

Hallo.

Benötigt ein Block Daten von einem anderen Block, so wird eine entsprechende virtuelle Schnittstelle deklariert, um diese Fähigkeit bereitzustellen. Hier, oben, die Funktionalität des Handels-Prozessor - ist in verschiedenen Teilen des Programms erforderlich, in den Generator von Eingängen, in der Steuerung von Trailing und Exit, in der Steuerung von Stop-Trades. Jeder dieser Programmblöcke kann sich auf das Expert Advisor-Objekt beziehen und eine Schnittstelle zum Handelsprozessor erhalten. Gleichzeitig hat niemand direkten Zugang zu diesem Prozessor - nur über eine vordefinierte Schnittstelle.

An anderen Stellen ist es dasselbe - wenn Daten benötigt werden, muss dieser Block die entsprechende Schnittstelle bereitstellen.

Der Punkt ist, dass jeder Punkt im Programm nur Zugriff auf die Variablen hat, die er braucht, und keinen Zugriff auf andere Variablen.