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

Diagrammes de Classes Discussion :

Modélisation des Singletons


Sujet :

Diagrammes de Classes

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 6
    Par défaut Modélisation des Singletons
    Bonjour,

    Je cherche la syntaxe UML pour modéliser une classe singleton.
    Mon singleton, que j'appelle cnxAppro est utilisé pour réaliser une connexion à une base de données.
    La plupart de mes recherches aboutissent à une solution dans laquelle le terme "Singleton" est utilisé pour le nom de la classe.
    J'ai également trouvé une solution où une multiplicité de 1 était indiquée au dessus du nom de la classe.
    Quelle est la syntaxe UML2 recommandée ?

    Autre chose, la plupart des articles parlent de classe à instance unique alors qu'un singleton est une classe non instanciable. Est-ce un abus de langage pour parler en fait de la propriété statique nommée par convention "instance" ?

    Merci d'avance pour vos réponses.

  2. #2
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    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 545
    Par défaut
    Bonjour,

    vous avez plusieurs entrée dans la FAC conception discutant du singleton

    le terme "Singleton" est utilisé pour le nom de la classe
    non, sinon on ne pourrait avoir qu'une classe de ce nom en dehors de l'utilisation d'espaces de noms (package, namespace ...), et puis ce ne serait vraiment un très mauvais nommage pour une classe car on ne dirait pas ce à quoi elle sert

    la plupart des articles parlent de classe à instance unique alors qu'un singleton est une classe non instanciable
    il s'agit bien de classes a instance unique ... d'où le nom de singleton

    le plus visible en UML pour indiquer d'une classe est un singleton est de la stéréotypée singleton

    cependant si on voit qu'une classe à une opération instance , une relation de classe (static) vers elle même de multiplicité 0..1 et des constructeur/destructeur privés alors il y a une très forte chance qu'il s'agisse bien d'une classe singleton :
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  3. #3
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 6
    Par défaut
    Bonjour et merci pour cette réponse.

    Il est évident que le terme singleton ne peut être utilisé pour nommer une classe.
    Les divers exemples que l'on trouve utilisent ce nom mais ne précisent pas comment distinguer un singleton d'un autre type de classe. (ex. nom en italique pour une classe abstraite)

    Si l'on souhaite présenter un diagramme de classe "allégé" cad ne comportant que la partie interface (membres publics), l'identification d'un singleton ne pourra se faire au travers de la lecture de ses membres privés...

    L'utilisation d'un stéréotype me parait intéressante mais est-ce bien ce qui est préconisé en UML ou mieux vaut-il utiliser une relation réflexive ?

    Concernant l'utilisation du terme "classe à instance unique", je ne comprends toujours pas.
    Les instances ne sont-elles pas des objets de la classe au même titre que des occurrences sont des exemplaires d'une entité ?
    Pour moi, instancier une classe c'est créer des objets, des exemplaires pour cette classe.
    Chose qui n'est plus possible avec un singleton vu que le constructeur est privé !

    La classe devient finalement une structure qui permet de définir une variable (l'attribut de classe nommé instance) ayant une portée globale et n'étant pas redéfinie si cela a déjà été fait (rôle de la méthode de classe getInstance())

    En espérant avoir été suffisamment clair

  4. #4
    Modérateur
    Avatar de bruno_pages
    Homme Profil pro
    ingénieur informaticien à la retraite
    Inscrit en
    Juin 2005
    Messages
    3 545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    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 545
    Par défaut
    Citation Envoyé par NickRUN Voir le message
    (ex. nom en italique pour une classe abstraite)
    ce n'est pas la même chose : cette notation fait parti de la norme UML

    Citation Envoyé par NickRUN Voir le message
    L'utilisation d'un stéréotype me parait intéressante mais est-ce bien ce qui est préconisé en UML ou mieux vaut-il utiliser une relation réflexive ?
    la norme ne préconise rien pour singleton

    l'implémentation utilisera très probablement une relation réflexive (privée), mais cela n'est pas déterminant en soi seul pour indiquer qu'il s'agit d'un singleton, par contre une opération instance() est plus marquant, mais moins que l'utilisation d'un stéréotype

    Citation Envoyé par NickRUN Voir le message
    ...
    Chose qui n'est plus possible avec un singleton vu que le constructeur est privé !
    oui, il est privé pour que seules les opérations de la classe puissent l'appeler, mais en fait dans l'implémentation c'est généralement l'opération instance qui créé l'unique instance lors de son premier appel

    je ne comprends pas votre problème, et l'instance même si elle est unique n'a rien de particulier par rapport aux instances des autres classes

    Citation Envoyé par NickRUN Voir le message
    La classe devient finalement une structure...
    non, pourquoi ce coté réducteur à propos d'une classe sous pretexte qu'elle n'a qu'une instance ?

    avez-vous lu ce qui concerne singleton dans la FAC conception (théorie et implémentation) ?
    Bruno Pagès, auteur de Bouml (freeware), mes tutoriels sur DVP (vieux, non à jour )

    N'oubliez pas de consulter les FAQ UML et les cours et tutoriels UML

  5. #5
    Membre à l'essai
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 6
    Par défaut
    Voilà ce qui me dérange : cette notion de classe à instance unique.
    Vous écrivez à propos du constructeur :
    Citation Envoyé par bruno_pages Voir le message
    oui, il est privé pour que seules les opérations de la classe puissent l'appeler,...
    Tout à fait d'accord pour un singleton car un constructeur privé interdira la création d'une nouvelle instance.
    Dans mon cas (en PHP), j'utilise un singleton nommée "CnxAppro" pour me connecter à une BD via PDO.

    Lorsque je souhaite exécuter une requête, j'utilise l'instruction suivante : CnxAppro::getInstance()->query($uneRequete);

    Tout fonctionne parfaitement mais pour moi, il n'y a pas de création d'instance de la classe CnxAppro.
    La création d'une instance passerait par l'instruction : $cnx = new CnxAppro;
    Ce qui bien entendu n'est pas possible vu que le constructeur est privé.
    A noter que dans mon cas, le constructeur ne fait rien et qu'il n'est appelé par aucune méthode de classe.
    Citation Envoyé par bruno_pages Voir le message
    non, pourquoi ce coté réducteur à propos d'une classe sous pretexte qu'elle n'a qu'une instance ?
    C'est vrai, il y avait un brin de provocation
    Citation Envoyé par bruno_pages Voir le message
    avez-vous lu ce qui concerne singleton dans la FAC conception (théorie et implémentation) ?
    En partie. Mon cas est je pense relativement simple par rapport aux problèmes soulevés.
    Il y a certainement quelque chose que je n'ai pas encore saisi.
    Je vais approfondir...

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/12/2006, 16h54
  2. A propos des singletons
    Par zenux dans le forum C++
    Réponses: 1
    Dernier message: 19/11/2006, 09h30
  3. Modéliser des modèles de documents
    Par raoudi57 dans le forum Débuter
    Réponses: 5
    Dernier message: 10/11/2005, 20h23
  4. Modélisation des systèmes multiagents
    Par IMANE_nadjat dans le forum Intelligence artificielle
    Réponses: 1
    Dernier message: 10/11/2005, 11h00
  5. [Language][DAO]Pourquoi pas des Singletons ?
    Par le Daoud dans le forum Langage
    Réponses: 11
    Dernier message: 04/05/2005, 09h16

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