Uma pergunta para os especialistas do OOP.

 

Como você faz um loop OOP sobre os objetos e suas propriedades?

Por exemplo, eu executo um loop da seguinte forma

//Цикл по объектам в поиске нужного значения конкретного свойства.

for(int a1 = 0; a1 < obj_total; a1++)
  {
   if(G_CORE[a1][_X_SIZE] == THIS_SIZE)
     {
      G_CORE[a1][_this_state_color] = clrWhite;
      Redraw(a1);
     } 
  }

//Цикл по свойствам в поиске неверного значения

for(int a1 = 0; a1 < prop_total; a1++)
  {
   if(G_CORE[ELEMENT][a1] > Max_value)
     {
      G_CORE[ELEMENT][a1] = Max_value;
      Redraw(ELEMENT);
     } 
  }
 

Outra coisa interessante é como criar uma hierarquia de objetos ou grupos. Por exemplo, existem várias categorias, cada categoria contém um grupo com n número de objetos. Quais métodos de construção de hierarquias são sugeridos pelo conceito OOP?

A implementação de uma hierarquia deve proporcionar transições fáceis entre suas partes e níveis no loop. Se você construir uma hierarquia dentro de uma matriz, você ficará com muito espaço vazio. Se for construído a partir de um complexo de matrizes, não permitirá a livre circulação através dos elos. O que o OOP sugere?

 
Реter Konow:

Como você faz um loop OOP sobre os objetos e suas propriedades?

Por exemplo, eu executo um loop da seguinte forma

CObj obj[];
...
for (int i=0;i<ArraySize(obj);obj[i++].CheckSomething(param));
É mais ou menos assim. E dentro da classe, no método CheckSomething(), toda a lógica é implementada.
 
Vladimir Simakov:
É mais ou menos assim. E dentro da classe, no método CheckSomething(), toda a lógica é implementada.

Obrigado. Primeiro montamos a obj[] array de objetos e depois fazemos um loop?

E quanto à hierarquia? E estamos falando de hierarquia estática. Constante e imutável.

 
Реter Konow:

Obrigado. Primeiro montamos a obj[] array de objetos e depois fazemos um loop?

E quanto à hierarquia? Estamos falando de uma hierarquia estática. Constante e imutável.

class Class1{
...
};

class Class2{
...
};

class Class3{
   Class1 class1;
   Class2 class2;
...
};
 
Vladimir Simakov:
Então criamos uma hierarquia de classes e depois coletamos todos os seus objetos em uma classe separada e fazemos um loop através deles?
 
Реter Konow:
Então criamos uma hierarquia de classes e depois coletamos todos os seus objetos em uma classe separada e fazemos um loop através deles?

Depende do que você precisa, mas, em princípio, desta maneira. Você concorda que é muito mais elegante do que suas matrizes. E dada minha forte suspeita de que suasmatrizes multidimensionais não são de fato matrizes, já que elas não podem ser passadas para uma dll, a sobrecarga das chamadas de função pode muito bem ser a mesma.

 
Реter Konow:

Como você faz loop over dos objetos e suas propriedades no OOP?

A etiqueta é Konow:
e através deles fazer um loop através de todos os links?

Use terminologia comum, você não só pode enganar a outra pessoa com sua pergunta, mas você terá certeza de que sua pergunta será respondida

OOP Wiki - termos aqui.

para sua informação, você pode fazer conjuntos de instâncias de objetos (veja acima) ou olhar as fontes WndContainer.mqh e ArrayObj.mqh , eles são usados para criar painéis gráficos baseados no CPanelDialog (veja ndicators\Exemplos\Panels\SimplePanel para um exemplo pronto), mas eles trabalham com apontadores e listas

 
Vladimir Simakov:

Depende do que você procura, mas em princípio é assim que é. Você concorda que é muito mais elegante do que suas matrizes. E dada minha forte suspeita de que suas matrizes multidimensionais não são de fato matrizes, já que elas não podem ser passadas para uma dll, a sobrecarga das chamadas de função pode muito bem ser a mesma.

Bem, talvez com mais elegância, não vou discutir. Estou muito preocupado com a praticidade, a conveniência, a simplicidade e a conveniência, e olho para qualquer sintaxe como "o inimigo do povo", porque requer atenção, análise, gera erros e dificulta a percepção. É por isso que tento usar o mais simples e até mesmo construções de código primitivas possíveis. O principal é que eles devem ser fáceis de ler e eficazes.

É claro, há um obstáculo na hierarquia. Se o fizéssemos em uma matriz, os loops proporcionariam mais oportunidades para analisar links, grupos, subgrupos, sub-subgrupos, etc... Mas a memória será utilizada de forma ineficiente. Se utilizarmos classes, parece ser a solução ideal. Mas é para uma hierarquia "morta". Para uma imagem. Mas se precisarmos criar um motor que funcione com ele - tenho medo que aqui todo esse inferno sintático se solte)).

 
Реter Konow:

Obrigado. Primeiro montamos a obj[] array de objetos e depois fazemos um loop?

E quanto à hierarquia? Estamos falando de uma hierarquia estática. Constante e imutável.

Explique o que você quer dizer com "...É uma hierarquia estática. Constante e imutável"?
 
Igor Makanu:

Use terminologia comum, você pode não só confundir a outra pessoa com sua pergunta, mas estará confiante de que sua pergunta foi respondida.

OOP Wiki - termos aqui.

para um determinado assunto, você pode fazer conjuntos de instâncias de objetos (veja as respostas acima) ou olhar para as fontes WndContainer.mqh e ArrayObj.mqh , eles são usados para criar painéis gráficos baseados no CPanelDialog (você pode encontrar um exemplo pronto na pasta ndicators\Exemplos\Panels\SimplePanel ), mas eles trabalham com apontadores e listas

No OOP "objeto" significa uma referência a uma classe na qual seus campos (propriedades) são declarados. Por "objeto" quero dizer um conjunto de propriedades numeradas, cada uma das quais é uma célula em uma matriz. Essa é a diferença.

As perguntas não estão relacionadas com o tema das interfaces gráficas. Há muito tempo eu tenho contornado bibliotecas gráficas e não tenho nada para procurar lá. Mas, agora estou interessado na IA, o que levanta novos desafios e questões.