Discussion de l'article "Les bases de la programmation orientée objet"

 

Un nouvel article Les bases de la programmation orientée objet a été publié :

Vous n'avez pas besoin de savoir ce que sont le polymorphisme, l'encapsulation, etc. pour utiliser la programmation orientée objet (POO)... vous pouvez simplement utiliser ces fonctionnalités. Cet article couvre les bases de la POO avec des exemples pratiques.

La première et la plus simple des applications de la POO consiste à créer vos propres bibliothèques de fonctions fréquemment utilisées. Bien sûr, vous pouvez simplement stocker ces fonctions dans un fichier d'inclusion (mqh). Lorsque vous avez bien besoin d'une fonction, incluez simplement un fichier et appelez cette fonction. Cependant, si vous avez fait de la programmation assez longtemps, vous allez collecter une énorme quantité de fonctions, de sorte qu'il serait difficile de se souvenir de leurs noms et de leur objectif.

Vous pouvez collecter des fonctions dans différents fichiers, en les divisant en catégories en fonction de leur objectif. Par exemple, des fonctions de travail avec des tableaux, des fonctions de travail avec une chaîne, des fonctions de calcul d'ordres, etc. Dans la dernière phrase, le mot « catégorie » peut être remplacé par le mot « classes ». Le sens reste le même, mais examinons ce sujet de plus près - Programmation Orientée Objet.

Ainsi, les fonctions peuvent être divisées en classes : classe de fonctions pour travailler avec des tableaux, classe de fonctions pour travailler avec des chaînes, classe de fonctions pour compter les ordres, etc. Le mot « classe » nous rapproche du sujet de la POO car c'est son concept fondamental. Vous pouvez rechercher dans divers ouvrages de référence, dictionnaires et encyclopédies (par exemple Wikipedia) ce qu'est la « classe de programmation ».

Dans la programmation orientée objet, une classe est une construction utilisée comme modèle pour créer des instances d'elle-même.

Peut-être que la première impression serait à peu près la même que celle que reflètent les mots « polymorphisme », « encapsulation », etc. Pour le moment, par le concept « classe », nous entendrons un ensemble de fonctions et de variables. Dans le cas de l'utilisation de la classe pour créer une bibliothèque - un ensemble de fonctions et de variables regroupées par type de données traitées ou par type d'objets traités : tableaux, chaînes, ordres.

Auteur : Dmitry Fedoseev

 

Pourquoi les codes ne passent-ils pas par le styliste?

Il sera difficile pour un nouvel arrivant de lire, il voit un style dans ME et un autre dans l'article.

ZY L'article ne révèle pas les problèmes de connexion des classes.

En général, bien sûr, la POO est un sujet complexe, il n'est pas facile de la décrire dans un langage simple, mais il faut bien commencer quelque part.

 

J'ai aimé l'article, merci à l'auteur.

Mais le code est illisible - je suis d'accord avec l'intervenant précédent.

 
Urain:

1. Pourquoi les codes ne passent-ils pas par le styliste?

Cela pose un problème de lecture à un débutant qui, dans ME, voit un style et, dans l'article, un autre.

2. ZY L'article ne révèle pas les problèmes de communication entre les classes.

En général, bien sûr, la POO est un sujet complexe, il n'est pas facile de la décrire dans un langage simple, mais il faut bien commencer quelque part.


1. perplexe. Il semble que je l'ai exécuté. Définitivement, je l'ai exécuté !

Le voici :

~CName(){ Alert("Destructeur "+IntegerToString(m_arg)); }
void Sleep()  { Sleep(3000); }

Ce n'est pas du tout mon style (une ligne d'accolades).

2. Clarifiez, ce n'est pas clair, quel est le lien ?

 

Apparemment, la question s'adresse plutôt aux développeurs.

Citation:La différence est que les structures de données ne peuvent inclure que des variables.

En C++, une structure est définie comme une classe dont tous les membres sont ouverts.

Dans la version actuelle de MQL5 - 555, vous pouvez également utiliser un membre-méthode dans une structure.

S'agit-il d'une omission de la version actuelle et est-il prévu de permettre l'utilisation de membres de données uniquement à l'avenir ?

 
Integer:
...

2. Clarifier, il n'est pas clair ce qu'est l'association ?

Association et autres moyens de relier les classes.

 
Urain:

Association et autres moyens de relier les classes.

Je ne comprends pas. "Utiliser la POO pour modifier la logique d'un programme", n'est-ce pas ?

Ou encore de regrouper plusieurs classes en une seule ? - Il y a quelque chose qui fait que l'on peut déclarer des pointeurs vers d'autres classes dans une classe.

 
Dima_S:

Apparemment, la question s'adresse plutôt aux développeurs.

Quote:La différence est que les structures de données ne peuvent inclure que des variables.

En C++, une structure est définie comme une classe dont tous les membres sont ouverts.

Dans la version actuelle de MQL5 - 555, vous pouvez également utiliser un membre-méthode dans une structure.

S'agit-il d'une omission de la version actuelle et est-il prévu de permettre l'utilisation de membres de données uniquement à l'avenir ?


Les fonctions peuvent-elles être écrites dans une structure ? Probablement des pointeurs vers la classe - vu, essayé, il vaut mieux ne pas le savoir.
 
Integer:
Peut-on écrire des fonctions dans une structure ?
Vous pouvez.
 
Dima_S:

Apparemment, la question s'adresse plutôt aux développeurs.

Quote:La différence est que les structures de données ne peuvent inclure que des variables.

En C++, une structure est définie comme une classe dont tous les membres sont ouverts.

Dans la version actuelle de MQL5 - 555, vous pouvez également utiliser un membre-méthode dans une structure.

S'agit-il d'une omission de la version actuelle et est-il prévu de permettre l'utilisation de membres de données uniquement à l'avenir ?


Ouvrez l'aide sur les structures et lisez également la conversion de type, à propos des structures.

Les membres de méthode étaient disponibles dès le début. Pourquoi voulez-vous les supprimer ?

 
Integer:

1) Je ne comprends pas. "Utiliser la POO pour changer la logique d'un programme" n'est-ce pas ?

2) Ou encore, de regrouper plusieurs classes en une seule ? - Il y a quelque chose qui fait que l'on peut déclarer des pointeurs vers d'autres classes dans une classe.

1 Non, ce n'est pas ça, c'est l'utilisation de l'héritage.

2 est plus chaud, c'est la composition, qui est l'une des trois options de liaison, avec l'association et l'agrégation.

Je suis d'ailleurs surpris que des paradigmes aussi fondamentaux ne soient pas abordés dans la description de la POO dans l'aide.