IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Diagramme d'états-transitions (automates)


Sujet :

C#

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 467
    Points : 681
    Points
    681
    Par défaut Diagramme d'états-transitions (automates)
    Bonjour

    Ma question n'est forcement spécifique à c# - bien que ce soit pour coder avec.

    Je ne pense non plus qu'UML répondrait à ma demande

    Quelle est la meilleur implémentation pour un éditeur de formes graphique sommaire ?

    Par exemple pour créer (à la souris) un polygone quelconque... plusieurs étapes se suivent :
    [Debut] --(nouveau point)--> [Etat 1]
    [Etat 1] --(nouveau point)--> [Etat 1]
    [Etat 1] --(1er point & nb de points > 2)--> [Fin]

    Quelle méthode utiliser pour coder ces états et transitions !?

    Dans un sens j'y arrive... j'ai crée une classe gérant des messages intégrant des classes de type "états", etc...

    Ceci est sûrement un problème des plus classiques... pourtant je n'en ai lu aucune étude... à par bien sûr pour les automates d'états finis... mais là ce n'est pas seulement ça !

    Je n'ai jamais vu de pseudo-implémentations prenant en compte des actions par états !

    Avez-vous des pistes à m'indiquer ? Merci

  2. #2
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    rien compris
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 467
    Points : 681
    Points
    681
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    rien compris
    Au moins c'est clair !

    Ma question : Quel démarche aurais-tu pour coder un éditeur de formes graphiques ?

    Cette éditeur aurait plusieurs boutons (rectangle, ellipse, polygone, etc...)

    ... en évitant une grosse procédure (méthode) illisible prenant en compte tous les états et toutes transitions possibles...

    Chaque état entraine un affichage particulier.

    L'idée est qu'il soit possible à tous moments... de rajouté une action sans modifier le code existant.

  4. #4
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    alors si tu veux faire un designer de géométrie, va bien falloir mettre te remonter les manches, ca ne se fait pas en 2 lignes de code

    au mieux tu peux utiliser des interfaces ou de l'héritage pour avoir quelques comportements génériques, et donc pouvoir rajouter des éléments plus tard sans recoder la fenetre qui s'occupe de gérer ce que fait l'utilisateur

    et je te ne parles pas de la partie rendu !
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 467
    Points : 681
    Points
    681
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    alors si tu veux faire un designer de géométrie, va bien falloir te remonter les manches, ca ne se fait pas en 2 lignes de code
    C'est bien pourquoi il faut absolument partir sur une base saine.

    Citation Envoyé par Pol63 Voir le message
    au mieux tu peux utiliser des interfaces ou de l'héritage pour avoir quelques comportements génériques, et donc pouvoir rajouter des éléments plus tard sans recoder la fenetre qui s'occupe de gérer ce que fait l'utilisateur
    Ceci est une remarque beaucoup trop vague et je le sais bien.

    Pour faire un parallèle c'est comme si je demandais : "Comment programme proprement la reconnaissance de mots ?"

    La meilleur solution est de me diriger vers les expressions régulière et les automates à états déterministes.

    Seulement ma question est "Comment programmer proprement de multiples états ?"

    J'aimerai avoir à écrire seulement un diagramme d'états-transitions (comme en UML) en version code qui permettrait de se concentrer essentiellement sur le résultat désiré.

    Citation Envoyé par Pol63 Voir le message
    et je te ne parles pas de la partie rendu !
    Attention je ne demande absolument rien comme technique d'affichage de rendu.

    Je parle seulement d'ossature pour gérer des actions/réactions.

  6. #6
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    en fait je crois que tu utilises un jargon trop technique (scolaire ?) pour moi ...

    si tu cherches comment faire un designer de géométrie je ne vois pas ce qu'il y a à réfléchir de spécial sur les actions de l'utilisateur
    pour une ellipse l'utilisateur clic sur un point qui est un sommet de diagonale du rectangle incluant l'ellipse puis sur l'éloignement de la souris agrandir l'ellipse en considérant que le curseur est le sommet de diagonale opposé

    et si c'est sur l'implémentation dans le code, une interface avec des méthodes pour recevoir un clic, recevoir un mousemove et avertir que l'action est terminée ou non devrait aller (en gros)

    ou alors je comprends toujours pas ta question (par un manque de culture peut-être ...)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 467
    Points : 681
    Points
    681
    Par défaut
    ... et maintenant implémente la création d'un polygone quelconque.

    ... rajoute l'option de bouger un point particulier, un segment, etc...

    ... les conditions de sorties.

    ... la possibilité de rentrer les coordonnées des points manuellement...

    Perso en programmant tout directement avec la gestion classique d'évènement... le code ressemblera plus à rien !

    Chacune de ces actions sont indépendantes l'une de l'autre... elles auront chacune besoin de recevoir les évènements de cliques et postions de souris (entre autres)

    Que fais-tu pour coder ça proprement ?

  8. #8
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    en rajoutant plein de choses sur l'interface (IsSelected, PointsToShowIfSelected, IsMouseOver etc...)

    sur l'interface une fonction qui envoie les coordonnées du mousemove à tous les objets présents, le 1er à répondre "oui je considère que c'estun point qui permet de me sélectionner" fait que le curseur change pour montrer qu'on peut le sélectionner
    en cas de clic, on dit au machin que IsSelected = True (on mets les autres à false) puis on demande les PointsToShowIfSelected qui sont des points qui permettent de déplacer un point de polygone par exemple

    etc...


    enfin bref, il suffit de réfléchir, et c'est le boulot d'un développeur
    si tu n'es pas développeur et/ou que tu veux qu'on fasse le boulot à ta place je ne suis pas sûr que tu es au bon endroit
    et si quelqu'un voulait bien filer son code source de ca, il l'aurait mit quelque part et google pourrait te dire où
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 467
    Points : 681
    Points
    681
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    en rajoutant plein de choses sur l'interface (IsSelected, PointsToShowIfSelected, IsMouseOver etc...)

    sur l'interface une fonction qui envoie les coordonnées du mousemove à tous les objets présents, le 1er à répondre "oui je considère que c'est un point qui permet de me sélectionner" fait que le curseur change pour montrer qu'on peut le sélectionner
    en cas de clic, on dit au machin que IsSelected = True (on mets les autres à false) puis on demande les PointsToShowIfSelected qui sont des points qui permettent de déplacer un point de polygone par exemple
    etc...
    Ah là là ! Je dois être très fatigué... tu viens de me donner la "base" que je connais très bien... et que je ne te demandais pas.

    Citation Envoyé par Pol63 Voir le message
    enfin bref, il suffit de réfléchir, et c'est le boulot d'un développeur
    si tu n'es pas développeur et/ou que tu veux qu'on fasse le boulot à ta place je ne suis pas sûr que tu es au bon endroit
    et si quelqu'un voulait bien filer son code source de ca, il l'aurait mit quelque part et google pourrait te dire où
    On ne sait vraiment pas compris !

    Je veux le code de personne... en tous cas pas le code spécifique à la programmation graphique.

    Je cherche des infos sur la gestions de messages et d'états génériques... un "truc" qui pourrait servir à tout autre chose que la création de formes.

    Vois-tu (dis moi si j'ai tort) j'ai l'impression que tu mets tout au même niveau.

    Tu serais entrain de créer une rectangle, un cercle ou un polygone... L'état du programme serait simplement indiqué dans une variable (globale) et en fonction de celle-ci tu afficherais soit ton rectangle, cercle ou polygone.

    C'est ce que je veux éviter car chacun des états peut avoir des variables spécifiques et il n'y a aucune raison que les autres états les "voient".

    - Désolez de t'avoir fait perdre ton temps

  10. #10
    Expert éminent sénior Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Citation Envoyé par ijk-ref Voir le message
    - Désolé de t'avoir fait perdre ton temps
    pareillement
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  11. #11
    Membre éclairé
    Homme Profil pro
    Développeur / architecte
    Inscrit en
    Juillet 2009
    Messages
    473
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur / architecte

    Informations forums :
    Inscription : Juillet 2009
    Messages : 473
    Points : 674
    Points
    674
    Par défaut
    Citation Envoyé par ijk-ref Voir le message
    J'aimerai avoir à écrire seulement un diagramme d'états-transitions (comme en UML) en version code qui permettrait de se concentrer essentiellement sur le résultat désiré.
    Je connais pas ce domaine, mais saches en tout cas que tu peux justement implémenter le fameux design pattern d'état qui te permet entre autres de modéliser le diagramme d'état transition.

  12. #12
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 467
    Points : 681
    Points
    681
    Par défaut
    Merci...

Discussions similaires

  1. Réponses: 5
    Dernier message: 28/08/2008, 15h17
  2. Réponses: 5
    Dernier message: 11/06/2008, 19h51
  3. Problème diagramme d'états transition Bouml
    Par LinuxUser dans le forum BOUML
    Réponses: 4
    Dernier message: 25/11/2007, 15h28
  4. Différence entre diagramme d'activité et diagramme d'états transition
    Par Dark-Water dans le forum Autres Diagrammes
    Réponses: 1
    Dernier message: 23/01/2007, 15h12
  5. [Etat-Transition] Peut on montrer plus d'une classe dans un diagramme d'état-transition ?
    Par thebloodyman dans le forum Autres Diagrammes
    Réponses: 5
    Dernier message: 12/01/2006, 13h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo