Frais généraux de l'OLP - page 5

 
fxsaber:

Tu as ton propre emballage, l'autre a le sien. La question était de savoir s'il était possible de créer une enveloppe plus pratique que MQL4.

Je ne pense pas qu'il y ait beaucoup de choix à faire...

Personnellement, je n'ai besoin de l'enveloppe que pour le multiplateforme, afin de séparer la logique du conseiller expert des spécificités de telle ou telle plateforme.

 
Andrei:

Bien sûr, vous devez payer pour la beauté de la POO avec des ressources et beaucoup de temps passé à déboguer. La POO n'a de sens qu'en tant qu'enveloppe de texte pratique ou lorsqu'elle est utilisée de manière minimale pendant l'initialisation de l'exécution... En fait, la POO n'était qu'un truc marketing de Microsoft pour augmenter les coûts des heures de travail des programmeurs et pour stimuler l'achat d'équipements plus avancés. Et ils ne sont pas idiots eux-mêmes et écrivent tous les logiciels en C et en assembleur.

Quel visionnaire vous êtes...

 
govich:

Vous êtes un rêveur, n'est-ce pas ?

Avez-vous quelque chose de significatif à dire sur le sujet de la discussion ?

 

Une fois de plus, je suis tombé sur...

Dans MQL, il est impossible de séparer "sans détour" l'implémentation des méthodes du prototype et il n'y a aucun moyen de fournir à l'utilisateur (client, testeur, ami/amie) un fichier *.mqh séparé et un fichier *.ex4 séparé (similaire à *.h et .obj/lib/dll en C++).

 
Maxim Kuznetsov:

Une fois de plus, je suis tombé sur...

Dans MQL, il est impossible de séparer "inconditionnellement" l'implémentation des méthodes du prototype et il n'y a aucun moyen de fournir à l'utilisateur (client, testeur, ami/amie) un fichier *.mqh séparé et un fichier *.ex4 séparé (similaire à *.h et .obj/lib/dll en C++).

Pourriez-vous être plus précis sur la tâche à accomplir ? Il semble assez simple de fournir un en-tête avec une fabrique importée qui renvoie des interfaces propres, et toute l'implémentation est entassée dans ex4.

 
Stanislav Korotky:

Pouvez-vous être plus précis sur la tâche à accomplir ? Il semble qu'il soit possible de fournir un en-tête avec une fabrique importée, qui renvoie des interfaces propres, et toute l'implémentation est stockée dans ex4.

La tâche est de donner à l'utilisateur la bibliothèque de classes avec le moins d'effort possible, qui consiste en : mqh où les classes sont décrites et ex4 où leur implémentation est stockée.

La seule option à ce jour traîne beaucoup de texte avec des béquilles pour contourner ce goulot d'étranglement.

Si vous connaissez un moyen court et pratique de supprimer l'implémentation de CFoo dans ex4, veuillez partager la recette.

class CFoo {
public:
   CFoo();                         //default
  CFoo(const CFoo orig); // copy
   ~CFoo();
   bool Set(string key,CFoo & link); 
   CFoo *Get(string key);
   bool Clear(string key);

};

 
Maxim Kuznetsov:

la tâche consiste à donner à l'utilisateur une bibliothèque de classes composée de : mqh dans laquelle les classes sont décrites et ex4 dans laquelle elles sont implémentées.

La seule option jusqu'à présent consiste à tirer beaucoup de texte avec des béquilles pour contourner ce goulot d'étranglement.

Si vous connaissez un moyen court et pratique de supprimer l'implémentation de CFoo dans ex4, veuillez partager la recette.

class CFoo {
public:
   CFoo();                         //default
  CFoo(const CFoo orig); // copy
   ~CFoo();
   bool Set(string key,CFoo & link); 
   CFoo *Get(string key);
   bool Clear(string key);

};

Eh bien, j'ai déjà écrit un moyen - pourquoi il ne convient pas ? Vous créez une méthode d'usine, ou fonction, qui renvoie la classe abstraite (interface) décrite dans le fichier d'en-tête. Toute la mise en œuvre est cachée. L'exemple réel peut être trouvé, par exemple, dans mon blog sur la bibliothèque d'optimisation des experts à la volée (en anglais).

Фабричный метод (шаблон проектирования) — Википедия
Фабричный метод (шаблон проектирования) — Википедия
  • ru.wikipedia.org
Шаблон проектирования Тип: Назначение: Структура: Плюсы: Минусы: Описан в Design Patterns Фабричный метод (англ.  также известен как Виртуальный конструктор (англ.  )) — порождающий шаблон проектирования, предоставляющий подклассам интерфейс для создания экземпляров некоторого класса. В момент создания наследники могут определить, какой...
 
Stanislav Korotky:

Eh bien, j'ai déjà écrit une méthode - qu'y a-t-il de mal à cela ? Vous créez une méthode de fabrique, ou fonction, qui renvoie une classe abstraite (interface) décrite dans le fichier d'en-tête. Toute la mise en œuvre est cachée. L'exemple réel peut être trouvé, par exemple, dans mon blog sur la bibliothèque d'optimisation des experts à la volée (en anglais).

Essayez de lancer le code source. Et tout le monde connaît les liens vers le wiki ici
 
Maxim Kuznetsov:
Essayez de jeter le code source. Et tout le monde connaît les liens vers le wiki

Le lien vers le wiki source n'est-il pas correct ? ;-)

 
Stanislav Korotky:

Le lien vers le wiki source n'est-il pas correct ? ;-)

mais ce ne sera pas le cas :-)

Je vous le dis, essayez de le faire, c'est un sacré paquet de codes. La classe instanciable "CFoo : public InterfaceCFoo" doit contenir le champ InterfaceCFoo *privateContext (faire le lien 1:1), le créer et le supprimer via la fabrique, déléguer toutes les méthodes et traduire les références CFoo* this<->privateContext ici et là. Il s'agit de "coucher le soleil à la main", c'est-à-dire de remplacer l'héritage par la délégation, et ce sur place.