Perguntas sobre OOP em MQL5 - página 51

 
Sergey Dzyublik:

1. Acontece que a estrutura de dados em árvore é toda do maligno.
2. pobre C++ onde classe === estrutura privada, o que fazer, provavelmente deveríamos abrir mão de estruturas e classes.
3. e isso mesmo: sem padrões, sem ordenação por ponteiros, sem economia de memória, especialmente para objetos grandes...
4. Não devemos nos esquecer de proibir o uso de interfaces e funções de modelo, caso contrário você não entenderá com que objeto você está trabalhando - que horror...

1. Não, por que não? Se você estiver falando de nós em árvore (ou lista vinculada) mudando seu estado, é simplesmente uma questão de organizar o acesso a esse estado. Em termos defuncionalidade de código, o usuário não deve ter acesso ao estado de um nó.Toda iteração através dos nós deve ser feita acessando a própria árvore: tree.NextNode(myNode) ou tree.Parent(myNode), não myNode.NextNode() ou myNode.Parent().

Isto é, o estado que está sendo mudado não deve estar disponível ao público.

2. olhe, eu levei a estrutura Sharpe porque é impossível levar uma referência/ponteiro para ela. Isto é, tudo está sob controle do compilador. Se não houver tal controle, é preciso prever um controle pessoal, por exemplo, através da nomeação apropriada das classes. Vamos colocar as coisas desta maneira:

classe MyClass_mut; // mutável

classe MyClass_immut; // imutável

3, 4. você está errado. Tudo pode ser implementado ) Você simplesmente não deve pensar que todos os dados do objeto são necessariamente copiados através da pilha. Em geral, caso um objeto contenha um ponteiro interno para os dados. É como um ponteiro inteligente. Somente no caso de objetos mutáveis, este ponteiro deve ser ainda mais inteligente)

 
Aleksey Mavrin:

Dmitry, eu lhe asseguro, eu também ficaria feliz em rir de você, bem eu amo este negócio) mas neste caso você exagerou, mesmo sorrindo particularmente bem.

Você está realmente confuso - um TOTAL não é igual a uma CÓPIA OBJETIVA, eu apontei isso para você.

Se não estiver claro, deixe-me explicar-lhe pelo exemplo - você tem 1000 bytes de objeto, você precisa de 200 para tirar fotos, então por que copiar 800, especialmente se você tem muitos milhões de fotos salvas.

p/s// E em geral. As pessoas não percebem que os padrões são apenas um exemplo elementar de solução de um problema TIPICAL elementar. E na verdade as tarefas não são elementares, mas mais complicadas. E para resolver problemas reais, os padrões são necessários, mas muitas vezes não em forma de livro puro, mas adaptados a uma tarefa específica, possivelmente combinados entre si, possivelmente com a adição de alguma improvisação, expressa às vezes em uma simplificação, se a tarefa permitir, ou vice versa "ponderação" da realização.

Novamente, por que você precisa de encapsulamento e interfaces - isto provavelmente não pode ser compreendido se seu QI está abaixo de Wasserman, ou se você não participou de projetos reais, quando diferentes partes do projeto são alteradas por pessoas diferentes simultaneamente, e não seguir os princípios básicos do OOPD envolve custos enormes na captura de bugs. Realmente, por que tudo isso para a estampagem de Consultores Especializados para o Mercado))

Você confunde algoritmos para resolver tarefas de programação com os chamados, e hoje em dia na moda, " padrões de design" relacionados exclusivamente ao OOP. E você confunde muitas outras coisas, e lê de forma desatenta. Um pouco antes eu escrevi - use a estrutura. Mas se você leu aquele post e eu não escrevi sobre a função de cópia de toda a classe, você teria chegado ao ponto de sermos adultos e não há necessidade de fazer trabalho extra com estruturas desnecessárias quando deveríamos fazer tudo maduramente - apenas fornecer a capacidade de copiar a classe inteira.

 
Aleksey Mavrin:

...

