Formação em MQL5 - página 19

 
papaklass:
Deixem-me fazer-vos uma pergunta. Qual é a diferença fundamental entre a programação processual e o OOP? Algumas palavras, ou seja, a essência da diferença.

Para começar, mesmo a abordagem processual implica estruturas, porque sem elas é difícil. Isto é, pelo menos, algum tipo de organização de dados.

O OOP torna bastante confortável identificar entidades abstractas e as relações entre elas na fase de concepção. E depois pode simplesmente codificá-las, mesmo individualmente, sem estar particularmente preocupado com as peculiaridades da implementação.

E tudo isto parece mais lógico e legível. E muitas vezes funciona mais rapidamente. E o principal é que é implementado mais rapidamente. Apesar do facto de podermos ter mais código.

 
papaklass:

Queria que expressasse a sua compreensão da questão, e não que me desse uma formulação livreira. Não significa não. Vou falar-vos de mim.

Bem, eu não "lhe dei uma formulação de livro" :) Não formulei absolutamente nada - com uma explicação. Apenas assumi que a pergunta era uma pergunta de exame, a resposta que já conhece graças à pílula. E assim se revelou :) Não me recusei a responder sobre a minha experiência pessoal.

Por vezes é suficiente "sentir" o fenómeno e sem fazer perguntas filosóficas como "como pode ser" e "qual é o seu significado mais profundo", compreender simplesmente através do exemplo como funciona. A referência no Manual de Referência ao tetris foi suficiente para mim e este exemplo foi suficiente para o início:

Dependendo doobjecto de classe criado, é chamada uma função virtual de uma ou outra classe derivada.

void CTetrisField::NewShape()
  {
//--- случайным образом создаём одну из 7 возможных фигур
   int nshape=rand()%7;
   switch(nshape)
     {
      case 0: m_shape=new CTetrisShape1; break;
      case 1: m_shape=new CTetrisShape2; break;
      case 2: m_shape=new CTetrisShape3; break;
      case 3: m_shape=new CTetrisShape4; break;
      case 4: m_shape=new CTetrisShape5; break;
      case 5: m_shape=new CTetrisShape6; break;
      case 6: m_shape=new CTetrisShape7; break;
     }
//--- отрисовываем
   m_shape.Draw();
//---
  }

A criação intuitiva de objectos cujo comportamento difere em função dos dados iniciais foi suficiente para ver. A seguir - pedi o ficheiro tetris completo do fórum, mais os materiais da Referência, bibliotecas, etc. E depois continuou e continuou. Muitas perguntas sobre o fórum sobre o assunto.

papaklass:

Depois de ler um monte de informação no website, ainda não compreendo o que é o OOP.

Temos simplesmente uma abordagem cardinalmente diferente. Não me perguntei particularmente "o que é o OOP" do ponto de vista científico. - Para não perder a essência por detrás de uma fachada de termos novos e incompreensíveis.

Fui sem rodeios estudar os exemplos disponíveis.

papaklass:

Depois de ler muita informação no website, ainda não percebi o que é o OOP.

A Referência MQL5 / Fundamentos / Programação Orientada para Objectos. Basta ler a página. Aparentemente, isto foi suficiente para mim - sem a necessidade de procurar outras definições em materiais de terceiros.

 
papaklass:

A resposta à minha pergunta:

A programação de produtos centra-se em acções (verbos), enquanto a programação orientada para objectos centra-seem objectos, ou entidades (substantivos). Esta é a principal diferença.


Em teoria e na prática, é:

A programação processual responde à questão de saber o que fazer (verbos) ,
Verbos de programação orientados para objectos e descreve(adjectivos) o(s) objecto( s).

Ou seja, OOP é uma superestrutura generalizadora de código em frases significativas com muitas partes da fala.


Aquele que fala apenas em verbos é autorizado a viver em procedimentos.

Quem quiser narrar o seu código, deixe-o escrevê-lo com o OOP.


PS.

O quanto estamos cansados de todos estes teóricos programadores, raios partam!

Em breve matarei impiedosamente o tópico "OOP vs Procedimentos".
 
sergeev:

PS.

Estou farto e cansado de todos estes teóricos programadores, caramba.

Em breve estarei a matar impiedosamente os súbditos "OOP vs Procedimentos".
Porque é que tem de "matá-los" de imediato? A maioria dos principiantes na MQL5 estão familiarizados com a "programação processual". E se tiverem dúvidas sobre a necessidade e significado do OOP - precisam de ser pacientemente explicados/compreendidos. Como um professor na escola - a mesma coisa ano após ano. Explicar pacientemente, - não dizer-lhes para se foderem só porque o professor está cansado de repetir este tópico.
 
sergeev:

PS.

O quanto estamos fartos de todos estes teóricos da programação, raios partam!

Em breve os temas "OOP vs Procedimentos" serão impiedosamente mortos.

"Em vez de organizar a pontuação à vontade, escreva um glossário e não haverá ninguém para "matar impiedosamente".

Mas se ler "praticantes" do OOP - é como uma "casta" de peritos muito atenciosos no OOP.

