chouchoune80
Messages postés10Date d'inscriptionlundi 28 janvier 2008StatutMembreDernière intervention10 novembre 2009
-
13 août 2008 à 00:14
jmistinguette
Messages postés1Date d'inscriptionmercredi 2 juillet 2008StatutMembreDernière intervention25 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.
lemmingperceval
Messages postés128Date d'inscriptionmardi 18 décembre 2007StatutMembreDernière intervention 2 août 20096 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
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201360 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
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...