Mais uma vez, por que você precisa de encapsulamento e interfaces - isto provavelmente é impossível de entender se seu QI está abaixo de Wasserman, ou se você não participou de projetos reais, quando diferentes partes do projeto são alteradas por diferentes pessoas simultaneamente, e o não cumprimento dos princípios elementares do OOPD implica em enormes custos na captura de bugs. Realmente, por que tudo isso para estampar os Expert Advisors para o mercado))

.

Sergey Dzyublik:

...
4. Não posso esquecer de proibir o uso de interfaces e funções de modelo, senão você não entenderá com que objeto você está trabalhando - que horror...

Em algum momento, em algum lugar, leia o que são interfaces e por que elas são necessárias.

-

Ah, e isto... Você está discordando seriamente da capacidade de salvar todos ou alguns campos de um objeto com a função desfazer/redo? Vamos falar do Photoshop, você sabe como isso é feito.

-

E qual de vocês está todo chocolaty e me mandando um e-mail?

-

Qual é o seu problema, afinal? Eu abalei os fundamentos de sua fé nos Santos Padrões?

 
Um amador autodidata que nunca viu nada além de mql, ensinando os homens a escrever programas, é engraçado entrar e ler)
 

estava vasculhando a estante de livros aqui.

Grande achado: "Introduction to Artificial Intelligence and Expert Systems with illustrations in BASIC" 1987. Um dos capítulos "The concept of object-oriented programming".

Acredite em mim - NOTHING mudou...

 
Maxim Kuznetsov:

estava vasculhando a estante de livros aqui.

Grande achado: "Introduction to Artificial Intelligence and Expert Systems with illustrations in BASIC" 1987. Um dos capítulos "The concept of object-oriented programming".

Acredite em mim - NOTHING mudou...

Muita coisa mudou, não havia uma igreja de devotos dos Padrões de Desenho Sagrado naquela época. E o clube de vítimas do c++ também ainda não tinha sido formado por aquela época.

 
Dmitry Fedoseev:

Muita coisa mudou, não havia nenhuma igreja de devotos de Padrões de Design Sagrado naquela época.

não havia nenhuma igreja de adoradores de design de santos naquela época. isto não existe mesmo agora, você pode procurar no runet, se o número de perguntas sobre padrões no runet for muito pequeno, significa que ele não existe como uma massa, as perguntas "livro" dos estudantes não contam.

não têm nada para ler, mas é útil quando você quer escalar um projeto, em geral, a estrutura do programa é inicialmente correta

 
Dmitry Fedoseev:

Muita coisa mudou, naquela época não havia uma Igreja dos Santos Padres do Design.

" Padrões de projeto" é apenas um acordo para chamar as mesmas coisas que ocorrem freqüentemente pelos mesmos nomes. E a propósito, o termo vem da arquitetura (quando se trata de esculturas/ pontes/portais/portais).

Às vezes coisas semelhantes são resolvidas com técnicas semelhantes, nem sempre necessariamente. Mas é útil concordar sobre a similaridade das coisas e dos métodos, a fim de nos entendermos mutuamente.

Mas é claro, há aqueles que dizem "dê um falo de vidro a um tolo e ele vai quebrar a coisa e se cortar".

 
Igor Makanu:

Isto não existe mesmo agora, você pode procurar no runet, se o número de perguntas sobre padrões no runet é muito pequeno, então não existe como uma massa, as perguntas "livro" dos estudantes não contam

Não há nada para ler, mas é útil quando se quer dimensionar um projeto.

Eles não contêm nada. Quantos padrões você já estudou?

 
Dmitry Fedoseev:

Nada está embutido neles. Quantos padrões você já estudou?

O que se entende por "estudado"?

se li as descrições em vários fóruns, então tenho dezenas delas

Se aplicado em MQL, então um - a estratégia funciona, a escala, a refatoração é fácil - eu posso jogar fora todas as coisas desnecessárias para o testador fazer mais rápido, ou ir direto para uma demonstração - é geralmente conveniente e prático

Razão: