Fragen zu OOP in MQL5 - Seite 51

 
Sergey Dzyublik:

1. Es stellt sich heraus, dass die Baumdatenstruktur alles von dem Bösen ist.
2. schlechtes C++, wo class == private struct, was zu tun ist, wir sollten wahrscheinlich Strukturen und Klassen aufgeben.
3. und das ist richtig: keine Muster, keine Sortierung nach Zeigern, keine Speicherersparnis, insbesondere bei großen Objekten...
4. Wir sollten nicht vergessen, die Verwendung von Schnittstellen und Template-Funktionen zu verbieten, da man sonst nicht versteht, mit welchem Objekt man arbeitet - was für ein Horror...

1. Nein, warum nicht? Wenn es darum geht, dass Baumknoten (oder verknüpfte Listen) ihren Zustand ändern, geht es einfach darum, den Zugriff auf diesen Zustand zu regeln. Was dieFunktionalität des Codes betrifft, sollte der Benutzer keinen Zugriff auf den Zustand eines Knotens haben.Alle Iterationen über Knoten sollten durch Zugriff auf den Baum selbst erfolgen: tree.NextNode(myNode) oder tree.Parent(myNode), nicht myNode.NextNode() oder myNode.Parent().

D.h. der geänderte Zustand sollte nicht öffentlich zugänglich sein.

2) Sehen Sie, ich habe die Sharpe-Struktur genommen, weil es unmöglich ist, einen Verweis/Zeiger auf sie zu nehmen. Wenn es keine solche Kontrolle gibt, müssen Sie für eine persönliche Kontrolle sorgen, z. B. durch eine angemessene Benennung der Klassen. Sagen wir es mal so:

Klasse MyClass_mut; // veränderbar

Klasse MyClass_immut; // unveränderlich

3, 4. Sie irren sich. Alles kann implementiert werden ) Sie sollten nur nicht denken, dass alle Daten des Objekts notwendigerweise über den Stack kopiert werden. Im Allgemeinen enthält ein Objekt einen internen Zeiger auf die Daten. Das ist wie bei intelligenten Zeigern. Nur im Falle von veränderlichen Objekten muss dieser Zeiger noch intelligenter sein)

 
Aleksey Mavrin:

Dmitry, ich versichere Ihnen, ich hätte Sie mit Vergnügen ausgelacht, auch ich liebe dieses Geschäft), aber in diesem Fall haben Sie übertrieben, auch besonders gut lächelte.

Sie sind wirklich verwirrt - ein SCHUSS ist nicht gleich eine OBJEKTKOPIE, ich habe Sie darauf hingewiesen.

Wenn es nicht klar ist, lassen Sie es mich anhand eines Beispiels erklären: Sie haben 1000 Bytes eines Objekts, Sie brauchen 200 für einen Schnappschuss, warum also 800 kopieren, besonders wenn Sie viele Millionen gespeicherte Schnappschüsse haben.

p/s// Und ganz allgemein. Ist den Leuten nicht klar, dass Muster nur ein elementares Beispiel für die Lösung eines elementaren TYPISCHEN Problems sind? Und in der Tat sind die Aufgaben nicht einfach, sondern komplizierter. Und um reale Probleme zu lösen, sind die Muster notwendig, aber oft nicht in reiner Buchform, sondern angepasst an eine bestimmte Aufgabe, möglicherweise miteinander kombiniert, möglicherweise mit dem Zusatz einer gewissen Improvisation, die sich manchmal in einer Vereinfachung ausdrückt, wenn die Aufgabe es zulässt, oder umgekehrt in einer "Gewichtung" der Umsetzung.

Nochmals, warum braucht man Kapselung und Schnittstellen - das kann man wahrscheinlich nicht verstehen, wenn Ihr IQ unter Wasserman liegt oder wenn Sie nicht an echten Projekten teilgenommen haben, bei denen verschiedene Teile des Projekts von verschiedenen Leuten gleichzeitig geändert werden und die Nichtbeachtung grundlegender OOPD-Prinzipien enorme Kosten für das Auffinden von Fehlern verursacht. Wirklich, warum all dies für die Stanzung von Expert Advisors für Markt))

Sie verwechseln Algorithmen zur Lösung von Programmieraufgaben mit so genannten und heutzutage modischen "Entwurfsmustern", die sich ausschließlich auf OOP beziehen. Und Sie verwechseln viele andere Dinge und lesen unaufmerksam. Etwas früher habe ich geschrieben: "Nutzen Sie die Struktur. Aber wenn Sie diesen Beitrag gelesen hätten und ich nicht über die Funktion des Kopierens der gesamten Klasse geschrieben hätte, wären Sie zu dem Punkt gekommen, dass wir erwachsen sind und es keinen Grund gibt, zusätzliche Arbeit mit unnötigen Strukturen zu machen, wenn wir alles ausgereift tun sollten - bieten Sie einfach die Möglichkeit, die gesamte Klasse zu kopieren.

 
Aleksey Mavrin:

...

