Perguntas sobre OOP em MQL5 - página 56

 
Aleksey Mavrin:

Você já me disse tantas vezes que sou um tolo e não entendo nada, que estou orgulhoso de minha compostura, que não lhe enviei uma merecida foda)

Basicamente - uma classe aninhada torna os métodos públicos para campos privados opcionais, essa é a violação de encapsulamento sobre a qual você está escrevendo. Algum outro argumento?

Você demonstra sua estupidez com tanta firmeza que eu prefiro enviá-lo para lá merecidamente.

Uma classe aninhada não faz o que você escreve sobre ela. E a tarefa do padrão Guardian pode ser resolvida sem uma classe aninhada e sem métodos públicos desnecessários.

Deixe-me lembrá-lo: aqui está um exemplo com uma classe aninhada e métodos públicos.

 
Dmitry Fedoseev:

Você demonstra sua estupidez com tanta firmeza que eu prefiro mandá-lo para lá merecidamente.

Uma classe aninhada não faz o que você escreve sobre ela. E o problema do padrão Guardian pode ser resolvido sem uma classe aninhada e sem métodos públicos desnecessários.

Vamos descobrir quem vai no final))

O que não faz uma classe aninhada?

Você escreveu que "o encapsulamento está quebrado porque os métodos públicos são criados para campos privados".

Uma classe aninhada tem acesso a campos privados sem exigir a criação de métodos públicos.

s.s. Você é um freqüente aqui, a julgar pelo ranking. Mas você tem que aprender a se comunicar e dialogar. Mas você não precisa disso em sua vida.

 
Aleksey Mavrin:

Vamos trabalhar sobre quem vai no final).

O que a classe aninhada não faz?

Você escreveu que "o encapsulamento está quebrado porque os métodos públicos são criados para campos privados".

Uma classe aninhada tem acesso a campos privados sem exigir a criação de métodos públicos.

s.s. Você é um freqüente aqui, a julgar pelo ranking. Mas você tem que aprender como se comunicar e dialogar. Mas você não precisa disso na vida.

Deixe-me lembrar: aqui está um exemplo com uma classe aninhada e métodos públicos (ou seja, a classe aninhada não ajudou em nada a se livrar da necessidade de criar métodos públicos).

A classe aninhada é apenas uma questão de visibilidade de classe, não de visibilidade de objeto. A classe aninhada, meramente, não permite criar um objeto desta classe, fora da classe na qual ela é descrita. Portanto, você terá que ir.

 
Aleksey Mavrin:

Exatamente - a estrutura certa. Para este fim, vale a pena considerar todas as variantes possíveis desta mesma estrutura, analisar seus prós e contras em uma determinada tarefa (levando em conta as exigências de extensibilidade e manutenção, etc.) e escolher a melhor.

E os padrões notórios em si (sejam eles quais forem exatamente destinados a ser) não são sequer uma variante da estrutura aqui, mas apenas um ponto de referência para o cérebro. É como "Se o problema se encaixa na descrição do problema do padrão X, significa que pode ser resolvido aplicando o padrão X", mas você também pode resolvê-lo de outras formas.

E em geral, esses 27 padrões básicos nasceram como uma espécie de dica para programadores sobre problemas típicos como resolvê-los seguindo os princípios do OOP. Se não há tarefa para seguir os princípios, como Dmitry tem com as estruturas, não são necessários padrões.

Obrigado, bom post

Você é diferente do resto do painel ;)

 
Dmitry Fedoseev:

Deixe-me lembrá-lo: aqui está um exemplo com uma classe aninhada e métodos públicos (ou seja, a classe aninhada não ajudou em nada a se livrar da necessidade de criar métodos públicos).

Uma classe aninhada é apenas uma questão de visibilidade de classe, não de visibilidade de objeto. A classe aninhada, meramente , não permite criar um objeto desta classe, fora da classe na qual ela é descrita. Portanto, você tem que ir.

Não )) estupidez )) Uma classe aninhada tem acesso a TODOS os campos PRIVADOS da classe em que está aninhada. (Você não sabe disso? Bem, não há nada para se falar.

E isso sem contar o absurdo que você escreveu de que o objeto inteiro deve ser copiado para o Tiro...)) Acontece que ... não se importará se você não voltar logo))

 
Igor Makanu:

Obrigado, bom post.

Você é diferente do resto da discussão ;)

Igor, obrigado também, e em uma palavra gentil) e que você crie tópicos interessantes para uma discussão construtiva mútua ;)

 
Aleksey Mavrin:

Não )) é um absurdo )) Uma classe aninhada tem acesso a TODOS os campos PRIVADOS da classe em que está aninhada. (Você não sabe disso? Bem, não há nada para falar.

E isso sem contar o absurdo que você escreveu de que o objeto inteiro deve ser copiado para o Tiro...)) Acontece que ... não se importará se você não voltar logo))

E o que você chama de uma classe aninhada?

Eu não escrevi nada sobre o Snapshot aqui.

 
class C1{
   protected:
      int x;
      class C2{
         protected:
         public:
         C2(){
            x=1;
         }
      };      
   public:
};

Onde está o acesso ao x a partir do C2?

Mais uma vez, uma classe aninhada é apenas uma questão de visibilidade de classe para criar um objeto. Um objeto da classe C2 só pode ser criado dentro da classe C1. É isso aí. Essa é a única diferença de escrever um tipo:

class C1{
   protected:
      int x;
   public:
};

class C2{
   protected:
   public:
   C2(){
      x=1;
   }
}; 


Mas certamente você chama outra coisa de uma classe aninhada? Diga-nos o que.

 
ahah )
 
TheXpert:
ahah )

Você também não sabia?