这个类图是否正确?

时间:2011-11-29 18:25:13

标签: class uml class-design

我需要一些帮助,以确认我是在正确的轨道上。 我为流行的在线购物场景做了一个用例图和类图。

请仔细阅读并批评建议,让我对你有所了解,因为我还在学习UML。

建模背后的故事如下所示:

  

该公司的名称是X公司,他们正在进入销售   涂料。 X-company有一个网站,可以在线销售这些涂料到两个   客户类型 - 零售商和批发商。 X-Company有一些   目前涂料的颜色,尺寸,每种涂料类型的成本各不相同   这些特征明显不同。零售商可以登录   现场并购买一位数的涂料(如1或2涂料)   批发商以折扣价购买大量涂料的时间   10种涂料及以上涂料10%,20种涂料及以上涂料20%,30%涂料30%   油漆及以上。

     

该网站尽可能简单易用。客户到达   网站,选择油漆的类型,并显示其特点   油漆。如果客户购买了他们选择的   他们需要的数量。如果顾客对价格感到满意的话   确认他们的订单。确认后,网站会检查库存   涂料,看看是否有足够的涂料可用。如果有   如果不可用,将通知客户并要求客户选择其他客户   类型。如果可用,则客户提供支付卡   地址,卡号,卡针等详细信息。付款已完成   通过外部整合。付款时,客户订单是   发送给客户,除非客户要求取消或   通过网站管理员的订单。

     

网站组织者或管理员负责添加新内容   涂料到网站,并在有新的时候取出旧的涂料   涂料库存。

我绘制的类图如下所示:

Class Diagram

1 个答案:

答案 0 :(得分:1)

  • 给这些类带来奇异的名字。订单,而不是订单。折扣,而不是折扣。但是,如果你的类是一个集合\ Orders列表,那么" Orders"没关系。

  • 用户一次不能购买多种颜料! Order类应该有一个Paint集合,而不是一个Paint实例。

  • Paint,PaintType设计似乎不合逻辑。我不明白为什么应该有不止一个班级。合并为Paint类。

  • 我认为应该有一个PaintStock课程。 Administrator类中的方法似乎是对PaintStock执行的操作,因此将它们移动。 Administrator类需要一个PaintStock引用,因此它可以调用PaintStock.Add等。

  • 付款类应该被称为CreditCardPayment,其中包括其中的内容。我怀疑信用卡不是付款的唯一方式。我订了付款基类,以便我们可以轻松扩展以后付款的方式。

  • 添加/删除绘图功能不适用于Administrator类。将这些方法放在PaintStock类中。

  • 将BulkBuyer重命名为批发商

  • 考虑一个User类。摆脱零售商和批发商。我没有看到不同类别的差异。在User类中创建一个BuyerType字段以区分。如果您的业务规则规定了基于零售商和批发商的购买限制,那么简单的规则差异就可以很容易地存在于一个类别中。

  • 作为一般规则 - 它是一个好的规则 - 不要存储计算结果。所以Order.TotalCost应该是一个方法而不是一个字段。

  • 订单需要一个Cancel方法。不是管理员类。 Administrator类需要一个Order引用,因此它可以调用Order.Cancel。