Get set

chouchoune80 Messages postés 10 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 10 novembre 2009 - 13 août 2008 à 00:14
jmistinguette Messages postés 1 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 25 juin 2009 - 25 juin 2009 à 12:04
Bonjour,

je pense que ma question va en faire sourire plus d'un mais bon je me lance......Voila je développe depuis peu et j'aurai voulu savoir à quoi sert la fonction  get et set et dans quels cas l'utiliser? Apres plusieurs recherche sur le net et notamment sur msdn j'avoue ne pas comprendre le fonctionnement et l'interet de ces fonctions.

Merci .
A voir également:

6 réponses

lemmingperceval Messages postés 128 Date d'inscription mardi 18 décembre 2007 Statut Membre Dernière intervention 2 août 2009 6
13 août 2008 à 04:44
Salut,
Cela s'appel l'encapsulation.
En règle généralw, l'idée est d'atteindre ta variable de visibilité private au travers d'une méthode public.
Cela te permet d'effectuer des tests ou je ne sais quoi d'autre lorsque tu assigne ou que tu récupère le contenu de ta variable.

Par exemple:
Tu programme, pour les avions de ligne, un logiciel qui permet de règler l'inclinaison des pales(haut/bas):
//Class représentant un avion
publicclassFlight
{
      
// System.Single repr‚sentant l'inclinaison des pales de l'avion. (private)
      public
float inclinaison;
}

Imagine qu'une personnes accède à ta variable depuis un morceau de code externe et lui assigne -90°
//La variable est public, on peut lui assigner n'importe quelle valeur float.
myFlightInstance.inclinaison = -90;

Hop, ton avions pique à -90° en plein vol et c'est est fini pour tous ces passagers.

Avec l'encapsulation, tu donneras à la variable inclinaison la visibilité private, et tu créeras une méthode get-set public qui testera la valeur que l'on essaie d'assigner à la variable inclinaison:
public
class
Flight
{

      // System.Single représentant l'inclinaison des pales de l'avion.
      private
float inclinaison;

      //
Obtient ou défini un System.Single représentant l'inclinaison des pales de l'avion.
      public
float Inclinaison
      {

            get
            {
                  
return inclinaison;
            }

            set
            {
                  //On admet que les pales de l'avions peuvent avoir une inclinaison maximale de -30°

                  if (
value >= -30)
                        inclinaison =
value;

                  //Si la valeur est plus petite, on déclenche une exception, par exemple.
                  else
                        throw
new
Exception();

            }
      }
}

Maitenant, lorsque l'on assignera une valeur à la variable inclinaison, on passera par la propriété (méthode get-set de la variable) et le test sur la valeur sera effectué.

Personnellement, le nom de la variable commence avec une minuscule (inclinaison) et la propriété avec une majuscule(Inclinaison):

Mais à toi de voir comment tu veux faire, chacun son style.

Bon, moi je vais me recoucher.
Si tu as pas compris quelques choses, n'hésite pas
1
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
13 août 2008 à 08:10
Salut,
Il y a également d'autres avantages, comme par exemple le fait que les properties sont abondamment utilisées pour le binding.
Y'avait un topic assez intéressant sur le forum à ce sujet, mais c'est assez vieux et j'ai pas le courage de me lancer dans une recherche

<hr />
-My Blog-
0
chouchoune80 Messages postés 10 Date d'inscription lundi 28 janvier 2008 Statut Membre Dernière intervention 10 novembre 2009
13 août 2008 à 10:15
Merci beaucoup!!

C'est plus clair que sur msdn....Rien ne vaut un exemple.
Encore merci : )
0
MorpionMx Messages postés 3466 Date d'inscription lundi 16 octobre 2000 Statut Membre Dernière intervention 30 octobre 2008 57
13 août 2008 à 11:33
Je crois que c'est ce sujet Bidou : http://www.csharpfr.com/infomsg_PROPERTY-AVANTAGES-REELS_829746.aspx

Mx
MVP C# 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
13 août 2008 à 17:52
Exacte, merci d'avoir fait la recherche ;-)

<hr />
-My Blog-
0
jmistinguette Messages postés 1 Date d'inscription mercredi 2 juillet 2008 Statut Membre Dernière intervention 25 juin 2009
25 juin 2009 à 12:04
salut !
Ma question va certainement vous paraitre bête mais alors quand on a une fonction Get comme la mienne par exemple:

public
int Id{

   get{

         if (_id >= 0)

         return _id;

         string prefixe = _libelle.Substring(0, 1);
         
if (
"0123456789".Contains(prefixe)){
            _id =
Int32.Parse(_libelle.Trim());
         }

         else{
            _prefixe = prefixe;
            _libelle = _libelle.Substring(1);
            _id =
Int32.Parse(_libelle.Trim());
         }

         return _id;
      }
}

Comment fait-on pour avoir une fonction par exemple GetId qui fait la même chose que ma fonction "public
int Id "
mais sans utiliser l'accesseur get...

merci ;)
0
Rejoignez-nous