我想在UML Classdiagram中描述以下情况:
将报纸发送给客户的一天。这一天可能是......比如“每个星期五”或“每个月的第一天”。
我的想法是在UML Classdiagram中表示:
-targetDay:Integer
-targetDayGrid:Enumeration
targetDay将是......比如“1”(星期一)或“5”(星期五),或者月份的第一天可以是“1”,或者月份的第10天可以是“10”。
targetDayGrid是一个枚举:每周,每月。
因此,枚举在targetDay中设置数字的语义含义。我对此不满意,您知道其他解决方案来代表我的问题吗?或者您认为我的解决方案没问题?
答案 0 :(得分:1)
在我看来,我会把这两个分开,并用2个枚举来模拟这个类,比如
public enum Day_Of_Week{ SUN, MON, TUE, WED, THU, FRI, SAT }
public enum Day_Of_Month{ 1, 2, .. , 31 }
这可以避免任何不正确的值设置> 7到目标日为“星期几”
答案 1 :(得分:1)
这听起来有点矫枉过正,但我认为你还需要三个类:TargetDay是一个抽象类(或接口),WeeklyTargetDay和MonthlyTargetDate可以提供不同的TargetDay实现 alt text http://www.freeimagehosting.net/uploads/a5c029bedd.png
答案 2 :(得分:1)
将实际日期检索和该日期的计算彼此分开似乎是一个好主意,但这并不适用于所有情况,例如:当你想预先计算更多的价值时,你可以通过计算方法比客户更有效地计算方法。这也将允许将来添加新方法(每两周一次交付,假期期间的不同交付方案......)。具有依赖于其他值的语义值可能是危险的。您还希望避免错误数据,可能使用建议的枚举,尤其是一周中的几天(不要忘记,并非每个月都有相同的长度,您需要一些Date类来检查而不仅仅是枚举)。但是,如果您正在寻找最简单的解决方案,请尝试两个变量 - 一年中的一天和一天的乘数(但不要忘记,并非每年都有相同的天数......)。