Programmation OOP vs programmation procédurale - page 34

 
Andrei:

C'est le but - si vous isolez tout de tout, il sera beaucoup plus difficile de traiter un tel code, sans parler de l'impossibilité de déboguer correctement le code lorsque vous avez besoin de connaître les valeurs actuelles de toutes les variables nécessaires...

Si vous écrivez une classe qui utilise l'interface du processeur commercial, vous ne devez pas connaître les variables actuelles de cette interface. Déboguez la partie REMOTE.

Si vous avez besoin de déboguer le processeur commercial lui-même - encore une fois, vous devez le déboguer, et à l'intérieur de cette classe, vous ne devez pas connaître de variables, disons, du générateur de signaux d'entrée.

C'est l'essence même de l'encapsulation : à chaque endroit, nous ne travaillons qu'avec ce dont nous avons besoin et n'interférons pas avec les autres endroits.

 
Andrei:
Il ne s'agit pas du bas niveau, mais de la logique de ce qui y circule et de ce qu'il devient à chaque instant, y compris la connaissance de toutes les variables internes... Sans comprendre toute cette logique redondante, le sens de l'utilisation de ce code pour un non-auteur disparaît complètement...

Salut...

Comprenez-vous bien le fonctionnement de Metatrader ? Connaissez-vous les variables de MT ? Mais cela ne vous empêche pas de l'utiliser.

C'est ce que vous devez faire dans votre programme. Il existe un certain nombre de blocs - ils interagissent à l'aide d'interfaces prédéfinies et n'interfèrent pas les uns avec les autres.

 
George Merts:

Si vous écrivez une classe qui utilise l'interface du processeur commercial, vous ne devez pas connaître les variables actuelles de cette interface. Déboguez la partie REMOTE.

Si vous avez besoin de déboguer le processeur commercial lui-même - encore une fois, vous devez le déboguer, et à l'intérieur de cette classe - vous ne devez connaître aucune variable, disons, du générateur de signaux d'entrée.

C'est l'essence même de l'encapsulation : à chaque endroit particulier, nous ne travaillons qu'avec ce dont nous avons besoin et n'interférons pas avec les autres endroits.

Si vous avez déjà écrit un algorithme de calcul un peu complexe, vous avez dû remarquer qu'il y a toujours beaucoup de variables, qui doivent être traitées plusieurs fois à différents endroits et pouvoir contrôler leurs valeurs dans différentes parties du programme à tout moment... Comment ajouter à cette situation l'encapsulation de tout le contenu interne de l'objet par rapport au monde extérieur n'est pas clair.....
 
George Merts:

Salut...

Comprenez-vous bien le fonctionnement de Metatrader ? Connaissez-vous les variables de MT ? Mais cela ne vous empêche pas de l'utiliser.

Vous devez le faire à l'intérieur de votre programme. Il existe un certain nombre de blocs - ils interagissent à l'aide d'interfaces prédéfinies et n'interfèrent pas les uns avec les autres.

Attention, nous ne parlons pas de variables internes de MT, nous parlons de variables internes d'objets que vous avez isolées, empêchant la possibilité de lire leurs valeurs lors du débogage et de l'écriture du code...
 
Andrei:
Attention, nous ne parlons pas de variables internes de MT, nous parlons de variables internes d'objets que vous avez isolées, empêchant la possibilité de lire leurs valeurs lors du débogage et de l'écriture du code...

Si les variables internes de l'objet sont nécessaires ailleurs, il ne s'agit plus de variables internes de l'objet, il faut penser à la logique de construction de cet objet (très probablement le diviser à nouveau en objets plus petits). En dernier recours, si c'est vraiment nécessaire et qu'il n'y a pas d'autre moyen, une méthode Get d'accès public est utilisée dans l'interface.

 
George Merts:
Andrei est encore plus clinique que Peter ou Sansanych, vous perdez votre temps.
 
Andrei:
Si vous avez déjà écrit un algorithme de calcul un peu complexe, vous avez dû constater qu'il y a toujours beaucoup de variables, qu'il faut manipuler plusieurs fois à différents endroits et pouvoir contrôler à tout moment leurs valeurs dans différentes parties du programme... Comment ajouter à cette situation l'encapsulation de tout le contenu interne de l'objet par rapport au monde extérieur n'est pas clair.....

une telle chose montre que c'est vous qui, malheureusement, n'avez presque rien écrit :-(

Quel désordre dans le système !

 
Ihor Herasko:

Si des variables d'objet internes sont nécessaires ailleurs, elles ne sont plus des variables d'objet internes. En dernier recours, si cela est vraiment nécessaire et qu'il n'y a pas d'autre moyen, une méthode Get accessible au public est utilisée dans l'interface.

Oui... on ne peut s'empêcher de se demander ce qu'il y a dedans :) L'idée est d'avoir un langage de programmation adéquat, pour faciliter le débogage et l'écriture du code avec un minimum de gestes, et ici nous avons une situation complètement opposée...

 
Maxim Kuznetsov:

une telle chose montre que c'est vous qui, malheureusement, n'avez presque rien écrit :-(

un tel désordre dans le système !

Si seulement vous pouviez être moins émotif et réfléchi et plus précis dans vos discussions, vous ne vaudriez pas grand-chose. :)
 
Andrei:
Si vous avez déjà écrit un algorithme de calcul un peu complexe, vous avez dû remarquer qu'il y a toujours de nombreuses variables qui doivent être traitées plusieurs fois à différents endroits et que vous devez pouvoir contrôler à tout moment leurs valeurs dans différentes parties du programme... Comment ajouter à cette situation l'encapsulation de tout le contenu interne de l'objet dans le monde extérieur n'est pas clair.....

Bonjour.

Si un bloc a besoin de données provenant d'un autre bloc, une interface virtuelle appropriée est déclarée pour fournir cette capacité. Ici, ci-dessus, la fonctionnalité du processeur de transactions - est requise dans différentes parties du programme, dans le générateur d'entrées, dans le contrôleur de suivi et de sortie, dans le contrôleur de transactions stop. Chacun de ces blocs de programme - peut accéder à l'objet Expert Advisor, et obtenir l'interface du processeur commercial. Dans le même temps, personne n'a un accès direct à ce processeur, mais seulement à travers une interface prédéfinie.

Il en va de même à d'autres endroits - si certaines données sont requises - alors ce bloc doit fournir l'interface appropriée.

Le fait est que tout point du programme n'a accès qu'aux variables dont il a besoin, et n'a accès à aucune autre variable.

Raison: