Formation MQL5 - page 19

 
papaklass:
Laissez-moi vous poser une question. Quelle est la différence fondamentale entre la programmation procédurale et la POO ? Quelques mots, c'est-à-dire l'essentiel de la différence.

Pour commencer, même l'approche procédurale implique des structures, car il est difficile de s'en passer. Il s'agit au moins d'une sorte d'organisation des données.

La POO nous permet d'identifier facilement les entités abstraites et les relations entre elles au stade de la conception. Ensuite, vous pouvez simplement les coder, même individuellement, sans vous préoccuper des particularités de mise en œuvre.

Et tout cela semble plus logique et plus lisible. Et cela fonctionne souvent plus rapidement. Et l'essentiel est qu'il est mis en œuvre plus rapidement. Malgré le fait que nous ayons plus de code.

 
papaklass:

Je voulais que tu exprimes ta compréhension du problème, pas que tu me donnes une formulation livresque. Non veut dire non. Je vais vous parler de moi.

Eh bien, je ne t'ai pas "donné une formulation de livre" :) Je n'ai rien formulé du tout - avec une explication. J'ai simplement supposé que la question était une question d'examen, dont vous connaissez déjà la réponse grâce à la pilule. Et c'est ce qui s'est passé :) Je n'ai pas refusé de répondre sur mon expérience personnelle.

Parfois, il suffit de "sentir" le phénomène et, sans se poser de questions philosophiques telles que "comment est-ce possible" et "quel est son sens profond", de comprendre simplement par l'exemple comment il fonctionne. La référence au tetris dans le manuel de référence m'a suffi et cet exemple a suffi pour les tout, tout débutants :

En fonction de l'objet de classe créé, une fonction virtuelle de l'une ou l'autre classe dérivée est appelée.

void CTetrisField::NewShape()
  {
//--- случайным образом создаём одну из 7 возможных фигур
   int nshape=rand()%7;
   switch(nshape)
     {
      case 0: m_shape=new CTetrisShape1; break;
      case 1: m_shape=new CTetrisShape2; break;
      case 2: m_shape=new CTetrisShape3; break;
      case 3: m_shape=new CTetrisShape4; break;
      case 4: m_shape=new CTetrisShape5; break;
      case 5: m_shape=new CTetrisShape6; break;
      case 6: m_shape=new CTetrisShape7; break;
     }
//--- отрисовываем
   m_shape.Draw();
//---
  }

Il suffisait de créer intuitivement des objets dont le comportement diffère en fonction des données initiales. Ensuite - j'ai demandé l'intégralité du fichier tetris du forum, plus les matériaux de la Référence, les bibliothèques, etc. Et puis ça a continué encore et encore. Beaucoup de questions sur le forum à ce sujet.

papaklass:

Après avoir lu un tas d'informations sur le site web, je ne comprends toujours pas ce qu'est la POO.

Nous avons simplement une approche radicalement différente. Je ne me suis pas particulièrement demandé "ce qu'est la POO" d'un point de vue scientifique. - Pour ne pas perdre l'essentiel derrière une façade de termes nouveaux et incompréhensibles.

Je suis allé carrément étudier les exemples disponibles.

papaklass:

Après avoir lu beaucoup d'informations sur le site web, je ne comprenais toujours pas ce qu'était la POO.

The MQL5 Reference / Fundamentals / Object-Oriented Programming. Il suffit de lire la page. Apparemment, cela m'a suffi - sans qu'il soit nécessaire de chercher d'autres définitions dans des documents tiers.

 
papaklass:

La réponse à ma question :

La programmation Produre se concentre sur les actions (verbes), tandis que la programmation orientée objet se concentresur les objets, ou entités (noms). C'est la principale différence.


En théorie et en pratique, c'est le cas :

La programmation procédurale répond à la question de savoir ce qu'il faut faire (verbes ),
Les verbes de la programmation orientée objet décrivent(adjectifs) l'objet (noms).

En d'autres termes, la POO est une superstructure généralisante du code en phrases significatives avec de nombreuses parties du discours.


Celui qui ne parle qu'en verbes est autorisé à vivre dans des procédures.

Qui veut raconter son code, qu'il l'écrive avec la POO.


PS.

Combien nous sommes fatigués de tous ces théoriciens de la programmation, bon sang.

Bientôt je vais tuer sans pitié le sujet "OOP vs Procédures".
 
sergeev:

PS.

J'en ai marre de tous ces théoriciens de la programmation, bon sang.

Bientôt je vais tuer sans pitié les sujets "OOP vs Procédures".
Pourquoi faut-il les "tuer" en même temps ? La plupart des débutants en MQL5 sont familiers avec la "programmation procédurale". Et s'ils ont des questions sur la nécessité et la signification de la POO - elles doivent être expliquées/comprises patiemment. Comme un professeur à l'école - la même chose année après année. Expliquez patiemment, - ne leur dites pas d'aller se faire voir juste parce que le professeur est fatigué de répéter ce sujet.
 
sergeev:

PS.

Combien nous en avons assez de tous ces théoriciens de la programmation, bon sang.

Bientôt les thèmes "OOP vs Procédures" seront impitoyablement tués.

" Au lieu d'arranger la ponctuation à volonté, écrivez un glossaire et il n'y aura personne à " tuer sans pitié ".

Mais si vous lisez "praticiens" de la POO - c'est comme une "caste" d'experts de la POO.

MQL5 est un langage pour tous les niveaux de compréhension et de capacités, pas seulement pour les naufragés - les exemples standards d'indicateurs et d'Expert Advisors le prouvent.

Un langage de programmation n'est pas une fin, mais un moyen. Si le PP est suffisant pour atteindre l'objectif, qu'il en soit ainsi. S'il est plus facile et plus clair pour quelqu'un d'utiliser la POO, qu'il en soit ainsi. Et pour atteindre l'objectif - il n'y a pas de différence fondamentale - surtout dans 90% des indicateurs microfonctionnels low-code et des Expert Advisors, qui sont principalement écrits.

 

papaklass:

Lorsque vous rencontrez une phrase comme celle-ci au début d'un cours, vous comprenez immédiatement de quoi il s'agit. Et d'une certaine manière, tout se met en place. Vous comprenez que les attributs sont des propriétés d'objets, que les implémentations et les méthodes sont la même chose (fonctions) et, enfin, que les classes sont composées d'objets. Les objets ont non seulement des attributs (propriétés) et des méthodes (fonctions), mais ils peuvent également interagir entre eux. En même temps, ils (les objets) n'ont pas besoin de connaître les attributs et les méthodes des autres objets. C'est ainsi que les classes sont créées à partir de ces blocs de construction, qui interagissent également les uns avec les autres.

Vous avez tout mis dans un tel tas que vous ne pouvez même pas en faire du porridge)))) Ça ne peut pas être parce que c'est écrit dans un livre.
 
abolk:

Un langage de programmation n'est pas une fin, mais un moyen. Si le PP est suffisant pour atteindre l'objectif, qu'il en soit ainsi. Si la POO est plus claire et plus simple pour quelqu'un, qu'il en soit ainsi.

Sage. A en juger par ma propre expérience : les indicateurs de la monnaie unique sont écrits sur PP. Et le conseiller expert multi-devises est écrit en utilisant la POO (parce que sans la POO - dans mon cas, il ne serait pas apparu du tout).
 

Как уже надоели все эти программистские теоретики, блин. 

Bientôt les fils "OOP vs Procédures" seront impitoyablement tués.

Cela est dû au fait que les gens ne comprennent pas les avantages, les inconvénients, les lieux et les manières d'utiliser les deux. Un article avec des exemples aussi simples : PP donnera des avantages pour cette tâche_1 tels et des inconvénients tels, OOP donnera des avantages pour cette tâche_1 tels et des inconvénients tels ; PP donnera des avantages pour cette tâche_2 tels et des inconvénients tels, OOP donnera des avantages pour cette tâche_2 tels et des inconvénients tels... Je pense qu'il est crucial de prêter plus d'attention à la comparaison des classes et des interfaces, si ces dernières apparaissent dans cinq, car les subtilités et les différences peuvent être compliquées pour ceux qui sont nouveaux dans la POO. Et tout cela avec un penchant pour la résolution de problèmes simples, et c'est là toute la difficulté - l'explication et les exemples doivent être aussi simples et courts que possible, mais en utilisant les principes du PP et de la POO.

Il serait alors possible de planter un fil de discussion en l'envoyant à un endroit où tout est rangé dans des étagères avec des exemples simples d'application, systématisés selon certains thèmes.

Yedelkin:
Sage. D'après ma propre expérience : les indicateurs à une monnaie sont écrits sur PP. Et le conseiller expert multidevises est écrit en utilisant la programmation orientée objet (sans la programmation orientée objet, il ne serait pas apparu du tout).
Cher Yedelkin ! Je peux vous envoyer le noyau multidevise conçu de manière procédurale si cela vous intéresse (il fonctionne par open bar). Le code a été écrit pour 4, mais il fonctionnera aussi avec 5 - vous pouvez comparer les performances des deux variantes sur celui-ci.
 
-Alexey-: Cher Yedelkin ! Je peux vous envoyer un noyau multidevise conçu de manière procédurale si vous êtes intéressé (fonctionne sur open bar). Le code est écrit pour 4.
Je suis pour que tout le monde vive dans la paix et la compréhension, si possible. Quant à mes posts, je ne faisais que décrire ma compréhension de la POO. Elle (la compréhension) peut être trois fois erronée - mais c'est "ma" compréhension. Je n'exclus pas du tout qu'une partie des problèmes que j'ai pu résoudre à l'aide de la POO, puisse également être résolue dans le cadre du PP. La sagesse de la déclaration d'Abouk est précisément la suivante :"Si le PP suffit pour atteindre l'objectif, qu'il en soit ainsi.S'il est plus clair et plus simple pour quelqu'un d'utiliser la POO, qu'il en soit ainsi". J'ai ajouté un complément à mon message.
 
Yedelkin:
Je suis favorable à ce que tout le monde vive ensemble et dans la compréhension mutuelle, si possible. Quant à mes posts, j'ai décrit ma compréhension de la POO exclusivement. Elle (la compréhension) peut être trois fois erronée - mais elle est "mienne". Je n'exclus pas du tout qu'une partie des problèmes que j'ai pu résoudre à l'aide de la POO, puisse également être résolue dans le cadre du PP. La sagesse de la déclaration d'Abouk est précisément la suivante :"Si le PP suffit pour atteindre l'objectif, qu'il en soit ainsi.S'il est plus facile et plus clair pour quelqu'un d'utiliser la POO, qu'il en soit ainsi".
Je suis d'accord. Et afin de lutter contre l'envie de telle ou telle préférence, il est préférable d'organiser des concours entre les utilisateurs du forum. Il y a une telle tâche ... : quelle approche gagnera exactement en termes de performance, consommation de mémoire, taille du code, portabilité ... ?