Discussão do artigo "MQL para "Principiantes": como projetar e construir classes de objeto" - página 5

 
joo:

Ainda assim, não vejo nenhuma vantagem em usar OOP. ....

Portanto, você não precisa dela para suas tarefas.
 
DC2008:
Portanto, você não precisa dele para seu aplicativo.

Ou talvez você precise, mas eu não sei? :)

Ajude-me a entender.

 
joo:

... Ajude-me a entender isso.

Tente reescrever os algoritmos genéticos no estilo oop. Eles estão implorando para serem usados.

Além disso, você é muito preguiçoso para pegar o código de outras pessoas, mas não o seu próprio. Comece e você terá sucesso e, ao mesmo tempo, compare o desempenho de ambas as variantes. De acordo com minhas estatísticas, o oop torna mais lento o trabalho dos programas.

 
joo:

Ainda assim, não vejo nenhuma vantagem em usar OOP. Talvez isso me impeça de entender que tipo de coisa são essas "classes".

O que você disse pode ser formalizado como funções separadas. Ou nem todas elas? Não estou sendo exigente, por favor, me entenda corretamente - estou tentando entender os princípios da OOP.

Gostaria de ver em exemplos simples e concretos a diferença na velocidade de trabalho de códigos formatados adequadamente (com e sem OOP) e as vantagens da OOP em termos de simplicidade da organização do projeto.

É estranho ouvir perguntas sobre OOP de um desenvolvedor com suas habilidades ;-). Você deve estar brincando. É claro que você pode passar sem a OOP e implementar tudo com funções. Mas isso é simplesmente menos conveniente do ponto de vista humano - para desenvolver e manter. A OOP não aumenta a velocidade do programa em si.

Se continuarmos com o mesmo exemplo das classes de estratégia, suponha que haja um fragmento de código que deve rastrear as posições abertas de acordo com suas estratégias. Se o implementarmos em funções, teremos algo parecido com isto:

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

E se usarmos OOP:

foreach Position in Positions[]
 Position.Trail;

Há vantagens: o registro é compacto e claro, no caso de adicionar novos tipos de estratégias, essa parte do código não precisará ser alterada, não há necessidade de passar (potencialmente muitos) parâmetros ou declarar, em vez deles, variáveis globais, matrizes, que podem ser inadvertidamente estragadas por outras seções de código....

Em geral, parece haver muitos livros sobre esse assunto. Ou a essência da pergunta é diferente?

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

Tente reescrever os algoritmos genéticos no estilo oop. Eles estão apenas implorando para serem usados.

Depois de escrever o artigo, a administração sugeriu/pediu que eu o reescrevesse no estilo OOP. Admiti honestamente que não tenho a menor ideia. Foi concedida permissão para publicá-lo como está.

Estou testando. Ainda não está funcionando. Quando eu o refizer, o código com OOP e a documentação serão adicionados ao artigo.

DC2008:

Comece e você terá sucesso e, ao mesmo tempo, compare o desempenho das duas variantes. De acordo com minhas estatísticas, a OOP torna os programas mais lentos.

Bem, você confirma minha opinião de que o código com OOP é menos responsivo. Em minha experiência de trabalho com desenvolvedores que conhecem OOP, o desempenho diminui significativamente - até duas vezes (comparamos meu código e o código do meu parceiro que executam a mesma tarefa).

marketeiro:

É estranho ouvir perguntas sobre OOP de um desenvolvedor com suas habilidades ;-). Você deve estar brincando.

Infelizmente, não estou brincando. Sim, eu cresci até o tamanho de um mamute. Agora estou tentando me livrar dos atavismos - lã.

marqueteiro:

É claro que você pode dispensar a OOP e implementar tudo por meio de funções. Mas isso é simplesmente menos conveniente do ponto de vista humano, para desenvolver e manter.

Sim, eu quero "flexibilidade". É por isso que estou interessado.

marqueteiro:

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

Em geral, há muitos livros sobre esse assunto. Ou a essência da pergunta é de outra forma?

Aparentemente, não entendi algumas sutilezas. :(

Ah, bem. Vou superar essa pequena barreira em meu caminho. :)

 

Vamos lá... está brincando?

Esse não é um guia "Dummies" para um novo programador que está tentando aprender a OOP... é um monte de bobagens. Você recorta e cola alguns códigos de um aplicativo que é obscuro demais para ser útil a um programador novo ou iniciante.

 
Comecei a pesquisar aulas. Deparei-me com este artigo. Sim, sim, preciso inserir uma interface tão simples em meu Expert Advisor. Eu queria dar uma olhada nos arquivos do autor, mas não há nada lá... :-( mais precisamente na pasta masterwindows-doc.zip, há um arquivo de ajuda vazio MasterWindows-Doc.chm Que pena! Talvez tudo o que foi mencionado neste artigo já esteja desatualizado?
 
Aleksandr Brown:
Comecei a pesquisar aulas. Deparei-me com este artigo. Sim, sim, preciso inserir uma interface tão simples em meu Expert Advisor. Eu queria dar uma olhada nos arquivos do autor, mas não há nada lá... :-( mais precisamente na pasta masterwindows-doc.zip, há um arquivo de ajuda vazio MasterWindows-Doc.chm Que pena! Talvez tudo o que foi mencionado neste artigo já esteja desatualizado?

Verificado. O arquivo está correto.

Vou colá-lo aqui por precaução.

Arquivos anexados:
 
Sergey Pavlov:

Verificado. O arquivo está bom.

Vou colocá-lo aqui por precaução.

Muito obrigado por sua consideração. Admito que fui um pouco estúpido. Instalei um novo sistema operacional há alguns dias, e os serviços de segurança bloquearam todos os arquivos baixados da Internet. Mais precisamente, os programas com a ajuda dos quais eles são abertos foram iniciados, mas o conteúdo do arquivo baixado não foi exibido. Agora tudo está configurado, e o arquivo anexado no artigo também abre normalmente. Tudo muito bom e claro, obrigado.
 
Ao tentar compilar o MasterWindows, ele reclama "'CMasterWindowsEXE::Run' - cannot call protected member function ClassMasterWindows.mqh" na linha "WinEXE.Run()". Você pode me dizer como combater isso?