set & get - C++ - Programmation
Marsh Posté le 16-04-2012 à 04:14:17
C'est par rapport au classes, pour modifier/récupérer des variables private (ou alors aucun rapport )
Marsh Posté le 16-04-2012 à 04:25:34
Terminapor a écrit : C'est par rapport au classes, pour modifier/récupérer des variables private (ou alors aucun rapport ) |
merci mais je n'ai pas compris !
Marsh Posté le 16-04-2012 à 05:00:09
Quand tu as une classe, ses attributs (variables) sont en général placés en private, c-a-d que seule une instance de cette classe peut modifier ces variables.
Le principe c'est de créer des accesseurs (fonctions tout bête) qui permettent de récupérer les valeurs de ces variables privées (get), ou de les modifier (set)
Marsh Posté le 25-04-2012 à 17:04:36
je ne sais pas si c'est toujours d'actu, mais on parle de méthode get/set ou d'accesseurs (accessors) voire de gettor/settor quand il s'agit d'ajouter les méthodes d'accès en lecture (get) et écriture (set) à un attribut d'une classe.
A noter qu'il y a un set/get pour CHAQUE attribut et que les noms des méthodes seront du genre :
Code :
|
Marsh Posté le 25-04-2012 à 18:32:13
Malkav a écrit : je ne sais pas si c'est toujours d'actu, mais on parle de méthode get/set ou d'accesseurs (accessors) voire de gettor/settor quand il s'agit d'ajouter les méthodes d'accès en lecture (get) et écriture (set) à un attribut d'une classe.
|
getter/setter.
En général, en C++, on utilise plutôt la surcharge de const pour ce genre de fonctionnalité :
Code :
|
Marsh Posté le 06-05-2012 à 09:50:27
theshockwave a écrit :
|
Quel est l’intérêt de ce genre de fonctions, par rapport à rendre publique le membre ?
Marsh Posté le 06-05-2012 à 16:05:45
I_m_back a écrit : Quel est l’intérêt de ce genre de fonctions, par rapport à rendre publique le membre ? |
Juste ce qui me vient à l'esprit là :
Robustesse vis-à-vis du futur: Dans le cas d'utilisation général, c'est inliné donc ca ne change strictement rien. Si un jour, tu déplaces ce membre dans une autre classe ou autre, ton interface n'a pas changé, ton code client n'a pas besoin d'être modifié.
Facilité de debug ou de monitoring de ta variable ...
Après, ca reste un système de getter/setter et je vais pas en vanter les mérites.
Marsh Posté le 06-05-2012 à 17:45:46
Ensuite, si tu as une classe remplie de ste/get c'ets que sa semantique est foireuse. Une classe doit proposer un *contrat* implanter dans son *interface* et non pas etre vu comme un simple tas de variables.
Si tu as besoin d'un tas de valeurs coalescer sans semantqieu, une structure avec membre publique suffit.
Marsh Posté le 06-05-2012 à 22:08:24
Ma question n'étais pas totalement innocente :
En retournant directement une référence sur la variable membre (pour le setter), tu interdis de fais un contrôle sur les valeurs que peuvent prendre ce membre.
Pour moi au final, avoir ce genre d'interface revient exactement à rendre publique le membre, à part effectivement de te laisser la possibilité de le renommer (la belle affaire )
En gros, ce que je veux dire et la question que je me pose, c'est pourquoi tu dis qu'en C++, c'est ce genre d'interface qui est faite plutôt qu'un getX et setX (que j'aurais plutôt tendance à proposer)
Marsh Posté le 07-05-2012 à 12:55:13
I_m_back a écrit : Ma question n'étais pas totalement innocente : |
Mon intervention était plutôt pour signaler une pratique courante que la défendre, donc je ne vais pas chercher à me faire l'avocat du diable.
Marsh Posté le 07-05-2012 à 18:05:01
theshockwave a écrit : |
Ok, note que je ne posais pas la question pour t'emmerder, je suis curieux de savoir pourquoi c'est répandu
Marsh Posté le 08-05-2012 à 00:12:04
Bonsoir,
J'image que si un attribut a une plage de valeur autorisée restreinte par exemple, le setter int SetAttribut(int val) doit vérifier que val est dans la plage de valeur autorisée avant d'effectuer l'affectation:
Code :
|
Marsh Posté le 16-04-2012 à 03:11:55
Salut tout le monde , svp pouvez vous m'aider : je veux avoir une idèe à propos les fonctions 'set ' and 'get' en C++ , je doit l'utiliser dans mon projet c++ , pourtant on ne l'a pas rencontré dans les sèances de cours
NB : svp je ne veux pas des messages de genre "nous sommes pas là pour faire votre boulot .... " [c'est assez frèquent] tout ce que je demande est de savoir de quoi s'agit ceci pour que je puisse entammer le travail