Prog objet
Bonjour,
Je voudrais qq renseignement sur la serialisation et le singleton (code+explication)je vous remercie
cordialement,
alex
--
"L'union fait la force mais qui fera l'union ?"
Je voudrais qq renseignement sur la serialisation et le singleton (code+explication)je vous remercie
cordialement,
alex
--
"L'union fait la force mais qui fera l'union ?"
Configuration: Windows XP Firefox 3.0.3
9 réponses
-
Modérateurhttp://fr.wikipedia.org/wiki/Singleton_(patron_de_conception)
https://fr.wikipedia.org/wiki/Serialisation -
merci bien mais si jevoulais des explications comme celle la jirai voir sur les peu de poly que j'ai dessu mais je comprends pas trop la poo sur ces points et jaurai voulu des "tuyau" par des explication brute ^^
-
okok désolé de mes propos trop flou
voila je suis en c# on a vu la notion de singleton mais on a u tt un code a recopier alors pour la compréhension bjr!
Donc voila j'aurais aimer savoir se que l'ou doit retrouver dans une classe singleton et pourquoi se nom aussi? lol
et si j'vais tu as des idées de pti ( programme en poo donc)
merci-
ModérateurUn singleton c'est une classe qui ne peut avoir qu'une seule instance.
Là où ça se gère, c'est au niveau du constructeur.
Le singleton est un des rares cas ou le constructeur est privé. Parce que s'il on l'utilise directement on a toujours une nouvelle instance.
A la place on utilise une méthode statique qui va te renvoyer toujours la même instance.
Donc:
_ Une variable statique (privée pour pas qu'on la modifie de l'exterieur) qui contient la référence vers ton instance unique.
_ Une méthode statique qui te renvoies cette référence.
L'algo de la méthode statique est simple: si instanceUnique = NULL alors instanceUnique = new Constructeur() puis retourner instanceUnique.
Pour tes ptis ben ça dépend de toi, de ce qui t'interesse :-)
-
-
si tu na pa dinstance il faut en creer une ok
Mais le constructeur il instancie kel objet??
desolé c'est encore tres flou pour ma part ...-
ModérateurL'objet de la classe courante.
Dit moi ce que tu comprends pas là-dessous (c'est du java mais la syntaxe est proche de C#)class Singleton { static private uniqueInstance = null; static Singleton getInstance() { if (uniqueInstance == null) { uniqueInstance = new Singleton(); } return uniqueInstance; } private Singleton() { } }
-
-
Tout d'abord on déclare une classe singleton.
dans cette classe on definit en static (disponible partout) uniqueInstance qui est nulle(procedure, variable???)
Apres on déclarer une méthode de la classe singleton, getinstance sans parametre qui est une procédure(accesseur?)
on dit que si uniqueInstance est nulle on l'instancie avec le constructeur et l'on retourne donc uniqueInstance
le procedure singleton() est le constructeur
-
static private ? oui peut etre en fait! lol
On nous a dit que static ete lequivalent du module en vbnet c'est a dire une methode disponible partout dans le programme alors static private nan je suis perdu la! ^^
-
ModérateurTu n'es pas le premier sur ce forum qui a des confusions sur la notion de "static". Effectivement sans ça c'est difficile de comprendre le fonctionnement d'un singleton.
Je vais écrire une astuce pour expliquer ça, et tu me diras si tu comprends. Sinon je la complèterai jusqu'à ce que tu comprennes :-)
-
-
merci bcp! j'atten le lien avec impatience!!!
-
-
Contributeur@kilianTrès bon tutoriel. J'aurais juste ajouté (dans Ce que ne peuvent pas faire les méthodes statiques) qu'on peut appeler une méthode statique sans instancier la classe, étant donné qu'on n'est pas dans un contexte d'instance.
Bravo. -
Modérateur@Marco la baraqueMerci.
Oui effectivement y'a quelques trucs comme ça que j'ai pas encore détaillés.
Genre le fait d'affecter une valeur de départ dans la classe ne s'applique qu'une seule fois.
Le fait que static en C ne signifie pas la même chose.
Le fait qu'on peut accéder aux méthodes statiques depuis l'instance....
Bref ça mérite d'être complété :-)
-
-
woow merci bcp a toi kilian t'as assuré! :):D
-
oui bcp! merci !! avec ton tuto et l'aide de mes prof je deviens un as en poo jcrois bien !(h) lol
merci encore!