[英]Is this Class Diagram Correct?
我需要一些帮助,以确保自己的工作正确无误。 我为流行的在线购物场景制作了一个用例图和类图。
请仔细阅读它并进行建设性批评,在我仍在学习UML的同时,请让我对它有您的看法。
建模背后的故事如下所示:
公司的名称是X-company,他们涉足涂料销售。 X-company的网站将这些涂料在线销售给两种类型的客户-零售商和批发商。 X-Company目前有几种油漆,它们的颜色,大小,成本各不相同,每种油漆类型在这些特性上明显不同。 零售商可以一次登录网站并一次购买一位数的油漆(例如1或2种油漆),而批发商则以10%或以上的折扣10%,20%或以上的20%,30%的折扣购买大量油漆。 30种及以上的涂料。
该网站已变得尽可能简单。 客户到达现场,选择涂料的类型,并显示涂料的特性。 如果客户选择购买,他们会选择所需数量。 如果客户对价格满意,他们将确认订单。 确认后,网站会检查涂料库存,以查看是否有足够的涂料。 如果没有可用的,则通知客户并要求其选择另一种类型。 如果可用,客户将提供支付卡详细信息,例如地址,卡号,卡号。 付款是通过外部集成完成的。 付款后,客户订单将发送给客户,除非客户要求取消订单或通过网站管理员发送订单。
网站组织者或管理员负责在网站上添加新涂料,并在有新涂料库存时取出旧涂料。
我绘制的类图如下所示:
给类起单数名。 订单,而不是订单。 折扣,不是折扣。 但是,如果您的类是Orders的collection \\ list,那么“ Orders”就可以了。
用户一次只能购买一种以上的涂料! Order类应该具有Paint的集合,而不是单个Paint实例。
Paint,PaintType设计似乎不合逻辑。 我不明白为什么应该有一个以上的班级。 合并为Paint类。
我认为应该有一个PaintStock类。 Administrator类中的方法似乎是对PaintStock完成的事情,因此将其移到上方。 Administrator类需要一个PaintStock引用,因此可以调用PaintStock.Add等。
给定其中的内容,付款类别应称为CreditCardPayment。 我怀疑信用卡不是付款的唯一方式。 我将创建一个Payment基类,以便我们以后可以轻松扩展付款方式。
添加/删除绘画功能不适用于Administrator类。 将这些方法放在PaintStock类中。
将BulkBuyer重命名为批发商
考虑一个用户类。 摆脱零售商和批发商。 我看不出有什么不同的课程值得。 在User类中创建一个BuyerType字段以进行区分。 如果您的业务规则决定了基于零售商还是批发商的购买限制,那么这种简单的规则差异就可以轻松地存在于一个类别中。
通常,这是一个好规则,不要存储计算结果。 因此,Order.TotalCost应该是方法而不是字段。
订单需要使用Cancel方法。 不是管理员类。 Administrator类需要一个Order引用,以便可以调用Order.Cancel。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.