Programação OOP vs procedimento - página 34

 
Andrei:

Esse é o ponto - se você isolar tudo de tudo, será muitas vezes mais difícil lidar com tal código, sem mencionar a impossibilidade de depurar adequadamente o código quando você precisar conhecer os valores atuais de todas as variáveis necessárias...

Se você escreve uma classe, que usa a interface do processador de comércio - você não deve conhecer as variáveis atuais dentro desta interface. Depurar a parte REMOTE.

Se você precisar depurar o próprio processador de comércio - novamente, você deve depurá-lo, e dentro desta classe você não deve conhecer nenhuma variável, digamos, do gerador de sinais de entrada.

Essa é a essência do encapsulamento - em cada lugar trabalhamos apenas com o que precisamos e não interferimos com outros lugares.

 
Andrei:
Não se trata do nível baixo, trata-se da lógica do que está fluindo ali e do que está se transformando em cada momento possível, inclusive conhecendo todas as variáveis internas... Sem entender toda essa lógica redundante, o significado de usar esse código para um não-autor desaparece completamente...

Hi...

Você entende muito sobre como o Metatrader funciona? Você conhece alguma das variáveis da MT? Mas isso não o impede de usá-lo.

Isto é o que você deve fazer dentro do seu programa. Há vários blocos - eles interagem usando interfaces pré-definidas e não interferem uns com os outros.

 
George Merts:

Se você escreve uma classe, que usa a interface do processador de comércio - você não deve conhecer as variáveis atuais dentro desta interface. Depurar a parte REMOTE.

Se você precisar depurar o próprio processador de comércio - novamente, você deve depurá-lo, e dentro desta classe - você não deve conhecer nenhuma variável, digamos, do gerador de sinais de entrada.

Essa é a essência do encapsulamento - em cada lugar em particular trabalhamos apenas com o que precisamos e não interferimos com outros lugares.

Se você já escreveu um algoritmo computacional ligeiramente complexo, você deve ter notado que há sempre muitas variáveis, que precisam ser processadas várias vezes em diferentes lugares e ser capazes de controlar seus valores em diferentes partes do programa, a qualquer momento... Como você pode acrescentar a esta situação o encapsulamento de todo o conteúdo interno do objeto do mundo externo não está claro....
 
George Merts:

Hi...

Você entende muito sobre como o Metatrader funciona? Você conhece alguma das variáveis da MT? Mas isso não o impede de usá-lo.

Você deve fazer isso dentro do seu programa. Há vários blocos - eles interagem usando interfaces pré-definidas, e não interferem uns com os outros.

Tenha cuidado, não estamos falando de variáveis MT internas, estamos falando de variáveis de objeto internas, que você isolou, impedindo a possibilidade de ler seus valores enquanto depura e escreve código...
 
Andrei:
Tenha cuidado, não estamos falando de variáveis de MT internas, estamos falando de variáveis de objeto internas que você isolou, impedindo a possibilidade de ler seus valores enquanto depura e escreve código...

Se variáveis de objetos internos são necessárias em outro lugar, não são mais variáveis de objetos internos, você tem que pensar na lógica de construção desse objeto (o mais provável é dividi-lo em objetos menores novamente). Como último recurso, se for realmente necessário e não houver outra forma, um método Get-method de acesso público é feito na interface.

 
George Merts:
Andrei é ainda mais clínico que Peter ou Sansanych, você está perdendo seu tempo
 
Andrei:
Se você já escreveu um algoritmo computacional ligeiramente complexo, você deve ter visto que há sempre muitas variáveis, que você precisa lidar várias vezes em diferentes lugares e ser capaz de controlar seus valores em diferentes partes do programa, a qualquer momento... Como você pode acrescentar a esta situação o encapsulamento de todo o conteúdo interno do objeto do mundo externo não está claro....

tal coisa mostra que foi você quem, infelizmente, não escreveu quase nada :-(

Uma bagunça tão grande no sistema!

 
Ihor Herasko:

Se variáveis de objeto internas são necessárias em outro lugar, elas não são mais variáveis de objeto internas. Como último recurso, se for realmente necessário e não houver outra forma, um método Get-method acessível ao público é feito na interface.

Sim... você não pode deixar de se perguntar o que está nele :) A idéia é ter uma linguagem de programação adequada, para facilitar a depuração e a escrita de códigos com o mínimo de gestos, e aqui temos uma situação completamente oposta...

 
Maxim Kuznetsov:

tal coisa mostra que foi você quem, infelizmente, não escreveu quase nada :-(

uma tal confusão no sistema!

Se você pudesse ser menos emotivo e reflexivo e mais específico em sua discussão, você não valeria muito. :)
 
Andrei:
Se você já escreveu um algoritmo computacional ligeiramente complexo, você deve ter notado que há sempre muitas variáveis que devem ser processadas várias vezes em diferentes lugares e você deve ser capaz de controlar seus valores em diferentes partes do programa, a qualquer momento... Como você pode acrescentar a esta situação o encapsulamento de todo o conteúdo interno de um objeto do mundo externo não está claro....

Olá.

Se um bloco requer dados de outro bloco - uma interface virtual apropriada é declarada para fornecer esta capacidade. Aqui, acima, a funcionalidade do processador de comércio - é necessária em diferentes partes do programa, no gerador de entradas, no controlador de reboque e saída, no controlador de paradas de comércio. Cada um desses blocos de programa - pode se referir ao objeto Expert Advisor, e obter a interface do processador de comércio. Ao mesmo tempo - ninguém tem acesso direto a este processador - somente através de uma interface pré-definida.

É o mesmo em outros lugares - se alguns dados forem necessários - então este bloco deve fornecer a interface apropriada.

A questão é que qualquer ponto do programa tem acesso apenas às variáveis de que necessita, e não tem acesso a quaisquer outras variáveis.