Bonjour à tous !
J'ai un petit problème de conception que je vais essayer de vous présenter le plus simplement possible :
J'ai dans mon programme une classe Agenda qui contient plusieurs objets de type Tache. La classe Tache a un attribut de type Date qui est la date à laquelle la tâche est prévue.
Or dans ma classe Agenda j'ai une méthode getFreeDate(echeance, duree) qui renvoit la première date qui a au moins autant de temps libre que la durée passée en paramètre, à partir de la date du jour jusqu'à l'échéance passée en paramètre.
Ainsi cette fonction, sans rentrer dans les détails, exécute l'algo suivant :
C'est à dire que n'ayant aucun lien entre une date et les tâches, je suis obligé de parcourir toutes les tâches pour chacune des dates jusqu'à échéance... Pas très optimisé !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 pour chaque date d jusqu'à échéance <div style="margin-left:40px">pour chaque tache t de l'agenda <div style="margin-left:40px">si t.date = d alors <div style="margin-left:40px">// traitement...</div></div></div><div style="margin-left:40px">fin pour</div>fin pour![]()
J'ai dans mon diagramme de classes un lien de navigation de Tache vers Date et il me faudrait le contraire pour cet algo mais je vois mal une classe Date qui aurait un attribut de type liste de Tache, et mon Agenda composé d'objets Date. Surtout que ça m'obligerait à repenser tout mon programme !
Y aurait-il un moyen de conserver une architecture proche de celle que j'ai actuellement en optimisant la recherche de date ?
Merci d'avoir lu jusque là, j'espère que quelqu'un aura la solution à mon problème, surtout qu'il me semble que c'est un problème connu mais je n'arrive pas à me rappeler comment le résoudre !
Partager