Bonjour à tous et à toutes !
Mon début de programme avance gentiment... Chaque problème résolu en soulève un nouveau (syndrome du tonneau des danaïdes...)
Je cherche à :
1) représenter la position de différents nodes dans un espace 2D discretisé en cases (un échiquier, quoi...)
2) déplacer ces nodes dans l'espace (ce déplacement est une fonction du temps t et de la distance entre les cases)
3) après chaque déplacement, effectuer une certaine opération position-dépendante (création/suppression de nodes), là aussi variable selon le temps t
4) incrémenter le temps, et c'est reparti au point 2
J'ai commencé à écrire un algorithme procédural (faut bien commencer quelque part ) et maintenant que je vois un peu mieux comment ça se passe je cherche à organiser ça en orienté-objet :
- Une classe LandPositioner aurait conscience de la position des nodes (implémentation via un multimap), communique les positions aux autres classes, et prend en compte les changements provoqués par les autres classes.
- Une classe Modificator aurait pour tache de récupérer pour chaque case les nodes présents, supprimmer/ajouter des nodes avec une probabilité dépendante du temps, et communiquer les changements à LandPositioner pour qu'il actualise.
- Une classe Migrator aurait pour mission de choper chaque node et ses coordonnées, et de proposer un déplacement, lui aussi dépendant du temps, et de communiquer les changements à LandPositioner.
Mes questions :
1) Le patron vous semble-t-il débile ?
2) Quand le comportement de pleins de classes dépend d'une variable temps qu'on incrémente au cours d'une boucle, quelle est la meilleure stratégie à adopter pour utiliser cette même variable au sein de classes très différentes ? Faire un héritage d'interface avec une méthode giveTime() ?
3) Ailleurs dans le projet il y aura d'autres marcheurs aléatoires qui seront pas forcément en espace discret, pas avec les même modalité de déplacement... Comment généraliser la notion de déplacement ? Faire des classes absraites RandomWalker, WalkerModificator, WalkerMigrator ?
Merci d'avance pour vos conseils
Partager