CALCUL DE NOMBRES COMPLEXES, À L'AIDE D'UNE STRUCTURE SIMPLE, SURCHARGE DES OPÉR

Signaler
Messages postés
2375
Date d'inscription
jeudi 12 juillet 2001
Statut
Modérateur
Dernière intervention
15 décembre 2018
-
Messages postés
144
Date d'inscription
lundi 13 octobre 2003
Statut
Membre
Dernière intervention
21 décembre 2014
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/41897-calcul-de-nombres-complexes-a-l-aide-d-une-structure-simple-surcharge-des-operateurs-courants-et-conversions-implicites

Messages postés
144
Date d'inscription
lundi 13 octobre 2003
Statut
Membre
Dernière intervention
21 décembre 2014

De ce que j'ai compris, ils sont inutiles pour l'arithmétique parce qu'il n'existe pas d'interface Iarithmetic, (ou bien Iaddable + Isubstract + Imultipl + Idivise) et surtout on ne peut pas implémenter de tel interface car on ne peut pas ajouter les opérateurs dans les interfaces, aussi bien en VB que C#. Alors que apparement on peut le faire en C++, je devrais creuser la question mais je connais pas du tout C++.
Messages postés
1221
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018

Autant pour moi donc, mais je vais continuer à suivre l'affaire, car je suis déjà persuadé que les génériques ne sont pas aussi inutiles que ça (j'ai déjà utilisé un comparateur universel assez pratique pour trier facilement sur plusieurs clés n'importe quel tableau ou liste, ou bien pour sérialiser/désérialiser en une ligne de code n'importe quelle structure de données sérialisable), mais j'avoue que je n'ai pas bien saisi pourquoi certains pensent que les génériques sont inutiles pour l'arithmétique.
Messages postés
144
Date d'inscription
lundi 13 octobre 2003
Statut
Membre
Dernière intervention
21 décembre 2014

Après de longues recherches sur les génériques j'ai (enfin!) compris leur intérêt: exemple de déclaration:
Public Structure Complexe(of monType)
ensuite dans toute la classe je remplace Int32 par monType (!) ainsi je déclare les nombres complexes comme une partie réelel et une partie imaginaire en type générique (qui pourrait être Int32 comme ici, ou long ou double ou bien même une classe BigNum... de précision infinie... on peut rêver)
Sauf que, comme je viens de l'apprendre ici ( http://www.osnews.com/story.php/7930/The-Problem-with-.NET-Generics ) on ne peut pas implémenter d'interface iarithmetic en VB.NET (ni non plus C# apparement) ce qui nous interdit toute opération entre 2 variables déclarées as monType. on pourra au mieux utiliser une interface de comparaison (aucun intérêt pour les complexes). Et ça n'est d'aucune utilité par rapport à la surcharge des opérateurs entre un complexe et un numérique autre (int long double etc).
Messages postés
1221
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018

C'est indiqué ici :
http://fr.wikipedia.org/wiki/Nombre_complexe
Les nombres complexes ne peuvent pas avoir d'ordre.

Regarde d'abord à quoi servent les nombres complexes pour savoir ce qu'il est utile d'implémenter, à mon avis l'opérateur ^ ne sert pas à grand chose. Cependant, j'ai programmé les puissances 2, 3, 4 et 5 ici pour les images fractales :
http://patrice.dargenton.free.fr/fractal/FractalisSrc.html#228

Si tu utilises les génériques du DotNet2, normalement tu ne devrais pas avoir besoin de faire des surcharges pour chaque type (c'est justement l'intérêt de la chose).
Afficher les 11 commentaires