代码之家  ›  专栏  ›  技术社区  ›  Tobias

如何在UML类图中建模“目标日”

  •  3
  • Tobias  · 技术社区  · 15 年前

    我想在UML类图中描述以下情况:

    给顾客送报的日子。这一天可以是“每周五”或“一个月的第一天”。

    我的想法是在UML类图中表示这一点:

    -targetDay:Integer
    -targetDayGrid:Enumeration
    

    目标日可以是“1”(星期一)或“5”(星期五),也可以是“1”(月初一)或“10”(月初十)。

    targetDayGrid是一个枚举:每周、每月。

    所以枚举设置targetDay中数字的语义。我对这个不满意,你知道有什么其他的解决方法来代表我的问题吗?或者你认为我的解决方案可以吗?

    3 回复  |  直到 15 年前
        1
  •  1
  •   Gabriel Ščerbák    15 年前

    将实际的日期检索和该日期的计算彼此分离看起来确实是个好主意,但这在每种情况下都不适用,例如,当您希望预计算更多的值时,您可以通过计算方法比通过客户托默。这也将允许未来增加新的方法(双周交货,节假日期间不同的交货模式…)。语义依赖于其他值的值可能是危险的。您还希望避免出现错误数据,可以按照建议使用枚举,尤其是一周中的几天(不要忘记,并非每个月都有相同的长度,您需要一些带有检查的日期类,而不仅仅是枚举)。然而,如果你正在寻找最简单的解决方案,尝试两个变量-一年中的一天和一天乘数(但不要忘记,不是每一年都有相同的天数…)。

        2
  •  1
  •   JoseK    15 年前

    在我看来,我会将两者分开,并用两个枚举对类建模,如

    public enum Day_Of_Week{ SUN, MON, TUE, WED, THU, FRI, SAT }
    
    public enum Day_Of_Month{ 1, 2, .. , 31 }
    

    这样可以避免将值>7设置为“星期几”的targetDay。

        3
  •  1
  •   Maurice Perry    15 年前

    这听起来有点过头了,但我认为这里还需要三个类:targetday,它将是一个抽象类(或接口)、weeklytargetday和monthlytargetdate,它们将提供不同的targetday实现 alt text http://www.freeimagehosting.net/uploads/a5c029bedd.png

    推荐文章