Fonctions libres vs. méthodes
Bonjour,
Admettons qu'on ait une classe A qui a une sémantique de valeur (value semantic). Pas de destructeur virtuel, pas fait pour être dérivé.
Un certain nombre d’opérations doivent agir sur les instances de A et nécessitent d'accéder aux membres privés.
On va naturellement penser à ajouter des méthodes à cette classe:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| struct A { // exemple fictif
//.. ctors, assignment ops etc
int method1(); // série de méthodes publiques
int method2();
int method3();
//..
private:
int i, j;
};
// utilisation
A a;
a.method1();
a.method2(); |
Problème: Parce que A est vraiment utile (penser au type int, même si j’exagère rassurez-vous) et qu'il y a toujours plus de méthodes à ajouter (car potentiellement intéressantes), on se retrouve avec une classe dont l'interface publique est disproportionnée.
Solution: Tailler dans les méthodes et passer par des fonctions libres. Idéalement ces fonctions sont chargées à la demande par l'utilisateur (des fichiers de header distincts).
Problème: Quid de l’accès aux membres privés?
Question: Quels design, technique, idiome adopteriez-vous afin de remédier à ce problème? Si tant est que le problème fut le bon..