Uma pergunta para os especialistas do OOP. - página 5

 
Artyom Trishkin:
Todas as listas já estão equipadas com uma busca binária. Isto não significa passar pelas listas uma a uma, mas sim filtrar pela propriedade pesquisada. Como resultado, obtemos o índice do item que estamos procurando.
Estas listas estão anexadas a qualquer coisa dentro do OOP? Ou seja, que "carga" eles transportam com eles? Classes, construtores, interfaces...? Eles estão integrados ao ambiente de classe, não estão?
 
Nikolai Semko:
Quando um objeto de classe é criado, além de alocar memória para todas as propriedades (variáveis) da classe, um dos construtores é iniciado (pode haver mais de um). Os construtores podem ser não paramétricos (padrão), paramétricos (quando alguns parâmetros são especificados ao criar uma instância de uma classe, ou um construtor de cópia, quando outra instância da classe é especificada como um parâmetro de uma instância da classe.
Estou vendo, obrigado, Nikolay. Eu estarei ciente disso.
 
Реter Konow:

Eu já resolvi esta tarefa publicamente. A idéia era criar uma tabela com todos os símbolos e todos os períodos de tempo e fazer um loop através dela, fixando os eventos de uma nova barra. Após a primeira chamada de qualquer função deste evento, sua bandeira é apagada da mesa. Não posso julgar como é muito mais complicado do que no OOP. Mas, na verdade, uma solução bastante simples e conveniente.

como você escreveu acima, tudo é relativo.... usando o último tiro do clipe...

você já viua biblioteca padrão de entrega da MT? é tudo estilo OOP, há 2 opções aqui ou os programadores Metakvot são profissionais e usam estilos compreensíveis ou... Sua versão ;)

 
Igor Makanu:

como você escreveu acima, tudo é relativo.... usando o último tiro do clipe...

você já viua biblioteca padrão de entrega da MT? é tudo estilo OOP, há 2 opções aqui ou os programadores Metakvot são profissionais e usam estilos compreensíveis ou... Sua versão ;)

Eu ainda não sou bem versado em OOP. Eles me falam de listas, mas eu não sei com o que estão "comendo". Como são anunciados, como são acessados, como são mudados e assim por diante... Para mim, uma lista é apenas uma matriz dinâmica sem qualquer sintaxe adicional. Um objeto é um conjunto de propriedades em uma matriz. E no OOP - Objeto é uma classe inteira. Herança - ligação de objetos. Acesso às propriedades do objeto através das referências nomeadas. Portanto, tudo no meu caso é muito mais simples e, portanto, tenho dificuldade em comparar características e eficiência. Preciso ir mais fundo nisso.

Mas uma coisa eu aprendi. Você não pode entender e usar qualquer entidade do conceito OOP sem entender todo o OOP e mudar para ele completamente. Ou é OOP ou o que você quiser. Só usar um de seus mecanismos práticos provavelmente não vai funcionar.

 
Реter Konow:

A simples utilização de um de seus mecanismos práticos provavelmente não funcionará.

O OOP pode coexistir com o estilo de procedimento sem problemas, mas as funções devem ser blocos de código completamente separados e independentes, ou seja, tudo o que a função utiliza deve estar nele ou ser passado como parâmetro para ele

em geral, como eles escrevem no Wiki, que o OOP é uma extensão do estilo de procedimento

Retag Konow:

Mas uma coisa eu entendi. Você não pode entender e usar qualquer entidade do conceito do OOP sem entender todo o OOP e sem ir até ele completamente

você pode, eu dei um exemplo, e no fórum 90% das fontes no estilo OOP são invólucros em torno do estilo processual - sem herança, sem abstrações, sem ..... nada, apenas encapsulamento, mas de qualquer forma é pelo menos conveniente - é conveniente ter um código completamente transferível para outra tarefa - afinal de contas tudo dentro de uma classe? ;)

 
Igor Makanu:

com estilo de procedimento OOP sem problemas, mas as funções devem ser blocos de código completamente separados e independentes, ou seja, tudo que uma função usa deve estar nela ou ser passado como parâmetro para ela

em geral, como eles escrevem no Wiki, o OOP é uma extensão do estilo de procedimento

você pode, eu dei um exemplo, e no fórum 90% das fontes no estilo OOP são envoltas em estilo de procedimento - sem herança, sem abstrações, sem ..... nada, apenas encapsulamento, mas ainda assim é pelo menos conveniente - é conveniente ter um bloco de código totalmente portátil para outra tarefa - tudo dentro de uma classe, certo? ;)

Sim, a portabilidade do código é uma grande vantagem do OOP. No meu caso, apenas funções individuais são portáteis (e apenas raramente), mas quando construo um grande mecanismo, nada é portátil. Assim como os órgãos humanos não são transferíveis (sem intervenção profissional). Meus mecanismos são mais como "organismos" no sentido de que eles estão divididos em grandes blocos, cada um executando uma série de tarefas. Portanto, a portabilidade é quase inexistente. No entanto, estes blocos são muito fáceis de ampliar sua funcionalidade. Você "adiciona" com apenas algumas linhas, e voilá! - Os blocos executam uma camada inteira de novo trabalho para o qual você tem que escrever muitas funções separadas. Tudo em resumo, tem suas vantagens. Bem, o escopo global é uma ferramenta incrivelmente poderosa. O material com o qual os blocos trabalham está absolutamente disponível para eles e não há necessidade de transferir nada. Tudo o que é necessário para o trabalho já está lá. Em suma, as abordagens são diferentes e cada uma tem suas próprias vantagens.

 
Реter Konow:

