日期:2014-05-20  浏览次数:20792 次

面向对象案例分析的疑惑
对象的识别必须结合客户需求和业务逻辑,根据系统要求实现的功能出发。例如,我
们要求开发一个电子商务系统,功能要求如下:

1.支持商品的查询功能;
2.用户如需购买商品,需要成为注册用户并登录;
3.如果当前库存无该商品,用户可以预订;
4.用户可以将商品放入购物车;
5.用户购买商品之前,需提交订单;
6.用户提交订单后,系统应将订购信息发送邮件给用户;
7.用户可以对商品添加评论。

-------------------------------------------------------
根据上面的业务,我现在可以找到以下五个对象(如果有不对的,请指出):
商品,用户,购物车,订单,评论

对象找到后,下面是找到对象的特征和行为,现在我只想找行为,但是不清楚有些行业应该归到哪个对象中,问题如下:
1.支持商品的查询功能;
  商品类中应该包含“查询”的方法。
2.用户如需购买商品,需要成为注册用户并登录;
  用户类中要包含“购买”,“注册”,“登录”的方法
3.如果当前库存无该商品,用户可以预订;
  用户类中要包含“预订”的方法
4.用户可以将商品放入购物车;
  购物车类中包含“添加商品”的方法
5.用户购买商品之前,需提交订单;
  “提交订单”的方法,不知道是应该添加到哪个类中???
6.用户提交订单后,系统应将订购信息发送邮件给用户;
  “发送邮件”方法应该添加到哪个类中???
7.用户可以对商品添加评论。
  “添加评论”方法应该添加到哪个类中???


刚接触UML,所以不太清楚应该怎么来分析,请大家指教,谢谢。

------解决方案--------------------
提交订单在订单的DAL中
“发送邮件”可使用公共类
添加评论添加到评论类
使用实体对象属性实现关联
看看petshop
------解决方案--------------------
“购买”虽然是用户的动作,但是应归为“订单”的行为,“购买”实际上是“订单支付”...

同理,“预订”虽然是用户的动作,但是应归为“订单”的行为,“预订”实际上是“远期订单”...

这样就解释了你5、6的疑问...至于“评论”,评论的是商品...

你现在还远未到“类”、“方法”的设计阶段,你的需求还没分析透...需求不理清楚就开始设计只会陷入泥潭...

UML只是工具,不是解决问题的方法...你现在需要先去学学如何分析需求,再学学OOA、OOD的知识,OOP还早呢...
------解决方案--------------------
分析类和行为最简单的方法是用被动式

比如说帖子被发,被结

发和结要放到帖子类,而不是用户类

帖子被你发,你可以作为一个属性-发贴者