Nochmals, warum braucht man Kapselung und Schnittstellen - das ist wahrscheinlich unmöglich zu verstehen, wenn Ihr IQ unter dem von Wasserman liegt, oder wenn Sie nicht an echten Projekten teilgenommen haben, bei denen verschiedene Teile eines Projekts von verschiedenen Leuten gleichzeitig geändert werden, und die Nichteinhaltung elementarer Prinzipien von OOPD enorme Kosten für das Auffinden von Fehlern nach sich zieht. Wirklich, warum all dies für die Stanzung von Expert Advisors für den Markt))

.

Sergey Dzyublik:

...
4. Ich darf nicht vergessen, die Verwendung von Interfaces und Template-Funktionen zu verbieten, sonst versteht man nicht, mit welchem Objekt man arbeitet - was für ein Horror...

Irgendwann, irgendwo gelesen, was Schnittstellen sind und warum sie gebraucht werden.

-

Oh, und das... Verwechseln Sie ernsthaft die Möglichkeit, alle oder einige Felder eines Objekts zu speichern, mit der Undo/Redo-Funktion? Lassen Sie uns über Photoshop sprechen, Sie wissen, wie es geht.

-

Und wer von Ihnen ist so schokoladig und schreibt mir eine E-Mail?

-

Was ist eigentlich Ihr Problem? Habe ich die Grundfesten deines Glaubens an die Heiligen Muster erschüttert?

 
Ein autodidaktischer Amateur, der noch nie etwas anderes gesehen hat als mql, der Männern beibringt, wie man Programme schreibt, es ist lustig, hereinzukommen und zu lesen)
 

Ich war dabei, das Bücherregal hier zu durchsuchen.

Toller Fund: "Einführung in die Künstliche Intelligenz und Expertensysteme mit Abbildungen in BASIC" 1987. Eines der Kapitel "Das Konzept der objektorientierten Programmierung".

Glauben Sie mir - NICHTS hat sich geändert...

 
Maxim Kuznetsov:

Ich war dabei, das Bücherregal hier zu durchsuchen.

Toller Fund: "Einführung in die Künstliche Intelligenz und Expertensysteme mit Abbildungen in BASIC" 1987. Eines der Kapitel "Das Konzept der objektorientierten Programmierung".

Glauben Sie mir - es hat sich NICHTS geändert...

Es hat sich viel verändert, damals gab es noch keine Gemeinde von Anhängern der Sacred Design Patterns. Und der Club der C++-Opfer hatte sich zu diesem Zeitpunkt auch noch nicht gebildet.

 
Dmitry Fedoseev:

Vieles hat sich geändert, damals gab es noch keine Kirche von Anhängern der heiligen Designmuster.

Damals gab es keine Kirche der heiligen Design-Anbeter. Das gibt es auch heute nicht, Sie können das Runet durchsuchen, wenn die Zahl der Fragen zu Entwurfsmustern im Runet sehr gering ist, bedeutet das, dass es nicht als Masse existiert, die "Buch"-Fragen der Studenten zählen nicht.

sie haben nichts zu lesen, aber es ist praktisch, wenn Sie ein Projekt skalieren wollen, im Allgemeinen ist die Struktur des Programms zunächst korrekt

 
Dmitry Fedoseev:

Es hat sich viel verändert, es gab keine Kirche der Heiligen Patres des Designs.

"Design Patterns" sind lediglich eine Vereinbarung, häufig vorkommende Dinge mit denselben Namen zu benennen. Übrigens kommt der Begriff aus der Architektur (Skulpturen/Brücken/Portale/Portale).

Manchmal werden ähnliche Dinge mit ähnlichen Techniken gelöst, nicht immer... Aber es ist nützlich, sich auf die Ähnlichkeit der Dinge und Methoden zu einigen, um sich gegenseitig zu verstehen.

Aber natürlich gibt es auch diejenigen, die sagen: "Gib einem Dummkopf einen Glasphallus und er wird das Ding zerbrechen und sich selbst schneiden".

 
Igor Makanu:

Das gibt es auch jetzt noch nicht, Sie können das Runet durchsuchen, wenn die Zahl der Fragen zu Mustern im Runet sehr klein ist, dann gibt es sie nicht als Masse, die "Buch"-Fragen der Studenten zählen nicht

Es gibt nichts zu lesen, aber es ist praktisch, wenn man ein Projekt skalieren will.

Sie enthalten nichts. Wie viele Muster haben Sie studiert?

 
Dmitry Fedoseev:

In ihnen ist nichts eingebettet. Wie viele Muster haben Sie studiert?

Was ist mit "studiert" gemeint?

wenn ich die Beschreibungen in mehreren Foren gelesen habe, dann habe ich Dutzende davon

Wenn in MQL angewendet, dann ein - die Strategie funktioniert, es skaliert, Refactoring ist einfach - ich kann wegwerfen alle unnötigen Dinge für den Tester, um es schneller, oder gehen Sie direkt zu einer Demo - es ist in der Regel bequem und praktisch

Grund der Beschwerde: