Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
les modificateurs de droits d'accès permettent de détecter les erreurs au moment de la compilation
En général, tout ceci ne complique pas le travail avec les classes, ne l'utilisez pas, écrivez tout en public : et il sera alors plus facile de travailler avec eux.
SZZY : Beaucoup de belles phrases sur la POO, l'encapsulation et l'héritage... Tout cela est bien, mais l'avantage le plus important de la POO par rapport aux autres styles de programmation est le stockage de toutes les données (champs de la classe) et des fonctions de travail avec ces données (méthodes de la classe) en un seul endroit (classe) - en livre, c'est l'encapsulation. En outre, l'utilisation de la POO dépend de la tâche, si la tâche permet de mettre les classes à l'échelle, une hiérarchie sera nécessaire et il y aura des classes de base et leurs descendants - l'utilisation de la POO dépend de vous.
Vous pouvez également "encapsuler" toutes les propriétés d'un objet dans un tableau. Vous pouvez également spécifier les relations entre les objets par le biais de propriétés spécifiques des pointeurs. Il y a là un ordre, car chaque propriété est indexée et sa valeur est stockée dans une cellule spécifique. Les objets eux-mêmes sont encapsulés dans le noyau. L'accès est le plus simple - par numéro d'objet et numéro de propriété. Les transitions entre les objets d'un même contrôle se font par le biais de pointeurs de propriétés.
ce n'est pas commode en premier lieu !
De plus, vous avez déjà parlé plus haut de la lisibilité du code (ainsi que de la vitesse - la vitesse d'exécution dépend d'autre chose, pas du style de programmation).
en général, comme partout ailleurs - vous ne saurez pas tant que vous n'aurez pas essayé, commencez à écrire dans le style OOP, vous obtiendrez des actions spécifiques et des questions spécifiques, un exemple est déjà dans ce fil de discussion
Si l'on parle d'IA, il faut également séparer les données du travail qu'on fait avec elles. Avec la POO, ce sera plus facile.
SZZ : Qu'est-ce qui est mieux dans la POO ? Par exemple, nous avons différents types de données, disons des paramètres d'Expert Advisor dans MQL, et ces paramètres ont des répétitions dans des blocs. Nous prenons un bloc de paramètres et décrivons des champs de classe pour transférer ces paramètres à la classe, il est plus facile de créer un constructeur avec des paramètres, puis d'écrire des méthodes qui fonctionnent avec ces paramètres EA. Après avoir fait tout cela, nous créons soit un tableau d'instances de la classe, soit même seulement quelques instances de la classe ("variables de type classe") et c'est tout - le problème est résolu en écrivant une seule classe, en ne créant pas plusieurs tableaux, en créant des méthodes pour identifier chaque tableau, en créant un groupe de fonctions qui, en plus d'effectuer des modifications dans les tableaux, ne sont pas suffisantes pour gâcher des données qui ne devraient pas être traitées dans cet appel.....
ZZZY : imho, la POO est juste pratique, il y a une certaine légende selon laquelle il n'y a pas besoin d'utiliser la POO s'il n'y a pas d'héritage... pas de commentaire, ça va être une dispute mousseuse, sans moi.
ce n'est pas commode en premier lieu !
De plus, vous avez déjà parlé plus haut de la lisibilité du code (ainsi que de la vitesse - la vitesse d'exécution dépend d'autre chose, pas du style de programmation).
en général, comme partout ailleurs - vous ne saurez pas tant que vous n'aurez pas essayé, commencez à écrire dans le style OOP, vous obtiendrez des actions spécifiques et des questions spécifiques, un exemple est déjà dans ce fil de discussion
Si l'on parle d'IA, il faut également séparer les données du travail qu'on fait avec elles, ce qui sera plus facile à faire avec la POO.
SZZ : Qu'est-ce qui est mieux dans la POO ? Par exemple, il y a différents types de données, par exemple les paramètres d'Expert Advisor dans MQL, et ces paramètres sont répétés dans des blocs. Nous prenons un bloc de paramètres et décrivons les champs de classe pour passer ces paramètres dans une classe, il est plus facile de créer un constructeur avec des paramètres, puis d'écrire des méthodes qui fonctionnent avec ces paramètres EA. Après avoir fait tout cela, nous créons soit un tableau d'instances de la classe, soit même seulement quelques instances de la classe ("variables de type classe") et c'est tout - le problème est résolu en écrivant une seule classe, en ne créant pas plusieurs tableaux, en créant des méthodes pour identifier chaque tableau, en créant un groupe de fonctions qui, en plus d'effectuer des modifications dans les tableaux, ne sont pas suffisantes pour gâcher des données qui ne devraient pas être traitées dans cet appel.....
ZZZY : imho, la POO est juste pratique, il y a une certaine légende selon laquelle il n'y a pas besoin d'utiliser la POO s'il n'y a pas d'héritage... pas de commentaire, ça va être une discussion mousseuse sans moi
Confortable ou non, question subjective. Je préfère une présentation tabulaire des données. D'autres le préfèrent sous la forme d'une grappe de raisin ou d'un arbre. D'autres le préfèrent sous la forme d'une grappe de raisin ou d'un arbre. Mais je vais sérieusement réfléchir à vos propos et essayer de comprendre les principes de base du travail avec les données dans le cadre de la POO.
Dans la POO, un "objet" est une référence à une classe dans laquelle ses champs (propriétés) sont déclarés. Je comprends un objet comme un ensemble numéroté de propriétés, chacune d'entre elles étant une cellule dans un tableau. C'est là toute la différence.
HH c'est-à-dire que s'il y a une classe dans le programme, mais aucune instance de celle-ci, le compilateur ignorera (ne remarquera pas) cette classe.
Je vous ai déjà dit qu'un tableau de pointeurs vers des tableaux de pointeurs est un tableau à deux dimensions. Une liste est une ligne, les listes situées dans la première sont des colonnes. Ils peuvent avoir leurs propres listes. Et ainsi de suite jusqu'au coucher du soleil. C'est la hiérarchie que vous recherchez. Et elle est réalisée par une seule classe.
En théorie, oui. Mais il est nécessaire d'organiser de telle sorte que les transitions entre les liens hiérarchiques (conditionnellement - induction et déduction, c'est-à-dire du particulier au général et inversement) s'effectuent en chaîne. En d'autres termes, l'ordre des pointeurs doit être structuré d'une manière spéciale pour permettre de se déplacer dans n'importe quelle (bonne) direction, sans "tours" et "sauts" excessifs dans la boucle. Par conséquent, une simple disposition en tableau des pointeurs ne fonctionnera probablement pas.
Ajouté :
Mais ça pourrait marcher. Je ne sais pas encore.
Nous devons mettre ces questions en pratique, sinon nous ne serons pas en mesure de voir ce qui est pratique et ce qui semble incommode )))).
Voici un exemple trivial, qui est utilisé dans MQL cent cinquante fois - la détermination d'une nouvelle barre:
OK, c'est un code qui fonctionne, mais que faire si je dois définir une nouvelle barre pour 2 TFs ? Et que faire si je veux utiliser tous les TFs du terminal ?
ce serait comme ça en OOP :
et tout ce que j'ai à faire maintenant est de déclarer plusieurs instances de la classeCNewbar - comment ? même à un tableau, même à plusieurs variables, mais j'ai protégé les données d'un changement accidentel avec OOP
J'ai déjà résolu ce problème publiquement. L'idée était de créer un tableau de tous les symboles et de toutes les échéances et de le parcourir en boucle, en fixant les événements d'une nouvelle barre. Après le premier appel d'une fonction de cet événement, son drapeau est effacé du tableau. Je ne peux pas juger à quel point c'est plus compliqué qu'en OOP. Mais, en fait, une solution plutôt simple et pratique.
Peter, vous devez bien comprendre que la classe elle-même n'a pas de mémoire allouée, même s'il y a des instances d'autres classes à l'intérieur de la classe comme ses propriétés. Par conséquent, il ne peut y avoir de référence à la classe, mais uniquement à l'objet classe. La mémoire est allouée lorsqu'une instance (objet) d'une classe est déclarée (créée).
En théorie, oui. Mais il est nécessaire d'organiser de telle sorte que les transitions entre les liens hiérarchiques (conditionnellement - induction et déduction, c'est-à-dire du particulier au général et inversement) s'effectuent en chaîne. En d'autres termes, l'ordre des pointeurs doit être structuré d'une manière spéciale pour permettre de se déplacer dans n'importe quelle (bonne) direction, sans "tours" et "sauts" excessifs dans la boucle. Par conséquent, une simple disposition en tableau des pointeurs ne fonctionnera probablement pas.