MQL5 é uma linguagem para todos os níveis de compreensão e capacidades, não apenas para os náufragos - os exemplos padrão de indicadores e de Expert Advisors provam-no.

Uma linguagem de programação não é o objectivo, mas sim os meios. Se o PP for suficiente para atingir o objectivo - que assim seja. Se é mais fácil e mais claro para alguém utilizar o OOP - que assim seja. E para alcançar o objectivo - não há diferença fundamental - especialmente em 90% dos indicadores microfuncionais de código baixo e dos Expert Advisors, que são principalmente escritos.

 

papaklass:

Quando se depara com uma frase como esta no início de um curso, fica imediatamente claro do que se trata todo o livro. E, de alguma forma, tudo se encaixa no lugar. Compreende que os atributos são propriedades dos objectos, que as implementações e métodos são a mesma coisa (funções) e, finalmente, que as classes são constituídas por objectos. Os objectos não só têm atributos (propriedades) e métodos (funções), como também podem interagir uns com os outros. Ao mesmo tempo, eles (objectos) não precisam de conhecer os atributos e métodos de outros objectos. É assim que as classes são criadas a partir destes blocos de construção, que também interagem uns com os outros.

Puseste tudo numa pilha tão grande que nem sequer consegues fazer papas de aveia)))) Não pode ser que esteja escrito num livro.
 
abolk:

Uma linguagem de programação não é um fim, mas um meio. Se o PP for suficiente para atingir o objectivo, que assim seja. Se o OOP é mais claro e mais simples para alguém, que assim seja.

Sábio. A julgar pela minha própria experiência: os indicadores da moeda única são escritos em PP. E o Expert Advisor multi-moeda é escrito utilizando o OOP (porque sem o OOP - no meu caso não teria aparecido de todo).
 

Как уже надоели все эти программистские теоретики, блин. 

Em breve os fios "OOP vs Procedimentos" serão impiedosamente mortos.

Isto porque as pessoas não compreendem as vantagens, desvantagens, lugares e formas de utilização de ambos. Um artigo com exemplos tão simples: PP dará vantagens para esta tarefa_1 tais e desvantagens tais, OOP dará vantagens para esta tarefa_1 tais e desvantagens tais; PP dará vantagens para esta tarefa_2 tais e desvantagens tais, OOP dará vantagens para esta tarefa_2 tais e desvantagens tais... Penso que é crucial prestar mais atenção à comparação de classes e interfaces, se estas últimas aparecerem em cinco, pois as subtilezas e diferenças podem ser complicadas para aqueles que são novos no OOP. E todos com tendência para resolver problemas simples, e esta é a dificuldade - a explicação e os exemplos precisam de ser tão simples e curtos quanto possível, mas utilizando os princípios do PP e do OOP.

Então seria possível quebrar um fio referindo-se a um local onde tudo está disposto em prateleiras com exemplos simples de aplicação, sistematizados de acordo com alguns tópicos.

Yedelkin:
Sábio. A julgar pela minha própria experiência: os indicadores de uma moeda são escritos em PP. E o Expert Advisor multi-moeda é escrito utilizando o OOP (sem o OOP não teria aparecido de todo).
Caro Yedelkin! Se estiver interessado, posso enviar-lhe o kernel de moeda múltipla com desenho processual (funciona por bar aberto). O código é escrito para 4, mas também funcionará em 5 - pode comparar o desempenho de ambas as variantes nele.
 
-Alexey-: Caro Yedelkin! Se estiver interessado, posso enviar-lhe um kernel de várias moedas com desenho processual (trabalha em bar aberto). O código é escrito para 4.
Sou para que todos vivam em paz e compreensão, se possível. Quanto aos meus cargos, estava apenas a descrever a minha compreensão do OOP. Pode ser (compreensão) três vezes errada - mas é "minha" compreensão. Não excluo de modo algum que uma parte dos problemas que consegui resolver com a ajuda do OOP, possa também ser resolvida no âmbito do PP. A sabedoria da declaração de abolk é precisamente que"Se PP é suficiente para atingir o objectivo - que assim seja".Se é mais claro e mais simples para alguém usar o OOP - que assim seja". Acrescentei uma adição ao meu posto.
 
Yedelkin:
Sou a favor de todos os que vivem juntos em entendimento mútuo sempre que possível. Quanto às minhas mensagens, descrevi exclusivamente a minha compreensão do OOP. Pode (compreensão) estar três vezes errada - mas é "minha" compreensão. Não excluo de modo algum que uma parte dos problemas que consegui resolver com a ajuda do OOP, possa também ser resolvida no âmbito do PP. A sabedoria da declaração de abolk é precisamente que"Se PP é suficiente para atingir o objectivo - que assim seja".Se é mais fácil e mais claro para alguém usar o OOP - que assim seja".
Concordo. E para lutar no clima por esta ou aquela preferência, é melhor organizar concursos-competições entre utilizadores do fórum. Existe uma tal tarefa ...: que abordagem ganhará exactamente em termos de desempenho, consumo de memória, tamanho do código, portabilidade ...?