Questions sur la POO dans MQL5 - page 51

 
Sergey Dzyublik:

1. Il s'avère que la structure de données arborescente vient du malin.
2. pauvre C++ où class == private struct, que faire, on devrait probablement abandonner les structures et les classes.
3. et c'est vrai : pas de motifs, pas de tri par pointeurs, pas d'économie de mémoire, surtout pour les gros objets...
4. N'oublions pas d'interdire l'utilisation des interfaces et des fonctions modèles, sinon vous ne comprendrez pas avec quel objet vous travaillez - quelle horreur...

1. Non, pourquoi pas ? Si vous parlez de nœuds d'arbre (ou de liste chaînée) qui changent d'état, il s'agit simplement d'organiser l'accès à cet état. En termes defonctionnalité du code, l'utilisateur ne devrait pas avoir accès à l'état d'un nœud.Toute itération entre les nœuds doit être effectuée en accédant à l'arbre lui-même : tree.NextNode(myNode) ou tree.Parent(myNode), et non myNode.NextNode() ou myNode.Parent().

C'est-à-dire que l'état modifié ne doit pas être accessible au public.

2. écoutez, j'ai pris la structure Sharpe parce qu'il est impossible d'y prendre une référence/pointeur. S'il n'y a pas de contrôle, vous devez prévoir un contrôle personnel, par exemple en nommant les classes de manière appropriée. Disons-le comme ça :

classe MyClass_mut ; // mutable

classe MyClass_immut ; // immuable

3, 4. Vous avez tort. Tout peut être implémenté ) Il ne faut juste pas penser que toutes les données de l'objet sont nécessairement copiées par la pile. En général, un objet contient un pointeur interne vers les données. C'est comme des pointeurs intelligents. Seulement dans le cas d'objets modifiables, ce pointeur doit être encore plus intelligent )

 
Aleksey Mavrin:

Dmitry, je vous assure, je serais heureux de rire de vous aussi, bien j'aime ce métier) mais dans ce cas vous avez exagéré, même particulièrement bien souri.

Vous êtes juste très confus - une PRISE DE VUE n'est pas égale à une COPIE D'OBJET, je vous l'ai fait remarquer.

Si ce n'est pas clair, laissez-moi vous expliquer par un exemple : vous avez 1000 octets d'objet, vous avez besoin de 200 pour l'instantané, alors pourquoi en copier 800, surtout si vous avez plusieurs millions d'instantanés enregistrés.

p/s/ Et en général. Les gens ne se rendent-ils pas compte que les modèles ne sont qu'un exemple élémentaire de la résolution d'un problème TYPIQUE élémentaire ? Et en fait, les tâches ne sont pas élémentaires, mais plus compliquées. Et pour résoudre des problèmes réels, les modèles sont nécessaires, mais souvent pas sous forme de livre pur, mais adaptés à une tâche particulière, éventuellement combinés entre eux, éventuellement avec l'ajout d'une certaine improvisation, exprimée parfois dans une simplification, si la tâche le permet, ou vice versa "pondération" de la réalisation.

Encore une fois, pourquoi avez-vous besoin de l'encapsulation et des interfaces - cela ne peut probablement pas être compris si votre QI est inférieur à celui de Wasserman, ou si vous n'avez pas participé à de vrais projets, lorsque différentes parties du projet sont modifiées par différentes personnes simultanément, et que ne pas suivre les principes de base de l'OOPD implique des coûts énormes pour attraper les bogues. Vraiment, pourquoi tout cela pour l'estampillage des conseillers experts pour le marché)))

Vous confondez les algorithmes de résolution des tâches de programmation avec les "design patterns", aujourd'hui à la mode, liés exclusivement à la POO. Et vous confondez beaucoup d'autres choses, et lisez de manière inattentive. Un peu plus tôt, j'ai écrit - utilisez la structure. Mais si vous avez lu ce post et que je n'ai pas écrit sur la fonction de copie de la classe entière, vous auriez compris que nous sommes des adultes et qu'il n'est pas nécessaire de faire du travail supplémentaire avec des structures inutiles alors que nous devrions tout faire avec maturité - il suffit de fournir la possibilité de copier la classe entière.

 
Aleksey Mavrin:

...

