Parler de l'OLP dans le salon - page 8

 
Maxim Dmitrievsky:

Probablement parce que je comprends à peine ce code :)

Désolé, je suis un programmeur amateur... Je ne suis familier avec la POO qu'à un niveau de base.

Eh bien, vous n'êtes pas le seul à ne pas le comprendre, vous n'êtes pas le seul... Ce style - faire rentrer ce qui ne peut l'être dans une macro - a ses avantages et ses inconvénients. D'après ce quej'ai pu constater, mon collèguefxsaber ne présente que des avantages (flexibilité, multiplateforme, etc.). Et le fait que vous ne puissiez pas vérifier un tel code dans le débogueur, qu'est-ce que c'est ? La lisibilité d'un tel style est plutôt douteuse. Mais, comme on dit, le maître est le maître...

 
Комбинатор:
En C++, la classe et la structure sont les mêmes, seuls certains paramètres par défaut sont différents.

yep, comment prendre un pointeur sur une structure ?

 
Vasiliy Sokolov:

Il faut donc apprendre à partir des bons exemples. Et il n'y en a pas à SB. Prenez CObject par exemple : il ne fournit pas de contrôle de type, il ne fournit pas de travail au niveau de l'interface avec les objets, mais il contient des méthodes insignifiantes comme Save() et Load(), qui ne sont jamais surchargées en pratique. Les pointeurs m_prev et m_next sont utilisés dans une seule classe CList, mais sont présents comme ballast pour toutes ses classes descendantes. La plus utile est la méthode Comparer(). En fait, elle est le plus souvent remplacée. Mais comme Comparer() est une interface, il serait préférable de la définir non pas dans un CObject, mais dans une classe séparée.

Veuillez expliquer le contrôle, je ne comprends pas. Quel genre d'objets ? En général, il doit s'agir d'une classe fictive sans champs ni méthodes. Son seul but est de fournir un ancêtre commun aux autres classes. C'est une grosse erreur que les développeurs l'aient rempli de déchets.

Il ne devrait pas y avoir de comparaison. Ce devrait être une classe factice.

 
Alexey Volchanskiy:

Expliquez-moi le contrôle, je ne comprends pas. Avec quels objets ? Il doit s'agir d'une classe factice, sans champs ni méthodes. Son seul but est de fournir un ancêtre commun aux autres classes. C'est une grosse erreur que les développeurs l'aient rempli de déchets.

Il ne devrait pas y avoir de comparaison. Ce devrait être une classe factice.

Il ne s'agit pas de SmallTalk, toute la pratique (et la théorie aussi) a montré que la sortie d'un arbre objet d'Adam est un mal méchant. Et ST est autorisé à le faire, il est dans son propre jus (sa propre machine virtuelle).

à en juger par la chaleur, il faut s'attendre à un essai, une prise et un lancer d'ici le 8 mars ? :-) Ce sera une fête de femmes, bien sûr, mais ce sera un péché de ne pas boire.

 
Maxim Kuznetsov:

Il ne s'agit pas d'un SmallTalk, toute la pratique (et la théorie aussi) a montré que faire dériver l'arbre objet d'Adam est un mal cruel. Et ST est autorisé à le faire, il est dans son propre jus (sa machine virtuelle).

A en juger par l'enthousiasme, on peut s'attendre, d'ici le 8 mars, à des essais, des prises et des lancers... :-) Bien sûr, ce sera la journée des femmes mais ce sera un péché de ne pas boire.


Non, il n'y aura pas de vacances, a dit Renat - pas d'exceptions. Voirhttps://www.mql5.com/ru/forum/168361 , quelqu'un en a parlé. Je me suis demandé moi-même s'il y a des projets pour les exepts ou quoi ? La réponse était hélas non.

Mais dans le compilateur, nous avons une case à cocher importante - vérifier les diviseurs ))))). En attente de la case à cocher "check array bounds..." pour le 8 mars. Et puis nous verrons 25 autres pages avec des cases à cocher similaires. Nous ne savons pas comment faire un extrait, n'est-ce pas ?

SZY : J'ai regardé la classe de base Object en C#, également minimale. Image de msdn


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

Eh bien, vous n'êtes pas le seul à ne pas comprendre, vous n'êtes pas le seul... Ce style - qui consiste à entasser ce que vous ne pouvez pas entasser dans des macros - a ses avantages et ses inconvénients. D'après ce quej'ai pu constater, mon collèguefxsaber ne démontre que des avantages (flexibilité, multiplateforme, etc.). Et le fait que vous ne puissiez pas vérifier un tel code dans le débogueur, qu'est-ce que c'est ? La lisibilité d'un tel style est plutôt douteuse. Mais comme on dit, le maître est le patron.

Pourquoi attribuer à un exemple concret ce qu'il ne contient pas ?

Maxim Dmitrievsky:

Quels modèles peuvent être utilisés pour apprendre à programmer exactement de la même manière ? :) c'est très joli.

Je suis autodidacte, c'est pourquoi je ne le suis pas partout. J'ai une approche de Tupolev : "Seuls les beaux avions volent bien !"

 
Maxim Kuznetsov:

Il ne s'agit pas d'un SmallTalk, toute la pratique (et la théorie aussi) a montré que faire dériver l'arbre objet d'Adam est un mal cruel. Et ST est autorisé à le faire, il est dans son propre jus (sa propre machine virtuelle).

A en juger par la chaleur, on s'attend à un "try-catch-throw" d'ici le 8 mars ? :-) Bien sûr, ce sera une fête pour les femmes, mais c'est un péché de ne pas prendre un verre.


L'intérêt d'une classe de base vide est que nous pouvons écrire une telle chose. Je le dis d'emblée, l'exemple n'est pas utile, je l'ai inventé à la volée. Le fait est que nous pouvons réduire toute classe dérivée à CObject*.

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:

yep, comment prendre un pointeur sur une structure ?

Honnêtement, je ne comprends pas la question, mais de toute façon c'est la même chose que pour la classe
 
Комбинатор:
Honnêtement, je ne comprends pas la question, mais en tout cas c'est la même chose que pour la classe

Je suis vraiment désolé, dans le contexte de quelle langue tirez-vous cette conclusion ? :-)



 
Комбинатор:
Honnêtement, je ne comprends pas la question, mais de toute façon c'est la même chose que pour la classe

class C {};
struct S {};

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

Raison: