Questions sur la POO dans MQL5 - page 2

 
Yuriy Asaulenko:
Eh bien, c'est un peu trop. L'homme est à fond dans la POO depuis le début. Au moins juste en faisant une tasse de café. Pourquoi y a-t-il des ruptures de motifs ? IMHO, une absurdité d'enseignants ineptes déplaçant leurs problèmes sur les étudiants.
Lisez-le attentivement. C'est ce que je dis : une personne définit et résout initialement ses problèmes dans un style se rapprochant de la POO. Mais ensuite, on lui apprend la programmation procédurale. Après cela, les modèles sont brisés car c'est la programmation procédurale (et non la POO) qui diffère grandement de la pensée humaine.
 
Vasiliy Sokolov:

La POO devrait être expliquée sans aucun code et toute cette nomenclature absconse comme les classes, les objets, les pointeurs, etc. etc.

Comment fonctionne l'enseignement de la programmation classique ? Au début, un étudiant essaie péniblement de passer de la pensée humaine aux bases de la programmation (boucles, fonctions, variables et autres choses de ce genre qui constituent un "bagage de connaissances" nécessaire). Puis, lorsque le désordre des fonctions, des variables et des "si" forme une structure plus ou moins ordonnée, on dit à l'étudiant : "Regardez : la POO existe. Oubliez ce qu'on vous a enseigné auparavant, et recommencez à penser comme un humain". Il s'ensuit une rupture des modèles, le "bagage de connaissances" tout juste obtenu avec tant de difficultés est jeté à la poubelle, et la personne se retrouve quelque part entre le ciel et la terre. Naturellement, on se souvient ensuite de cet "OLP" pendant plusieurs années comme d'un mauvais rêve accompagné de frissons et de douleurs dans les parties restantes du cerveau (les autres ont été brûlées par la nouvelle connaissance).

Non, j'affirme catégoriquement qu'il ne faut pas apprendre la programmation. Au contraire, elle est nuisible et dangereuse. Au contraire, il est nécessaire d'enseigner la réflexion. Et avec cela, il y a un échec complet de la méthode classique d'apprentissage.

Voulez-vous écrire un article
 
pako:
Rédiger un article.
Ne fais pas ça.
 
pako:
Rédiger un article

Peut-être. Mais Alexei pourrait être encore plus capable d'expliquer l'OLP.

 
Комбинатор:
Ne le faites pas.
Vous écrivez déjà ?
 
non )
 
Комбинатор:
non )
Et n'écrivez pas :)
 
Vasiliy Sokolov:
Lisez attentivement. C'est ce que je dis : une personne définit et résout initialement ses tâches dans un style proche de la POO. Mais ensuite, on lui apprend la programmation procédurale. Ensuite, la rupture des schémas se produit parce qu'il s'agit de programmation procédurale (et non de POO) qui diffère grandement de la pensée humaine.

Je ne vois rien de mal à apprendre la programmation procédurale au préalable. Pour apprendre à écrire des romans, il est bon de commencer par apprendre l'alphabet et la syntaxe ordinaires et d'apprendre simplement à lire et à écrire.

En fait, même en programmant simplement en C/Pascal, etc., nous manipulons déjà des objets sans connaître leur structure interne et leur fonctionnement. Il reste à expliquer que c'est un objet, puis à enseigner comment construire ces objets.

 
Alexey Volchanskiy:

....

Question :

Proposez un sujet sur la POO dans MQL5 pendant 10 minutes, je le mettrai sur youtube, c'est-à-dire qu'il sera utile à tous.

------------------

Écrivez tout ce qui est intéressant, je ferai le tri, j'essaierai de satisfaire vos demandes dans la limite de mon temps libre.

Bonne chance !)

Illuminez votre travail avec des objets.
 

Aidez-moi à résoudre un problème. Il y a deux boutons et une ligne. Un bouton, lorsqu'il est enfoncé, met la ligne en mode édition, et lorsqu'il est relâché, supprime la ligne. Le second bouton, lorsqu'il est cliqué, fixe la ligne, et lorsqu'il est cliqué, la remet en mode édition. Chaque bouton peut modifier la couleur et certaines autres propriétés de l'objet Ligne. L'objet "Ligne" est défini de manière globale. Est-il possible de passer une référence à l'objet "Ligne" à chaque bouton immédiatement après la création des boutons de sorte que lorsque vous manipulez la variable de référence à l'intérieur des objets "Bouton", tous les changements sont mémorisés dans l'objet global "Ligne".

J'ai esquissé un script simplifié ci-dessous, au lieu d'appuyer sur un bouton, c'est une fonction addition() qui incrémente le compteur de l'objet "Ligne". Je comprends que vous pouvez passer l'objet "Line" comme argument de fonction par référence, mais dans la version de travail, il y a plusieurs fonctions de ce type, donc j'aimerais passer la référence au tout début une seule fois. Est-il possible de faire en sorte que Btn1.addition() ou Btn2.addition() augmente le nombre de gLine.count ?

class CLine
{
    public:
          int   count;
                CLine(void){count=0;};
               ~CLine(void){};
};


class CMyButton
{
    private:   
    public:
                CLine m_Line;
                CMyButton(void){};
               ~CMyButton(void){};
              
                void bind(CLine &aLine) {m_Line = aLine;}
                void addition() {++m_Line.count;}
};




CMyButton  Btn1;
CMyButton  Btn2;

CLine gLine;

void OnStart()
{
   Btn1.bind(gLine);
   Btn2.bind(gLine);
   
   Print("Line.count=", gLine.count);
   Btn1.addition();
   Print("Line.count=", gLine.count, "  Btn1.m_Line.count=", Btn1.m_Line.count);
   Btn2.addition();
   Print("Line.count=", gLine.count, "  Btn2.m_Line.count=", Btn2.m_Line.count);
   Btn1.addition();
   Print("Line.count=", gLine.count, "  Btn1.m_Line.count=", Btn1.m_Line.count);
   Btn2.addition();
   Print("Line.count=", gLine.count, "  Btn2.m_Line.count=", Btn2.m_Line.count);
}

C'est ce que j'ai en ce moment :