architecture de classes utiliséees pour une seule fonction
Bonjour,
Je suis en train d'implémenter une fonction où j'ai créer des classes et des structs pour y stocker les informations dont j'ai besoin:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
struct EdgePart{
int _ID;
Edge * _ContainingEgde1;
Edge * _ContainingEgde2;
};
struct Edge {
ListOfEdgePart * _EdgeParts;
int _NbEdgeParts;
Area * _Owner;
};
class Zone{
int _NumZone;
IntList _Triangles;
unsigned int _NbEdges;
CATBoolean _HasNeighbours;
int _NbEdges;
bucketEdge _Edges;
Edge * Absorb( Area * AreaToAbsorb );
void UpdateEdge();
}; |
Pour résumer, il y a des zones en entrées de l'algo, mais qui ne sont pas données par un objet de type "Zone". Mon algo crée alors un objet de type "Zone" par zone, avec les Edge et les EdgePart qui correspondent. Ensuite, des zones en absorbent d'autres, suivant certains critères.
Ma question concerne l'architecture de la fonction:
J'ai mis la fonction "Absord" dans la classe Zone et cela convient pour l'instant mais je me dis qu'il vaudrait mieux que je la mette en tant que méthode d'une classe GestionnaireZones, qui aurait un lien vers toutes les zones, et faire des même pour toutes les fonctions qui modifient les objets "Zone", "Edge" et "EdgePart".
En effet, pour moi les avantages de laisser les méthodes qui modifient un objet en tant que méthode de sa classe sont:
- s'il y a héritage et différentes comportement suivant les classes, mais ce ne sera surement pas le cas ici.
- la modularité, qui permet de modifier le comportement d'une classe sans avoir à modifier le reste, mais ici je pense que tout est un peu trop lié.
Et les désavantages sont:
- il est probable que les critères et le comportement d'absorbion soient modifiés. Par exemple, le choix d'absorber ou non pourrait être influencé par une autre zone et l'absorbtion pourrait modifier les zones voisines. Modifier alors la méthode "Absorb" de la classe "Zone" sera plus difficile que de modifier la méthode "Absorb" de la classe "GestionnaireZone", qui aura déjà accès à toutes les zones.
Qu'en pensez vous?
Mettre toutes les fonctions dans GestionnaireZones ne me parait pas très propre, alors n'hésitez pas à me contredire!!!