Bonjour,
Dans un projet de développement C++, j'utilise et manipule des points. Ces derniers ont de nombreux attributs (id, x, y et z notamment). Tous les points utiles au fonctionnement sont stockés dans un fichier XML du type:
Les manipulations sur ces points sont plus ou moins poussées, avec des calculs divers, des approximations de plans, calculs de distances point-plan, etc...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <Points> <Point> <id>1</id> <x>1000</x> <y>5000</y> <z>100</z> </Point> ... </Points>
Quelle est la meilleure façon de procéder quant à l'architecture du code?
A priori, je pense à 2 solutions totalement différentes:
1- Créer une classe Point (et une classe Plan...), et dès le début du programme, lire le XML et instancier directement chaque point contenu dans le fichier. Les calculs effectués le seront directement sur les objets, avec les méthodes contenues dans chaque classe (plus une classe "Calculs" pour les autres opérations qui ne rentreraient pas dans les classes).
2- Ne pas créer de classe, uniquement des fichiers .cpp et .h pour les calculs. Lors de l'exécution du programme, on chargerait une fois le fichier XML dans une variable, puis on appellerait les différentes fonctions en passant en variable les nœuds xml nécessaires. On n'aurait donc pas besoin de créer d'objet, tout se ferait à partir de l'xml.
Pour résumer:
- fonctionnement 1:
On charge le XML -> on crée tous les objets points nécessaires.
On manipule les objets directement à partir des méthodes des classes.
exemple:
constructeur: Point i(id,x,y,z);
double dist = CalculDistancePointPlan(Point i, Plan p);
- fonctionnement 2:
On charge le XML -> on garde le tout dans une variable pour utilisation ultérieure.
On exécute le programme, et lors du besoin de paramètres, on va les chercher dans le flux xml avec une requête XQuery.
exemple:
double x = résultat de la requête (donne moi le x du point courant)
idem pour y et z
idem pour le plan
double dist = CalculDistancePointPlan(x,y,z, a,b,c,d);
A mon humble avis de débutant programmeur, la solution 1- me parait plus "propre", plus ordonnée, et conceptuellement plus logique. Cependant, cette solution perd totalement tous les avantages liés à l'utilisation du XML, en le lisant pas à pas comme on le ferait pour un simple fichier .ini. Alors que la seconde solution exploite les possibilités à fond en utilisant XQuery à chaque appel.
Quel est votre avis sur la question?
Partager