Discussion de l'article "MQL pour "Nuls" : Comment Concevoir et Construire des Classes d'Objets" - page 5

 
joo:

Pourtant, je ne vois aucun avantage à utiliser la POO. ....

Vous n'en avez donc pas besoin pour vos tâches.
 
DC2008:
Vous n'en avez donc pas besoin pour votre application.

Ou peut-être en avez-vous besoin, mais je ne le sais pas ? :)

Aidez-moi à le découvrir.

 
joo:

... Aidez-moi à comprendre.

Essayez de réécrire les algorithmes génétiques dans le style oop. Ils ne demandent qu'à y aller.

En outre, vous êtes trop paresseux pour reprendre le code des autres, mais pas le vôtre. Commencez et vous réussirez, tout en comparant les performances des deux variantes. D'après mes maigres statistiques, oop ralentit le travail des programmes.

 
joo:

Pourtant, je ne vois aucun avantage à l'utilisation de la POO. Peut-être que cela m'empêche de comprendre quel genre de bêtes sont ces "classes".

Ce que vous avez dit peut être formalisé sous forme de fonctions distinctes. Ou pas toutes ? Je ne suis pas pointilleux, comprenez-moi bien - j'essaie de comprendre les principes de la POO.

J'aimerais voir sur des exemples concrets et simples la différence dans la vitesse de travail de codes correctement formatés (avec et sans OOP) et les avantages de l'OOP en termes de simplicité de l'organisation du projet.

Il est étrange d'entendre des questions sur la POO de la part d'un développeur avec vos compétences ;-). Vous plaisantez. Bien sûr, vous pouvez vous passer de la POO et tout implémenter avec des fonctions. Mais c'est tout simplement moins pratique d'un point de vue humain - pour le développement et la maintenance. La POO n'augmente pas la vitesse du programme lui-même.

Si nous reprenons le même exemple avec les classes de stratégie, supposons qu'il existe un fragment de code qui doit parcourir les positions ouvertes en fonction de leurs stratégies. Si nous l'implémentons sur des fonctions, nous obtiendrons quelque chose comme ceci :

foreach Position in Positions[]
 if StrategyType(Position) == N1 TrailTypeN1(Position);
 else if StrategyType(Position) == N2 TrailTypeN2(Position);
 ...

Et si nous utilisons la POO :

foreach Position in Positions[]
 Position.Trail;

Il y a des avantages : l'enregistrement est compact et clair, en cas d'ajout de nouveaux types de stratégies, cette partie du code ne devra pas être modifiée, il n'est pas nécessaire de passer (potentiellement beaucoup) de paramètres ou de déclarer à leur place des variables globales, des tableaux, qui peuvent être altérés par inadvertance à partir d'autres sections de code.....

D'une manière générale, il semble y avoir beaucoup de livres sur ce sujet. Ou l'essence de la question est-elle différente ?

Документация по MQL5: Основы языка / Переменные / Глобальные переменные
Документация по MQL5: Основы языка / Переменные / Глобальные переменные
  • www.mql5.com
Основы языка / Переменные / Глобальные переменные - Документация по MQL5
 
DC2008:

Essayez de réécrire les algorithmes génétiques à la manière d'OOP. Ils ne demandent qu'à y aller.

Après avoir écrit l'article, l'administration m'a suggéré/demandé de le réécrire dans le style OOP. J'ai honnêtement admis que je n'en avais aucune idée. J'ai été autorisé à le publier tel quel.

Je suis en train d'essayer. Cela ne fonctionne pas encore. Lorsque je l'aurai refait, le code avec la POO et la documentation seront ajoutés à l'article.

DC2008:

Commencez et vous réussirez, et comparez en même temps les performances des deux variantes. D'après mes petites statistiques, la POO ralentit les programmes.

Vous confirmez ainsi mon opinion selon laquelle le code OOP est moins réactif. D'après mon expérience de collaboration avec des développeurs qui connaissent la POO, les performances diminuent de manière significative - jusqu'à deux fois (nous avons comparé mon code et celui de mon partenaire effectuant la même tâche).

marketeer:

Il est étrange d'entendre des questions sur la POO de la part d'un développeur ayant vos compétences ;-). Vous devez plaisanter.

Malheureusement, je ne plaisante pas. Oui, j'ai atteint la taille d'un mammouth. J'essaie maintenant de me débarrasser de mes atavismes - la laine.

marketeer:

Bien sûr, on peut se passer de la POO et tout mettre en œuvre par des fonctions. Mais c'est tout simplement moins pratique d'un point de vue humain - pour le développement et la maintenance.

Oui, je veux de la "flexibilité". C'est la raison pour laquelle je suis intéressé.

marketeer:

..............

En général, il y a beaucoup de livres sur ce sujet. Ou bien l'essence de la question se présente-t-elle d'une autre manière ?

Apparemment, je ne saisis pas certaines subtilités. :(

Mais bon. Je vais surmonter ce petit mur sur mon chemin. :)

 

C'est vrai... vous plaisantez ?

Il ne s'agit pas d'un guide "pour les nuls" pour un nouveau programmeur essayant d'apprendre la POO... c'est un ramassis de charabia. Vous avez copié-collé du code d'une application qui est bien trop obscure pour être utile à un nouveau programmeur ou à un programmeur débutant.

 
J'ai commencé à rechercher des cours. Je suis tombé sur cet article. Oui, oui, j'ai besoin d'insérer une interface aussi simple dans mon Expert Advisor. J'ai voulu regarder les fichiers de l'auteur, mais il n'y a rien... :-( plus précisément dans le dossier masterwindows-doc.zip, il y a un fichier d'aide vide MasterWindows-Doc.chm Dommage ! Peut-être que tout ce qui est mentionné dans cet article est déjà obsolète ?
 
Aleksandr Brown:
J'ai commencé à rechercher des cours. Je suis tombé sur cet article. Oui, oui, j'ai besoin d'insérer une interface aussi simple dans mon Expert Advisor. J'ai voulu regarder les fichiers de l'auteur, mais il n'y a rien... :-( plus précisément dans le dossier masterwindows-doc.zip, il y a un fichier d'aide vide MasterWindows-Doc.chm Dommage ! Peut-être que tout ce qui est mentionné dans cet article est déjà périmé ?

Vérification faite. Le fichier est correct.

Je le colle ici au cas où.

Dossiers :
 
Sergey Pavlov:

Vérifié. Le fichier est bon.

Je le mets ici au cas où.

Merci beaucoup de votre attention. Je dois admettre que j'ai été un peu stupide. J'ai installé un nouveau système d'exploitation il y a quelques jours, et les services de sécurité ont bloqué tous les fichiers téléchargés à partir d'Internet. Plus précisément, les programmes à l'aide desquels ils sont ouverts ont été lancés, mais le contenu du fichier téléchargé n'a pas été affiché. Aujourd'hui, tout est en place et le fichier joint à l'article s'ouvre normalement. Tout cela est très bien et très clair, merci.
 
En essayant de compiler MasterWindows, il se plaint "'CMasterWindowsEXE::Run' - cannot call protected member function ClassMasterWindows.mqh" sur la ligne "WinEXE.Run()". Pouvez-vous me dire comment résoudre ce problème ?