Eu ainda não sei muito sobre o OOP. Eles me falam de listas e eu não sei com o que eles são "comidos". Como são declarados, como são acessados, como são mudados e assim por diante... Para mim, uma lista é apenas uma matriz dinâmica sem qualquer sintaxe adicional. Um objeto é um conjunto de propriedades em uma matriz. E no OOP - Objeto é uma classe inteira. Herança - ligação de objetos. Acesso às propriedades do objeto através das referências nomeadas. Portanto, tudo no meu caso é muito mais simples e, portanto, tenho dificuldade em comparar características e eficiência. Tenho que mergulhar mais fundo.

Mas uma coisa eu aprendi. Você não pode entender e usar qualquer entidade do conceito OOP sem entender todo o OOP e sem ir até ele completamente. Ou é OOP ou o que você quiser. Só usar um de seus mecanismos práticos provavelmente não vai funcionar.

Peter, você só tem que experimentar. E eu recomendaria experimentá-lo exatamente nas estruturas da lista, porque lá você pode ver todas as vantagens do OOP nas três direções - herança, encapsulamento e polimorfismo.

Devido à herança, você tem uma única interface (um conjunto de funções virtuais) para trabalhar com objetos dentro de uma lista. Os objetos podem ser simples ou complexos, herdados da base.

Pelo polimorfismo - você pode trabalhar com objetos fundamentalmente diferentes com esta interface única.

Devido ao encapsulamento - você tem SOMENTE esta interface, e não tem acesso a nenhum detalhe de implementação - conseqüentemente, você não pode estragar algo. Além disso, você sabe exatamente, não apenas como funcionam os objetos que estão agora, mas como os objetos que ainda não estão escritos irão interagir com seu código.

 
Реter Konow:
Estas listas estão anexadas a qualquer coisa dentro do OOP? Quero dizer, que "carga" eles carregam com eles? Classes, construtores, interfaces...? Eles estão integrados ao ambiente de classe, não estão?
Essencialmente - uma lista é muito próxima de uma matriz. Você pode declará-la como uma variável do tipo lista ou criar uma nova através do novo operador. Mas no caso de novos, a lista não é controlada pelo subsistema de terminais e deve ser sempre apagada quando o trabalho estiver concluído - apagar. Mas se tal lista for adicionada a outra lista como um objeto, ela não precisa ser monitorada.
 
Реter Konow:

Bem, o escopo global é uma ferramenta incrivelmente poderosa. O material com o qual os blocos trabalham está absolutamente disponível para eles e não há necessidade de transferir nada. Tudo o que você precisa para trabalhar já está lá.

quando se trata do escopo global de variáveis a serem usadas como parâmetros para funções ou seções de código, então.... imho, esta é a melhor maneira de obter um código completamente intransportável com a possibilidade de obter bugs escondidos que são impossíveis de detectar posteriormente

SZZ: Eu modifiquei esses códigos para MT4 EAs por muitas vezes, inicialmente renomeei variáveis declaradas globalmente - depois fiz alterações quando vi erros de compilação, mas da última vez que o fiz corretamente - adicionei novos parâmetros para as assinaturas de funções e depois removi variáveis declaradas globalmente, porque se você conseguiu modificar esse código miserável uma vez, você terá que fazer tudo de novo? - infelizmente sou preguiçoso, mas razoavelmente preguiçoso )))))

 
Igor Makanu:

quando se trata do escopo global de variáveis a serem usadas como parâmetros de funções ou seções de código, então.... imho, esta é a melhor maneira de obter um código completamente intransportável com a possibilidade de obter bugs escondidos que são impossíveis de detectar mais tarde

SZZ: Eu modifiquei esses códigos para MT4 EAs por muitas vezes, inicialmente renomeei variáveis declaradas globalmente - depois fiz alterações quando vi erros de compilação, mas da última vez que o fiz corretamente - adicionei novos parâmetros para as assinaturas de funções e depois removi variáveis declaradas globalmente, porque se você conseguiu modificar esse código miserável uma vez, você terá que fazer tudo de novo? - infelizmente eu sou preguiçoso, mas razoavelmente preguiçoso )))))

O código não é portátil, então é isso que o torna especial. Não se destina a ser portátil. Tem outro propósito. Bem, o escopo global das variáveis é uma ferramenta poderosa para trabalhar com mecanismos complexos. Você só precisa saber como utilizá-lo. Quando as pessoas me falam de erros e bugs ocultos, fico confuso. Eu nunca tive nenhum bug relacionado à visibilidade variável global. Em uma palavra, de modo algum.