我需要一些帮助,以确认我是在正确的轨道上。 我为流行的在线购物场景做了一个用例图和类图。
请仔细阅读并批评建议,让我对你有所了解,因为我还在学习UML。
建模背后的故事如下所示:
该公司的名称是X公司,他们正在进入销售 涂料。 X-company有一个网站,可以在线销售这些涂料到两个 客户类型 - 零售商和批发商。 X-Company有一些 目前涂料的颜色,尺寸,每种涂料类型的成本各不相同 这些特征明显不同。零售商可以登录 现场并购买一位数的涂料(如1或2涂料) 批发商以折扣价购买大量涂料的时间 10种涂料及以上涂料10%,20种涂料及以上涂料20%,30%涂料30% 油漆及以上。
该网站尽可能简单易用。客户到达 网站,选择油漆的类型,并显示其特点 油漆。如果客户购买了他们选择的 他们需要的数量。如果顾客对价格感到满意的话 确认他们的订单。确认后,网站会检查库存 涂料,看看是否有足够的涂料可用。如果有 如果不可用,将通知客户并要求客户选择其他客户 类型。如果可用,则客户提供支付卡 地址,卡号,卡针等详细信息。付款已完成 通过外部整合。付款时,客户订单是 发送给客户,除非客户要求取消或 通过网站管理员的订单。
网站组织者或管理员负责添加新内容 涂料到网站,并在有新的时候取出旧的涂料 涂料库存。
我绘制的类图如下所示:
答案 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。