Encore une fois, pourquoi avez-vous besoin de l'encapsulation et des interfaces - c'est probablement impossible à comprendre si votre QI est inférieur à celui de Wasserman, ou si vous n'avez pas participé à de vrais projets, lorsque différentes parties du projet sont modifiées par différentes personnes simultanément, et que le non-respect des principes élémentaires de l'OOPD entraîne des coûts énormes pour attraper les bogues. Vraiment, pourquoi tout cela pour l'estampillage des Expert Advisors pour le marché)))

.

Sergey Dzyublik:

...
4. Je ne dois pas oublier d'interdire l'utilisation des interfaces et des fonctions modèles, sinon vous ne comprendrez pas avec quel objet vous travaillez - quelle horreur...

Un jour, quelque part, lisez ce que sont les interfaces et pourquoi elles sont nécessaires.

-

Oh, et ça... Vous confondez sérieusement la possibilité de sauvegarder tous les champs d'un objet ou certains d'entre eux avec la fonction annuler/refaire ? Parlons de Photoshop, vous savez comment ça se passe.

-

Et lequel d'entre vous est tout chocolaté et m'envoie un e-mail ?

-

Quel est le problème, de toute façon ? Ai-je ébranlé les fondements de votre foi dans le Saint Patron ?

 
Un amateur autodidacte qui n'a jamais rien vu d'autre que mql, enseignant aux hommes comment écrire des programmes, c'est drôle de venir lire).
 

était en train de fouiller dans la bibliothèque ici.

Grande trouvaille : "Introduction à l'intelligence artificielle et aux systèmes experts avec illustrations en BASIC" 1987. Un des chapitres "Le concept de la programmation orientée objet".

Croyez-moi - RIEN n'a changé...

 
Maxim Kuznetsov:

était en train de fouiller dans la bibliothèque ici.

Grande trouvaille : "Introduction à l'intelligence artificielle et aux systèmes experts avec illustrations en BASIC" 1987. Un des chapitres "Le concept de la programmation orientée objet".

Croyez-moi - RIEN n'a changé...

Beaucoup de choses ont changé, il n'y avait pas d'église de dévots des Holy Design Patterns à l'époque. Et le club des victimes de C++ ne s'était pas encore formé à cette époque non plus.

 
Dmitry Fedoseev:

Beaucoup de choses ont changé, il n'y avait pas d'église de dévots des motifs de la Sainte Conception à l'époque.

il n'y avait pas d'église des adorateurs du design à l'époque. cela n'existe pas même maintenant, vous pouvez chercher dans le runet, si le nombre de questions sur les design patterns dans le runet est très faible, cela signifie qu'il n'existe pas en tant que masse, les questions "livresques" des étudiants ne comptent pas.

ils n'ont rien à lire, mais c'est pratique quand on veut faire évoluer un projet, en général, la structure du programme est initialement correcte

 
Dmitry Fedoseev:

Beaucoup de choses ont changé, il n'y avait pas d'Église des Saints Pères du Design à l'époque.

Les " modèles de conception" sont juste un accord pour appeler les mêmes choses qui se produisent fréquemment par les mêmes noms. Et d'ailleurs, le terme vient de l'architecture (lorsqu'il s'agit de sculptures/ponts/portails/portails).

Parfois, des choses similaires sont résolues avec des techniques similaires, mais pas nécessairement toujours... Mais il est utile de s'entendre sur la similitude des choses et des méthodes pour se comprendre.

Mais bien sûr, il y a ceux qui disent "donnez un phallus en verre à un imbécile, il le cassera et se coupera".

 
Igor Makanu:

Cela n'existe pas, même maintenant, vous pouvez faire une recherche sur le runet, si le nombre de questions sur les modèles dans le runet est très faible, alors il n'existe pas en tant que masse, les questions du "livre" des étudiants ne comptent pas.

Il n'y a rien à lire, mais c'est pratique quand on veut mettre un projet à l'échelle.

Ils ne contiennent rien. Combien de modèles avez-vous étudiés ?

 
Dmitry Fedoseev:

Rien n'y est intégré. Combien de modèles avez-vous étudiés ?

Qu'est-ce que l'on entend par "étudié" ?

si j'ai lu les descriptions sur plusieurs forums, alors j'en ai des dizaines

Si elle est appliquée dans MQL, alors un - la stratégie fonctionne, elle s'adapte, le remaniement est facile - je peux jeter toutes les choses inutiles pour le testeur afin de rendre le processus plus rapide, ou passer directement à une démo - c'est généralement commode et pratique.