Sobretaxa para a OLP - página 5

 
fxsaber:

Você tem seu próprio invólucro, o outro tem seu próprio invólucro. A questão era se é possível criar uma embalagem mais conveniente do que a MQL4.

Acho que não há muito por onde escolher...

Pessoalmente, preciso do invólucro apenas para a plataforma cruzada - para separar a lógica do Expert Advisor das especificidades desta ou daquela plataforma

 
Andrei:

É claro, você tem que pagar pela beleza do OOP com recursos e muito tempo gasto na depuração. O OOP só faz sentido como um conveniente invólucro de texto ou quando usado minimamente durante a inicialização em tempo de execução... Na verdade, o OOP foi apenas uma coisa de marketing da Microsoft para aumentar os custos do horário de trabalho dos programadores e para estimular a compra de equipamentos mais avançados. E eles mesmos não são tolos e escrevem todo o software em C e assembler.

Que visionário você é...

 
govich:

Você é um sonhador, não é?

Você tem algo significativo a dizer sobre o tema da discussão?

 

Mais uma vez me deparei...

Na MQL, é impossível "não torto" separar a implementação de métodos do protótipo e não há como fornecer ao usuário (cliente, testador, amigo/amigo) um arquivo *.mqh separado e um arquivo *.ex4 separado (similar ao *.h e .obj/lib/dll em C++)

 
Maxim Kuznetsov:

Mais uma vez me deparei...

Na MQL, é impossível "sem querer" separar a implementação de métodos do protótipo e não há como fornecer ao usuário (cliente, testador, amigo/amigo) um arquivo *.mqh separado e um arquivo *.ex4 separado (similar ao *.h e .obj/lib/dll em C++)

Você poderia ser mais específico sobre a tarefa? Parece ser bastante simples fornecer um cabeçalho com uma fábrica importada que devolve interfaces limpas, e toda a implementação é abarrotada dentro do ex4.

 
Stanislav Korotky:

Você pode ser mais específico sobre a tarefa? Parece ser possível fornecer cabeçalho com fábrica importada, que devolve interfaces limpas, e toda a implementação é armazenada dentro do ex4.

A tarefa é dar ao usuário a biblioteca de classes com o mínimo de esforço, que consiste em: mqh onde as classes são descritas e ex4 onde sua implementação é armazenada.

A única opção até o momento arrasta muito texto com muletas para contornar este gargalo.

Se você conhece uma maneira curta e prática de remover a implementação do CFoo no ex4, por favor, compartilhe a receita.

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:

a tarefa é dar ao usuário uma biblioteca de classes composta de: mqh em que as classes são descritas e ex4 em que elas são implementadas.

A única opção até agora puxa um monte de texto com muletas para contornar este gargalo.

Se você conhece uma maneira curta e conveniente de remover a implementação do CFoo no ex4, por favor, compartilhe a receita.

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

};

Bem, eu já escrevi um caminho - por que não é adequado? Você faz um método de fábrica, ou função, que retorna a classe abstrata (interface) descrita no arquivo de cabeçalho. Toda a implementação está escondida. O verdadeiro exemplo pode ser encontrado, por exemplo, em meu blog sobre a biblioteca de otimização de especialistas na mosca (em inglês).

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

Bem, eu já escrevi um método - o que há de errado com isso? Você faz um método de fábrica, ou função, que retorna uma classe abstrata (interface) descrita no arquivo de cabeçalho. Toda a implementação está escondida. O verdadeiro exemplo pode ser encontrado, por exemplo, em meu blog sobre a biblioteca de otimização de especialistas na mosca (em inglês).

Tente jogar o código fonte. E todos conhecem os links para o wiki aqui
 
Maxim Kuznetsov:
Tente lançar o código fonte. E todos conhecem os links para o wiki

O link para o wiki de origem não é ok? ;-)

 
Stanislav Korotky:

O link para o wiki de origem não é ok? ;-)

mas não vai :-)

Estou dizendo - tente fazer isso, é um código de lote feroz. A classe instantânea "CFoo: public InterfaceCFoo" deve conter o campo InterfaceCFoo *contexto privado (fazer link 1:1), criá-lo e excluí-lo via fábrica, delegar todos os métodos e traduzir as referências CFoo* aqui e ali. Isto é "pôr do sol à mão", ou seja, substituir a herança pela delegação, e no local.

Razão: