Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1271 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  set & get

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

set & get

n°2136771
futur_inge​nieur
Posté le 16-04-2012 à 03:11:55  profilanswer
 

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  :pfff:  
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 :)  

mood
Publicité
Posté le 16-04-2012 à 03:11:55  profilanswer
 

n°2136772
Terminapor
I'll see you rise.
Posté le 16-04-2012 à 04:14:17  profilanswer
 

C'est par rapport au classes, pour modifier/récupérer des variables private (ou alors aucun rapport :D)


---------------
Perhaps you don't deserve to breathe
n°2136773
futur_inge​nieur
Posté le 16-04-2012 à 04:25:34  profilanswer
 

Terminapor a écrit :

C'est par rapport au classes, pour modifier/récupérer des variables private (ou alors aucun rapport :D)


merci mais je n'ai pas compris !  :ouch:

n°2136774
Terminapor
I'll see you rise.
Posté le 16-04-2012 à 05:00:09  profilanswer
 

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)


---------------
Perhaps you don't deserve to breathe
n°2139082
Malkav
Posté le 25-04-2012 à 17:04:36  profilanswer
 

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 :
  1. void setMonAttributA(const TypeA &val)
  2. const TypeA &getMonAttributA() const
  3. void setMonAttributB(const TypeB &val)
  4. const TypeB &getMonAttributB() const

Message cité 1 fois
Message édité par Malkav le 25-04-2012 à 17:06:11

---------------
Mes feedbacks * Ma galerie photo
n°2139100
theshockwa​ve
I work at a firm named Koslow
Posté le 25-04-2012 à 18:32:13  profilanswer
 

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.
 
A noter qu'il y a un set/get pour CHAQUE attribut et que les noms des méthodes seront du genre :
 

Code :
  1. void setMonAttributA(const TypeA &val)
  2. const TypeA &getMonAttributA() const
  3. void setMonAttributB(const TypeB &val)
  4. const TypeB &getMonAttributB() const



 
getter/setter.
 
En général, en C++, on utilise plutôt la surcharge de const pour ce genre de fonctionnalité :
 

Code :
  1. TypeA& AttributA() { return attributA; }
  2. const TypeA& AttributA() const { return attributA; }


---------------
last.fm
n°2140944
I_m_back
Posté le 06-05-2012 à 09:50:27  profilanswer
 

theshockwave a écrit :


 
getter/setter.
 
En général, en C++, on utilise plutôt la surcharge de const pour ce genre de fonctionnalité :
 

Code :
  1. TypeA& AttributA() { return attributA; }
  2. const TypeA& AttributA() const { return attributA; }



 
Quel est l’intérêt de ce genre de fonctions, par rapport à rendre publique le membre ?


---------------
Ta peau de nacre noir, la courbe de ton cul
n°2140978
theshockwa​ve
I work at a firm named Koslow
Posté le 06-05-2012 à 16:05:45  profilanswer
 

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. [:jagstang]


---------------
last.fm
n°2140993
Joel F
Real men use unique_ptr
Posté le 06-05-2012 à 17:45:46  profilanswer
 

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.

n°2141061
I_m_back
Posté le 06-05-2012 à 22:08:24  profilanswer
 

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)

Message cité 1 fois
Message édité par I_m_back le 06-05-2012 à 22:10:21

---------------
Ta peau de nacre noir, la courbe de ton cul
mood
Publicité
Posté le 06-05-2012 à 22:08:24  profilanswer
 

n°2141174
theshockwa​ve
I work at a firm named Koslow
Posté le 07-05-2012 à 12:55:13  profilanswer
 

I_m_back a écrit :

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)


 
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.


---------------
last.fm
n°2141229
I_m_back
Posté le 07-05-2012 à 18:05:01  profilanswer
 

theshockwave a écrit :


 
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.


 
Ok, note que je ne posais pas la question pour t'emmerder, je suis curieux de savoir pourquoi c'est répandu  :jap:


---------------
Ta peau de nacre noir, la courbe de ton cul
n°2141270
breizhbugs
Posté le 08-05-2012 à 00:12:04  profilanswer
 

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 :
  1. int maclasse::SetAttribut(int val)
  2. {
  3.      if (val >=maclasse::borneinf && val =< bornesup)
  4.            attribut = val
  5.      return attribut;
  6. }


---------------
Seul Google le sait...

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  set & get

 

Sujets relatifs
Plus de sujets relatifs à : set & get


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR