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

UML Discussion :

Conseil de modélisation de joueur - membre


Sujet :

UML

  1. #1
    Membre habitué Avatar de touftouf57
    Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2007
    Messages : 362
    Points : 174
    Points
    174
    Par défaut Conseil de modélisation de joueur - membre
    Bonjour à tous,

    Je me demande comment modéliser correctement:
    • visiteur
    • membre
    • administrateur


    A savoir que
    • un visiteur peut jouer sans se connecter
    • un membre peut jouer, se connecter et voter ou ajouter des "éléments" (s'il est connecté)
    • un administrateur peut valider et supprimer des "éléments"


    Première chose: est-ce que administrateur hérite de membre qui lui hérite de joueur?

    Les "éléments" peuvent être des histoires ou catégories
    Un catégorie peut contenir plusieurs histoires.

    Utiliseriez vous le dp strategy sur une Personne abstraite qui possède en donnée membre les différentes interfaces sur ce qui peut faire sur les éléments.
    Un peu comme cela est montré dans ce tutoriel UML.

    Nom : 129206.png
Affichages : 94
Taille : 9,4 Ko

    Mes interfaces serait suivant le format
    • NomInterface : méthodes
      • Nom des classes concrète


    • IVote : vote(Catégorie), vote(Histoire)
      • PeutVoter
      • PeutPasVoter
    • IValide : valide(Catégorie), valide(Histoire)
      • PeutValider
      • PeutPasValider
    • IAjoute : ajoute(Catégorie), ajoute(Histoire)
      • PeutAjouter
      • PeutPasAjouter

    (Ce ne serait pas les noms que je mettrais, mais cela est plus parlant ici.)

    De cette façon si on me demande d'ajouter une classe modérateur, je ne toucherais pas au reste de l'architecture.

    Maintenant si on me demande de rajouter une fonctionnalité du style voter pour une image La cela deviendrait un peu plus complexe, puisqu'il faudrait revoir le reste de l'architecture en ajoutant ceci dans les interfaces et donc dans les implémentations. J'avais pensé au DP Visitor, mais cela ne résout pas réellement le problème puisqu'il faut que toute la hiérarchie (joueur, membre, administrateur) soit définie.

    Pourriez-vous me conseiller la dessus? serais-je parti dans une mauvaise direction? Quel conseil me donneriez-vous? S'il y a un autre design pattern capable de résoudre ce problème? Je ne les connais pas tous, et je trouve certains incompréhensible.

    Merci d'avance à la communauté.

  2. #2
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 534
    Points : 6 723
    Points
    6 723
    Par défaut
    Bonjour,

    Citation Envoyé par touftouf57 Voir le message
    un membre peut jouer, se connecter et voter ou ajouter des "éléments" (s'il est connecté)
    ...
    Première chose: est-ce que administrateur hérite de membre qui lui hérite de joueur?
    Je suppose que joueur et visiteur sont pour vous une seule et même classe.

    Sauf erreur de ma part dans votre modèle un joueur devient un membre lorsqu'il se connecte, une instance ne peut changer de classe, si vous voulez faire cela alors vous devrez remplacer l'instance de joueur pas une instance de membre, avec tout ce que cela sous entend, et qui risque de ne pas être simple si c'est par exemple en cours de partie (si cela est possible). Je ne suis donc pas certain qu'il soit bien utile de complexifier votre modèle avec des classes différentes, il y a d'autres façon de gérer les droits

  3. #3
    Membre habitué Avatar de touftouf57
    Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2007
    Messages
    362
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2007
    Messages : 362
    Points : 174
    Points
    174
    Par défaut
    Citation Envoyé par bruno_pages Voir le message
    Bonjour,
    Je suppose que joueur et visiteur sont pour vous une seule et même classe.
    Et bien non justement. En suivant le diagramme précédent Personnage devient Personne et Joueur, Membre et Administrateur héritent de Personne.

    Voici les Constructeurs de ces classes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    public class Personne{
        private IVote iVote;
        private IAjoute iAjoute;
        private IValide iValide;
    
        public Personne(IVote ivote, IAjoute iajoute, IValide ivalide){
             this.iVote = ivote;
             this.iValide = ivalide;
             this.iAjoute = iajoute;
        }
    }
    
    public class Joueur extends Personne{
    ...
    //Constructeur de Joueur
    public Joueur(){
        super(new VotePas(), new AjoutePas(), new ValidePas());
    }
    
    
    public class Membre extends Personne{
    ...
    //Constructeur de Membre
    public Membre(){
        super(new Vote(), new Ajoute(), new ValidePas());
    }
    
    
    public class Administrateur extends Personne{
    ...
    //Constructeur de Administrateur
    public Administrateur(){
        super(new VotePas(), new AjoutePas(), new Valide());
    }
    Citation Envoyé par bruno_pages Voir le message
    Je ne suis donc pas certain qu'il soit bien utile de complexifier votre modèle avec des classes différentes, il y a d'autres façon de gérer les droits
    Comment feriez-vous alors?

  4. #4
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 534
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : ingénieur informaticien à la retraite
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2005
    Messages : 3 534
    Points : 6 723
    Points
    6 723
    Par défaut
    Citation Envoyé par touftouf57 Voir le message
    Personnage devient Personne et Joueur, Membre et Administrateur héritent de Personne.
    on ne c'est sans doute pas compris, ce que je voulais dire c'est qu'une instance ne peut pas changer de type

    Citation Envoyé par touftouf57 Voir le message
    Comment feriez-vous alors?
    j'utiliserai un simple attribut pour savoir ce qui est possible ou non de faire.

    le fait que vous ayez remarqué mais cela ne résout pas réellement le problème puisqu'il faut que toute la hiérarchie (joueur, membre, administrateur) soit définie. montre qu'il y a bien un problème

    les solutions les plus simples sont souvent les meilleures, mais faire simple est en fait difficile

Discussions similaires

  1. Réponses: 9
    Dernier message: 04/09/2013, 23h45
  2. Conseil de modélisation
    Par darkman19320 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 24/05/2013, 23h46
  3. Réponses: 4
    Dernier message: 09/11/2012, 10h54
  4. [PHP 5.3] [POO] Modéliser un espace membre
    Par saturn1 dans le forum Langage
    Réponses: 6
    Dernier message: 16/12/2008, 12h18
  5. Réponses: 7
    Dernier message: 26/05/2008, 00h05

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