Dans une classe, il vaut mieux toujours imposer de passer par des methodes get/set que d'offrir un acces direct à une propriété, même s'il n'y a aucune contrainte sur cette propriété.
ex :
Code :
- class A
- {
- public:
- int Valeur;
- };
- //mieux vaut utiliser :
- class A
- {
- public:
- inline int GetValeur( void ) { return _Valeur; }
- inline void SetValeur( int V ) { _Valeur = V; }
- private:
- int _Valeur;
- };
|
La 2° solution est bcp plus évolutive.
Car si, soudain, pour une version XXX de ta classe, tu as besoin de mettre une contrainte sur Valeur ( >0 par exemple) ou changer son type, avec la première solution, les millions de lignes de codes qui utilisent ta classe devront être modifiées avec la première version, alors que seule ta classe le devra avec la 2°.
Exemple : changer Valeur en double.
Code :
- class A
- {
- public:
- inline int GetValeur( void ) { return int( _Valeur ); }
- inline void SetValeur( int V ) { _Valeur = double( V ); } // hihi, double V ! :)
- inline double GetValeur( void ) { return _Valeur; }
- inline void SetValeur( double V ) { _Valeur = V; }
- private:
- double _Valeur;
- };
|
Et voila, tout code basé sur l'ancienne version compile sans erreur/warning avec cette nouvelle.
Ca c'etait la parenthese.
Pour passer un param à une fonction, rien de sorcier :
tu mets le type du paramètre suivi de son nom dans les parenthèses.
Si y'a plusieurs paramètres, tu les sépare par de virgules.
Code :
- void Fonction( int P1, char P2, float P3 );
|
Tu les utilises dans la fonction comme des variables classiques.
Citation :
Parce que j'imagine que si une fenêtre doit envoyer plusieurs variables, on code pas autant de fonctions que de variables?
|
Qu'entends-tu par envoyer ?
Tu veux surement dire renvoyer la valeur de plusieurs de ses propriétés.
Dans ce cas oui, il vaut mieux faire une methode par propriété.
Car si on n'en veut qu'une, ça impose de quand meme demander les autres.
Code :
- Fenetre F;
- int a = F.GetA();
- int b = F.GetB();
- int c = F.GetC();
- // c'est pas tellement différent de :
- a = F.a;
- b = F.b;
- c = F.c;
- // si ça t'embête vraiment, tu peux faire
- F.GetABC( a, b ,c );
- // mais personnelement je te le déconseille
|
---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite