Conversando sobre a OLP no salão - página 8

 
Maxim Dmitrievsky:

Provavelmente porque eu mal entendo este código :)

Desculpe, sou um programador amador... Só estou familiarizado com o OOP em um nível básico

Bem, você não é o único que não entende, você não é o único... Este estilo - para enfiar o que não pode ser enfiado em uma macro - tem suas vantagens e desvantagens. Atéonde eu percebi, meu colegafxsaber mostra apenas vantagens (flexibilidade, cross-platform, etc.). E o fato de você não poder verificar tal código no depurador, o que é isso? Bem, a legibilidade de tal estilo é bastante questionável. Mas, como dizem, o mestre é o mestre.

 
Комбинатор:
Em C++, a classe e a estrutura são as mesmas, apenas alguns padrões são diferentes.

Sim, como se leva um ponteiro para uma estrutura?

 
Vasiliy Sokolov:

Portanto, você tem que aprender com os exemplos certos. E não há nenhum em SB. Tomemos como exemplo o CObject - ele não fornece controle de tipo, não fornece trabalho em nível de interface com objetos, mas contém métodos sem sentido como Save() e Load(), que nunca são sobrepostos na prática. Os indicadores m_prev e m_next são usados em uma única classe CList, mas estão presentes como lastro para todas as suas classes descendentes. O mais útil é o método Comparer(). Na verdade, ela é substituída na maioria das vezes. Mas da maneira normal Comparer() é uma interface, seria melhor defini-la não em um CObjeto, mas como uma classe separada.

Por favor, explique sobre o controle, eu não entendo. Que tipo de objetos? Em geral, esta deve ser uma classe fictícia, sem campos ou métodos. Seu único objetivo é fornecer um ancestral comum para outras classes. É um grande erro que os desenvolvedores a tenham enchido de lixo.

Não deve haver nenhuma comparação. Deveria ser uma aula fictícia.

 
Alexey Volchanskiy:

Explique sobre controle, eu não entendo. Com que objetos? Deve ser uma classe fictícia, sem campos ou métodos. Seu único objetivo é fornecer um ancestral comum para outras classes. É um grande erro que os desenvolvedores a tenham enchido de lixo.

Não deve haver nenhuma comparação. Deveria ser uma aula fictícia.

Isto não é SmallTalk, toda a prática (e também a teoria) mostrou que a saída de uma árvore de objetos de Adão é um mal malvado. E ST pode fazer isso, ele está em seu próprio suco (sua própria máquina virtual).

a julgar pelo calor, espere uma tentativa de lançamento até 8 de março ? :-) Será um festival de mulheres, é claro, mas será um pecado não beber.

 
Maxim Kuznetsov:

Isto não é SmallTalk, toda a prática (e a teoria também) mostrou que derivar a árvore de objetos de Adão é um mal cruel. E ST tem permissão para fazer isso, ele está em seu próprio suco (sua máquina virtual).

A julgar pelo entusiasmo, até 8 de março podemos esperar o try-catch-throw ?? :-) É claro que será o dia da mulher, mas será um pecado não beber.


Não, não haverá férias, disse Renat - sem exceções. Vejahttps://www.mql5.com/ru/forum/168361 , alguém falou sobre isso. Eu mesmo me perguntei se existem planos para as exepções ou o quê? A resposta foi, infelizmente, não.

Mas no compilador temos uma caixa de seleção importante - verifique os divisores ))))). Aguardando a caixa de seleção "check array bounds..." até 8 de março. E então veremos mais 25 páginas com caixas de seleção similares. Nós não sabemos como fazer um trecho, não é mesmo?

SZY: Visto na classe base Objeto em C#, também mínimo. Foto de msdn


Почему в MQL5 нет исключений?
Почему в MQL5 нет исключений?
  • 2017.01.29
  • www.mql5.com
Не нужны, надо все условия руками проверять, по старинке оно надежнее Нужны, почему нет - не знаю А что это такое? Хочу посмотреть...
 
Dennis Kirichenko:

Bem, você não é o único que não entende, você não é o único... Este estilo - para enfiar o que não se pode enfiar em Macros - tem suas vantagens e desvantagens. Atéonde percebi, meu colegafxsaber demonstra apenas vantagens (flexibilidade, cross-platform, etc.). E o fato de você não poder verificar tal código no depurador, o que é isso? Bem, a legibilidade de tal estilo é bastante questionável. Mas como se diz, o mestre é o chefe.

Por que atribuir a um exemplo concreto o que ele não contém?

Maxim Dmitrievsky:

Que modelos podem ser usados para aprender a programar exatamente da mesma maneira? :) parece muito bonito.

Eu sou autodidata, é por isso que não o sigo em nenhum lugar. Eu tenho uma abordagem Tupolev: "Somente aviões bonitos voam bem"!

 
Maxim Kuznetsov:

Isto não é SmallTalk, toda a prática (e teoria também) mostrou que derivar a árvore de objetos de Adão é um mal cruel. E ST pode fazer isso, ele está em seu próprio suco (sua própria máquina virtual).

A julgar pelo calor, estamos esperando o try-catch-throw até 8 de março ? :-) É claro que vai ser feriado da mulher, mas é um pecado não tomar uma bebida.


O objetivo de uma classe de base vazia é que podemos escrever uma coisa dessas. Digo-lhe desde já, o exemplo não traz nenhuma utilidade, eu o inventei na mosca. A questão é que podemos lançar qualquer classe derivada a um CObjeto*.

CObject* objarr[12];

void OnStart()
{
    objarr[0] = new CAccountInfo;
    // еще что-то подобное, кладем в массив указатели на объекты абсолютно разных классов, но с одним предков
    objarr[11] = new CDealInfo;
    // обращаемся и работаем
    CAccountInfo * ai = (CAccountInfo*)objarr[0];
    //
    
    for(int n = 0; n < 12; n++)
        if(CheckPointer(objarr[n]) == POINTER_DYNAMIC)
            delete objarr[n];
       
}

*

 
Alexey Volchanskiy:

Sim, como se leva um ponteiro para uma estrutura?

Sinceramente não entendo a pergunta, mas de qualquer forma é o mesmo que para a classe
 
Комбинатор:
Sinceramente não entendo a pergunta, mas em todo caso é o mesmo que para a classe

Lamento muito, no contexto de que linguagem você está tirando esta conclusão? :-)



 
Комбинатор:
Sinceramente não entendo a pergunta, mas de qualquer forma é o mesmo que para a classe

class C {};
struct S {};

void OnStart()
{
    C *_c = new C; // так можно
    S *_s = new S; // указатели на структуру не допускаются 
}

Razão: