Bonjour
Je suis débutant en POO .
Je me pose des questions au niveau de la conception (peut être trop), Dans mon application développée en C++ certains de mes objets utilisent des configurations enregistrées dans des fichiers XML ou INI.
J’ai eu plusieurs idées de codage, pour le moment, j’en ai retenu 2 et j’aimerai votre avis sur celles-ci. Je suis peut être complétement dans l’erreur.
La première serait d’avoir une Configuration membre d’Objet.
Comme cela, je n’ai aucun paramètre à passer au constructeur d’Objet mais du coup je ne suis pas sure que mon code soit très réutilisable et testable.
Configuration 1 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 class Configuration { public: Configuration(); int getA(); int getB(); int getC(); private: String m_fileName; };
Objet 1:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 class Objet { public: Objet (); /* ... */ private: Configuration m_configuration; /* ... */ };
Service 1:
La seconde façon est quasiment la même que la première, sauf que cette fois Configuration et Objet sont tous les deux membres de la classe Service, je trouve que le code est plus testable mais légèrement moins simple à utiliser.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 class Service { public: Service(); /* ... */ private: Objet m_ objet; /* ... */ };
Configuration 2:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 class Configuration { public: int getA(); int getB(); int getC(); private: String m_fileName; };
Objet 2:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 class Object { public: Object(int a, int B, int c); /* ... */ private: int m_a int m_b; int m_c; };
Service 2:
Et pour la classe configuration, j’ai également plusieurs idées :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 class Service { public: /* ... */ private: Objet * m_objet; Configuration m_configuration; /* ... */ };
Soit je lis directement dans mon fichier à chaque fois que j’ai besoin d-une valeur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 class Configuration { public: Configuration(); int getA(); int getB(); int getC(); private: String m_fileName; };
Soit je charge les valeurs contenues dans mon fichier à la création.
Merci d’avance.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 class Configuration { public: Configuration(); bool load(); int getA(); int getB(); int getC(); private: String m_fileName; int m_a int m_b; int m_c; };
Partager