OOP, templates et macros dans mql5, subtilités et utilisations - page 7

 
Ilya Malev:

À mon avis, ce n'est pas si mal. Il n'y a pas tant d'interfaces de base en C#, à mon avis (je ne suis pas un expert en C#), que leurs méthodes ne peuvent pas être réduites à une superclasse de base, puis héritées par quiconque a besoin de quoi...

Que voulez-vous dire par "hériter de qui a besoin de quoi" ? hériter non pas de la classe entière mais d'une partie de celle-ci ? ) Je ne connais pas une telle fonction
 
Alexey Navoykov:
Que voulez-vous dire par "hériter de ce dont vous avez besoin" ? hériter non pas de toute la classe mais d'une partie de celle-ci ? ) Je ne suis pas familier avec une telle fonctionnalité.

Non, je voulais dire définir de nombreuses fonctions virtuelles et les surcharger dans les héritages si nécessaire.

 
Ilya Malev:

Non, je voulais dire définir de nombreuses fonctions virtuelles et les surcharger dans les héritages si nécessaire.

C'est le chaos total et l'absence de contrôle. Les interfaces définissent des méthodes abstraites qui doivent être implémentées, pas "par nécessité". Et avec votre approche, si vous oubliez de surcharger une méthode quelque part, le programme sera compilé comme si rien ne s'était passé, mais au lieu de la méthode nécessaire, il sera appelé dummy.
 
Alexey Navoykov:
C'est le chaos total et l'incontrôlabilité. Les interfaces définissent des méthodes abstraites qui doivent être implémentées, pas "par nécessité". Cela garantit l'implémentation de ces méthodes au niveau de l'objet. Et avec votre approche, si vous oubliez de surcharger une méthode quelque part, le programme sera compilé comme si rien ne s'était passé mais le programme sera appelé au lieu de la méthode nécessaire.

Pas un blanc, mais une exception "non mise en œuvre". En C#, c'est un peu partout.

 
Alexey Navoykov:
... Si vous oubliez de surcharger une méthode quelque part, le programme sera compilé comme si de rien n'était, mais au lieu de la méthode requise, une méthode vide sera appelée. C'est normal...

C'est ainsi que cela fonctionne dans MQL, d'ailleurs ;(.

 
Ilya Malev:

Pas un blanc, mais une exception "non mise en œuvre". Dans le C# également, il semble que tout soit éparpillé.

Ce n'est pas le problème, vous proposez d'attraper les bogues au moment de l'exécution, alors que ces bogues peuvent (et devraient) être attrapés au moment de la compilation.
 
Vasiliy Sokolov:

C'est ainsi que cela fonctionne dans MQL, d'ailleurs ;(

Vous voulez dire leur bibliothèque standard? )
 
Alexey Navoykov:
Ce n'est pas la question. Vous proposez de détecter les bogues au moment de l'exécution, alors que ces bogues peuvent (et devraient) être détectés au moment de la compilation.

Je pense que c'est mieux que de construire des structures comme le modèle <,,,,,,,> pour les classes. Cela vous brisera le cerveau avant que vous n'ayez fini de construire un tel "système de classes".

 
Ilya Malev:

Je pense que c'est mieux que de construire des structures comme le modèle <,,,,,,,> pour les classes. Cela vous brisera le cerveau avant que vous n'ayez fini de construire un tel "système de classes".

Je préfère me creuser les méninges avec le compilateur, mais je serai sûr que mon programme est garanti de fonctionner correctement et qu'une méthode fonctionnelle est appelée plutôt que quelque chose d'autre.
 
Alexey Navoykov:
Je préfère me creuser les méninges avec le compilateur, mais je serai sûr que mon programme est garanti de fonctionner correctement et qu'une méthode fonctionnelle est appelée, et non pas quelque chose de fou.

Si l'ensemble a une classe de base simple, qui apparaît partout, et qu'ensuite les casts dynamiques disparaissent, cela peut fonctionner).

Raison: