3 votes

Comment modéliser le "jour cible" dans les Classdiagrammes UML ?

Je veux décrire la situation suivante dans un diagramme de classe UML :

Un jour, où un journal est envoyé à un client. Ce jour peut être quelque chose comme "tous les vendredis" ou "tous les premiers jours du mois".

Mon idée est de représenter cela dans un diagramme de classe UML :

-targetDay:Integer
-targetDayGrid:Enumeration

targetDay serait quelque chose comme "1" (pour le lundi) ou "5" (pour le vendredi) ou encore "1" pour le premier jour du mois ou "10" pour le 10e jour du mois.

targetDayGrid est un enum : hebdomadaire, mensuel.

L'enum définit donc la signification sémantique du nombre dans targetDay. Je ne suis pas satisfait de cette solution, connaissez-vous une autre solution pour représenter mon problème ? Ou pensez-vous que ma solution est bonne ?

1voto

JoseK Points 20075

A mon avis, je séparerais les deux et modéliserais la classe avec 2 enums comme

public enum Day_Of_Week{ SUN, MON, TUE, WED, THU, FRI, SAT }

public enum Day_Of_Month{ 1, 2, .. , 31 }

Cela permet d'éviter tout réglage incorrect de la valeur > 7 à la cibleDay pour le "Jour de la semaine".

1voto

Maurice Perry Points 18154

Cela peut sembler un peu exagéré, mais je pense que vous avez besoin de trois autres classes ici : TargetDay qui serait une classe abstraite (ou une interface), WeeklyTargetDay et MonthlyTargetDate qui fourniraient différentes implémentations de TargetDay. texte alternatif http://www.freeimagehosting.net/uploads/a5c029bedd.png

1voto

Gabriel Ščerbák Points 7982

Cela semble vraiment une bonne idée de séparer la récupération de la date réelle et le calcul de cette date, mais cela ne peut pas être le cas dans toutes les situations, par exemple lorsque vous voulez pré-calculer plus de valeurs et que vous pouvez le faire plus efficacement méthode de calcul par méthode de calcul que client par client. Cela permettra également l'ajout futur de nouvelles méthodes (livraison toutes les deux semaines, schéma de livraison différent pendant les vacances...). Il pourrait être dangereux d'avoir une valeur dont la sémantique dépend d'une autre valeur. Vous voulez également éviter les données erronées, peut-être en utilisant des enums comme suggéré, en particulier pour les jours dans une semaine (n'oubliez pas, que tous les mois n'ont pas la même longueur, vous auriez besoin d'une classe Date avec vérification plutôt qu'un simple enum). Cependant, si vous recherchez la solution la plus simple, essayez deux variables - le jour dans l'année et un multiplicateur de jours (mais n'oubliez pas que toutes les années n'ont pas le même nombre de jours...).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X