Gastos generales de la OLP - página 5

 
fxsaber:

Tú tienes tu propio envoltorio, el otro tiene el suyo. La pregunta era si es posible crear una envoltura más conveniente que MQL4.

No creo que haya mucho que elegir...

Personalmente necesito la envoltura sólo para la plataforma cruzada - para separar la lógica del Asesor Experto de los detalles de esta o aquella plataforma

 
Andrei:

Por supuesto, hay que pagar la belleza de la POO con recursos y mucho tiempo dedicado a la depuración. La POO sólo tiene sentido como una envoltura de texto conveniente o cuando se utiliza mínimamente durante la inicialización en tiempo de ejecución... En realidad, la POO no era más que una cosa de marketing de Microsoft para aumentar los costes de las horas de trabajo de los programadores y estimular la compra de equipos más avanzados. Y ellos mismos no son tontos y escriben todo el software en C y ensamblador.

Qué visionario eres...

 
govich:

Eres un soñador, ¿verdad?

¿Tienes algo significativo que decir sobre el tema de discusión?

 

Una vez más me encontré con...

En MQL es imposible separar "no torcidamente" la implementación de los métodos del prototipo y no hay manera de proporcionar al usuario (cliente, probador, amigo/amistad) un archivo *.mqh separado y un archivo *.ex4 separado (similar a *.h y .obj/lib/dll en C++)

 
Maxim Kuznetsov:

Una vez más me encontré con...

En MQL, es imposible separar "sin problemas" la implementación de los métodos del prototipo y no hay manera de proporcionar al usuario (cliente, probador, amigo/amistad) un archivo *.mqh separado y un archivo *.ex4 separado (similar a *.h y .obj/lib/dll en C++)

¿Podría ser más específico sobre la tarea? Parece que es bastante sencillo proporcionar una cabecera con una fábrica importada que devuelva interfaces limpias, y toda la implementación está metida dentro de ex4.

 
Stanislav Korotky:

¿Puede ser más específico sobre la tarea? Parece que es posible proporcionar cabecera con fábrica importada, que devuelve interfaces limpias, y toda la implementación se almacena dentro de ex4.

La tarea es dar al usuario la biblioteca de clases con el menor esfuerzo, que consiste en: mqh donde se describen las clases y ex4 donde se almacena su implementación.

La única opción hasta la fecha arrastra mucho texto con muletas para sortear este cuello de botella.

Si conoces una forma corta y práctica de eliminar la implementación de CFoo en ex4, por favor comparte la receta.

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 tarea consiste en proporcionar al usuario una biblioteca de clases compuesta por: mqh en la que se describen las clases y ex4 en la que se implementan.

La única opción hasta ahora tira de mucho texto con muletas para sortear este cuello de botella.

Si conoce una manera corta y conveniente de eliminar la implementación de CFoo en ex4, por favor comparta la receta.

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);

};

Bueno, ya escribí una manera - ¿por qué no es adecuado? Se crea un método de fábrica, o función, que devuelve la clase abstracta (interfaz) descrita en el archivo de cabecera. Toda la implementación está oculta. El ejemplo real se puede encontrar, por ejemplo, en mi blog sobre la biblioteca de optimización de expertos sobre la marcha (en inglés).

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

Bueno, ya he escrito un método, ¿qué hay de malo en ello? Usted hace un método de fábrica, o función, que devuelve una clase abstracta (interfaz) descrita en el archivo de cabecera. Toda la implementación está oculta. El ejemplo real se puede encontrar, por ejemplo, en mi blog sobre la biblioteca de optimización de expertos sobre la marcha (en inglés).

Intenta lanzar el código fuente. Y todo el mundo conoce los enlaces a la wiki aquí
 
Maxim Kuznetsov:
Intenta lanzar el código fuente. Y todo el mundo conoce los enlaces a la wiki

¿No está bien el enlace a la wiki de origen? ;-)

 
Stanislav Korotky:

¿No está bien el enlace a la wiki de origen? ;-)

pero no lo hará :-)

Te lo digo - intenta hacerlo, es un montón de código feroz. La clase instanciable "CFoo: public InterfaceCFoo" debe contener el campo InterfaceCFoo *privateContext (hacer el enlace 1:1), crearlo y eliminarlo vía factory, delegar todos los métodos y traducir las referencias CFoo* this<->privateContext aquí y allá. Se trata de "poner el sol a mano", es decir, sustituir la herencia por la delegación, y en el acto.