1. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

TUTO Les énumérations

Discussion dans 'Windev' créé par haffar, Juin 5, 2018.

  1. haffar

    haffar Member

    Inscrit:
    Juin 5, 2018
    Messages:
    30
    J'aime reçus:
    63
    En aparté de mon tutoriel sur la création d'un Casse-Brique et l'initiation en douceur à la POO, j'aborderai aujourd'hui le potentiel et la puissance des énumérations.

    Problématique :
    dès lors qu'un code source devient fourni, on retrouve très vite des valeurs numériques ou des chaines de caractères répétitives que l'on doit tester fréquemment.

    Exemple : dans le cas du jeu de casse-briques, admettons le cas de figure ou ma balle à des comportements exclusifs :

    CAS 1 : ma balle est une balle normale
    CAS 2 : ma balle est plus rapide
    CAS 3 : ma balle est traversante, elle ne rebondit pas et détruit tout sur son passage
    CAS 4 : ma balle est fourbe, elle change d'angle de manière imprévisible à chaque collision
    CAS 5 : etc ...

    Classiquement, un code pas très lisible (mais très courant admettons le) serait :

    [​IMG]
    Une version un peu plus lisible en serait :
    [​IMG]

    Mais QUID des cas complexes, lorsque vous avez plein de variables utilisant ce genre de numérotation ? LE code devient vite illisible, surtout lorsqu'on travaille en équipe, mais aussi en solo lorsqu'on revient plusieurs mois plus tard sur un ancien projet, et qu'on ne se souvient plus à quel numéro correspond quoi, ou pire, si le numéro existe, ou si l'on ne confond pas :

    SI (TypeBrique=12 Et TypeMissile=5) OU (TypeBrique=11 Et TypeRaquette=2:relievedface: ALORS
    RENVOYER 1
    SINON
    RENVOYER -2
    FIN *

    * Toute ressemblance avec un paquet de nœud que vous trouveriez aussi dans votre propre code source est purement fortuite.

    Les énumérations à la rescousse :
    C'est à ce stade qu'interviennent les énumérations, qui répondent à plusieurs objectifs :
    - d'abord rendre le code beaucoup plus lisible
    - ensuite empêcher une valeur non déclarée d'être affectée.
    - enfin de disposer de certains automatismes "plutôt magiques" dans le code, et les assistants windev.

    Reprenons notre exemple de Type de Brique avec une énumération :
    [​IMG]

    Vous ne pouvez plus jamais vous tromper, car si j'essaye d'affecter une autre valeur que celles listées, windev me l'interdit :
    [​IMG]

    Note, vous n'êtes pas obligés d'attribuer des valeurs aux éléments de votre énumération, vous pouvez vous en tenir à gérer des noms abstraits. Puisque dans la plupart des cas, votre code n'aura besoin que de jongler avec des sémantiques, vous n'aurez donc plus à vous soucier de savoir à quel numéro correspond quoi. On peut donc écrire tout aussi bien :
    [​IMG]


    Dans ce contexte, windev attribue une valeur arbitraire à chaque élément, mais géré en interne, nous n'avons plus à nous en soucier. C'est utile pour gérer des concepts.

    Par contre si vous désirez que vos énumérations soient liées d'une certaine manière à un élément physique (numéro existant, nom de fichier sur disque, ou chaîne ayant un sens particulier dans votre conception métier, alors utilisez les affectations lors de la définition de vos Énumérations. Voici un autre exemple, via l'utilisation de valeurs de type "chaîne" :

    [​IMG]


    Usage des énumérations en paramètre d'une procédure, et au moment de renvoyer une valeur :

    Les énumérations sont aussi des types qui peuvent être exploités comme valeur de retour.
    [​IMG]

    Fini les chiffres illisibles !

    Astuce : dans ce dernier cas de figure, et pourvu que vous ayez bien recompilé le projet une fois vos énumérations définies, l'assistant de code de windev vous mâche le travail lorsque vous saisissez SELON + une variable de type énuméré.

    Il génère le code de lui même tous les CAS, sans que vous ayez à les saisir.
    Essayez, c'est magique !



    Il existe encore d'autres possibilités associées aux énumérations, mais elles sont un peu plus marginales, je vous renvoie donc à la documentation de PCSOFT, le but de ce tutoriel était de vous en faire comprendre la subtilité et l'utilité au quotidien.

    Limite des énumérations : on ne peut avoir qu'un seul état attribué simultanément. Autrement dit, votre livraison ne peut par exemple pas dans ce cas de figure être possible à la fois le Lundi et le Mardi. (pour reprendre l'exemple des jours ouvrables). Nous verrons dans un prochain tuto que pour gérer des cas multiples, un autre type de données peut s'avérer utile.

    Source :

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

     
    #1 haffar, Juin 5, 2018
    Dernière édition: Juin 5, 2018
    Tags:
  2. charlie

    charlie Active Member
    MEMBRE WX

    Inscrit:
    Jan 1, 2018
    Messages:
    205
    J'aime reçus:
    190
    houlà, ton code me donne des idées pour modifier le mien, merci!
     

Partager cette page

Chargement...