2010-03-22 8 views
3

« jour cible » Je veux décrire la situation suivante dans un UML ClassDiagram:Comment modéliser en UML ClassDiagrams

Un jour, sur lequel un journal est envoyé à un client. Ce jour pourrait être sth. comme "tous les vendredis" ou "tous les premiers jours d'un mois".

Mon idée de représenter cela dans un ClassDiagram UML:

-targetDay:Integer 
-targetDayGrid:Enumeration 

targetDay serait STH. comme "1" (pour lundi) ou "5" (pour vendredi) ou il pourrait être "1" pour le premier jour du mois ou "10" pour le 10ème jour du mois.

targetDayGrid est une énumération: hebdomadaire, mensuelle. Ainsi, l'enum définit la signification sémantique du nombre dans targetDay. Je ne suis pas content de cela, connaissez-vous une autre solution pour représenter mon problème? Ou pensez-vous que ma solution est acceptable?

+0

Et vous n'aura pas une situation comme "Premier vendredi du mois"? – JoseK

+0

pas maintenant, mais peut-être plus tard ... – Tobias

Répondre

1

Cela semble vraiment une bonne idée de séparer la récupération de date réelle et le calcul de cette date l'un par rapport à l'autre, mais cela ne peut pas tenir dans toutes les situations, par ex. quand vous voulez pré-calculer plus de valeurs et vous pouvez le faire plus efficacement la méthode de calcul par la méthode de calcul que le client par client. Cela permettra également l'ajout futur de nouvelles méthodes (livraison bihebdomadaire, schéma de livraison différent pendant les vacances ...). Il pourrait être dangereux d'avoir une valeur sémantique dépendant d'une autre valeur. Vous voulez également éviter les données erronées, peut-être en utilisant des énumérations comme suggéré, surtout 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 avec vérification plutôt qu'une énumération). Toutefois, si vous cherchez la solution la plus simple, essayez deux variables: le jour dans l'année et le multiplicateur du jour (mais n'oubliez pas que chaque année n'a pas le même nombre de jours ...).

1

À mon avis, je séparerais les deux et le modèle de la classe avec 2 énumérations comme

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

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

Ceci évite tout réglage incorrect de la valeur> 7 à la targetDay pour « Jour de la semaine »

+0

Je pense à un moteur de règles ... peut-être une meilleure idée. – Tobias

1

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

+0

Je pense à un moteur de règles ... peut-être une meilleure idée. – Tobias

+0

pas si sûr ... –

+0

pourquoi pas? Je pense que cela pourrait être une alternative ... – Tobias

Questions connexes