第13章网上购物商店第13章网上购物商店前面使用面向对象的方法并结合RationalRose建模工具系统地介绍了UML统一建模语言。为了对前面学习的内容进行巩固和总结,本章给出一个网上购物商店系统的建模实例,将各种UML图形和模型元素综合起来,使用RationalRose2003完成对该系统的分析和设计。希望通过这个项目的演示,要求学生可以掌握对一个所选的软件进行比较完整的设计和建模的过程。学习内容需求分析创建系统用例模型创建系统静态模型创建系统动态模型创建系统部署模型需求分析随着网络的不断发展,网络购物已经日渐成为消费者的一种生活习惯,人们已经开始认同这种在网上消费的方式。各种商家竞相在网络上建立网上商店。我们这里要介绍的网上购物商店就是这一背景下的产物。网上购物商店,也就是在网络上建立一个虚拟的购物商店,结合网络技术和传统实体商店的优点,减少流通环节,降低交易成本,打破时空和地域的限制,使用户可以通过网络在商店中挑选和购买商品,感受网络给我们带来的购物体验。网上购物商店的功能性需求包括以下内容:根据网上购物商店的日常经营和管理,本系统的用户主要分为有三种:一种是网上商店的普通用户即游客、一种是网上商店的注册会员用户、还有一种是网上商店的管理员。三者的身份不同,权限不同,所以,具体的功能需求也不同。对于普通用户来说,可以浏览网上商店的各种内容,搜索商品信息并且可以申请成为注册会员。对于注册会员来说,除了具备了普通用户的所有功能,并还拥以下的功能:1.在登录页面中输入注册的用户账号和密码,通过身份验证进入到网上商店。2.可以浏览网上商店中各种商品的详细信息和内容。3.可以对选择的商品进行购买,同时可以修改购买的数量和清除购买的操作。4.当提交购买信息后,用户能够查看购买的信息情况。5.能够对网上商店中的所有商品进行快速查询。6.能够对自己的会员信息进行修改和注销。对于网站管理员而言,也分为系统管理员和普通管理员两类,他们的权限和功能也各不相同:系统管理员主要负责系统的数据管理和维护工作以及对整个系统的普通管理员的资料信息和权限进行管理。对普通管理员而言,他的功能范围包括:1.对会员资料信息进行管理,可查看用户的基本信息和删除该用户的信息。2.对商品信息进行管理,包括对商品的添加、修改、删除和查询操作。3.对商品订单信息进行管理。包括:查看订单和修改当前订单的状态。需求分析网上购物商店的系统功能结构图下面通过使用用例驱动创建系统用例模型,获取系统的需求,并使用系统的静态模型创建系统内容,然后通过动态模型对系统的内容进行完善,最后通过部署模型完成系统的部署情况。创建系统用例模型进行系统分析和设计的第一步是创建系统的用例模型。作为描述系统的用户或参与者所能进行的操作的模型,它在需求分析阶段有着重要的作用,整个开发过程都是围绕系统的需求用例表述的问题和问题模型进行的。创建系统用例模型创建系统用例的第一步是确定系统的参与者。根据前面的需求分析可知,网上购物商店的参与者包含以下三种:(1)用户。泛指所有使用网上购物商店系统的人,是专门抽象出来的一个参与者。(2)普通用户。也就是游客,进入网上商店浏览但是没有进行注册的用户,无权购买商品,仅有浏览商品信息的功能。(3)注册会员用户。已经注册过的用户,登录网上商店后即可进行购物。(4)管理员。对本系统进行数据管理、数据维护、商品、订单和用户管理的用户。以上普通用户、注册会员用户、管理员都继承自用户,是泛化的关系。然后根据不同的参与者分别画出各自的用例图。创建系统用例模型1.普通用户用例图普通用户能够通过该系统进行如下活动:(1)在网上购物商店进行注册成为注册会员。(2)浏览商品的信息,包括:分类商品信息、优惠商品信息和热门商品信息。(3)查询商品,包括分类商品、优惠商品和热门商品以及高级查询。(4)通过在线帮助获得想要了解有关网站和商品的信息。创建系统用例模型2.注册会员用例图注册会员除了普通用户所有的功能,还可以通过本系统进行如下活动:(1)登录网上购物商店。(2)管理购物车,包括:查看购物车信息、删除购物车商品、购买商品。(3)管理订单,包括查询订单、创建订单和修改订单。(4)进行商品订单的在线支付。(5)修改个人密码、找回个人密码、修改个人信息和注销。创建系统用例模型3.管理员用例图管理员能够通过该系统进行如下活动:(1)对用户进行管理,包括创建管理员、查询用户、修改用户权限和删除用户。(2)对订单进行管理,包括:订单查询和订单确认。(3)对商品进行管理,包括商品基本信息管理、商品类别管理和特价商品管理。创建系统静态模型在获得系统的基本需求用例模型以后,通过识别和分析系统中的类和对象来创建系统静态模型,过程包括组织系统的包图和创建系统的类图。1.创建系统的类图根据系统需求可以识别系统中存在的对象。系统对象的识别通过寻找系统域描述和需求描述中的名词来进行,从前面的需求分析中可以找到的名词有普通用户、注册会员、商品、管理员、订单,这些都是对象图中的候选对象。判断是否应该为这些候选对象创建类的方法是:是否有与该对象相关的身份和行为?如果有的话,候选对象应该是一个存在于模型中的对象,就应该为它创建类。创建系统静态模型数据访问层实体类图1.根据系统需求,确定用户信息实体类“UserInfo”、订单信息实体类“OrderInfo”、商品信息实体类“GoodsInfo”。由于普通用户只是浏览页面,所以不需要专门创建一个实体类。而注册会员和管理员可以抽象出一个用户信息实体类“UserInfo”作为基类,把注册会员信息实体类“RegisterUserInfo”和管理员信息实体类“AdminUserInfo”作为子类,形成继承的关系。2.注册会员信息实体类和订单信息实体类之间是“一对多”的关联关系,一个注册会员可以拥有多个订单;而对于订单而言,没有商品就没有订单,所以订单信息实体类和商品信息实体类是依赖的关系;对于管理员来说,一个管理员可以管理多个订单信息、多个用户信息和多个商品信息,所以管理员信息类与订单信息实体类、商品信息实体类、注册会员信息实体类之间都是“一对多”的关联关系。最后设计的“数据访问层”中实体类类图如下图所示:创建系统静态模型数据访问组件类图在本系统的数据访问层中,除了实体类类图以外,还包括了数据访问层的各个数据访问组件的类图。由于本系统中存在着代表用户信息的实体类、商品信息的实体类和订单信息的实体类,因此,相应的也就有对应的组件类。其中,商品信息操作类实现商品信息的数据访问操作、订单信息操作类实现订单信息的数据访问操作、用户信息操作类实现用户信息的数据访问操作;另外,还有一个处理错误的异常处理操作类和一个实现数据库连接的操作类,这两个类是其它三个操作类的依赖对象。设计后的“数据访问层”中数据访问组件类图如下图所示:创建系统静态模型业务层类图本系统的具体业务功能主要有四类:用户有关的信息管理类“UserManage”、与商品有关的信息管理类“GoodsManage”、与订单有关的信息管理类“OrderManage”和与购物车有关的信息管理类“ShoppingCartManage”,它们彼此间是相互依赖的关系。设计后的业务层类图如下图所示:创建系统静态模型控制层类图本系统控制层主要包括前端控制器组件“ActionServlet”和完成商品信息“GoodsManageAction”、订单信息“OrderManageAction”、用户信息业务“UserManageAction”调度的后端业务控制器Action类。其中,前端控制器依赖于后端控制器。设计后的控制层类图如下图所示:创建系统静态模型表示层类图本系统表示层中的类比较多,主要是客户端显示给用户的各种界面类,它们包括了系统首页“MainForm”、登录界面“userLogin”、注销界面“logOut”、用户注册界面“userRegister”、修改用户信息界面“updateUserInfo”、购物车界面“shoppingCart”、显示商品信息界面“showGoodsInfo”、显示订单信息界面“showOrderInfo”、显示用户信息界面“showUserInfo”。设计后的表示层类图如下图所示:创建系统静态模型组织系统包图本系统采用了分层的架构,即把系统分为了“表示层”、“控制层”、“业务层”和“数据访问层”四个层次。那么对系统进行组织也就顺理成章地分为对应的四个包:表示层包、控制层包、业务层包和数据访问层包。另外,还有处理系统各种错误的“错误信息处理包”。五个包之间是相互依赖的关系。设计后的包图如下图所示:创建系统动态模型根据系统的用例模型,还可以通过对象之间的相互作用来考察系统对象的行为。这种交互作用通过两种方式进行考察:•一种是以相互作用的一组对象为中心考察,也就是通过交互图,包括序列图和协作图;•另一种是以独立的对象为中心进行考察,包括活动图和状态图。对象之间的相互作用构成系统的动态模型。创建系统动态模型1.普通用户注册本系统的序列图和协作图工作流程如下:(1)普通用户输入个人信息后,系统进行页面中表单数据的验证,并能返回具体错误信息让用户修改。(2)用户根据提示的错误信息输入正确的信息。(3)用户输入正确的信息并通过页面验证后,系统把用户信息取出,保存到业务实体组件对象中,进而调用业务组件类中的方法实现将用户的信息存入数据库。(4)用户注册成功后系统将弹出注册成功的信息提示。创建系统动态模型2.注册会员登录本系统序列图和交互图工作流程如下:(1)注册会员进入登录页面“userLogin”,输入用户名、密和验证码,如果格式不正确会输出错误信息,如果格式正确,可以进行提交。(2)后台系统通过组件来查询在数据库中是否有该用户的身份信息存在,如果查不到任何记录,则表示没有该用户信息,后台组件将提示信息传递并输出到登录页面。(3)如果用户输入了正确的用户名和密码,后台系统查询到用户名和密码与数据库保存的信息一致,则服务器返回true到控制类,并将登录成功的信息输出到登录页面。创建系统动态模型3.注册会员修改注册信息序列图和交互图工作流程如下:(1)注册会员登录系统成功后,点击相关超链接进入修改注册信息的界面“updateUserInfo”。(2)会员在修改信息的表单中对有关的数据项目进行修改。(3)修改的数据被包装到相应的组件对象中,然后保存到业务实体组件对象中,进而调用业务组件类中的方法实现用户个人信息以更新的方式存入数据库表。(4)系统将弹出修改成功的信息提示。创建系统动态模型4.注册会员户通过购物车添加商品序列图和交互图工作流程如下:(1)注册会员在商品信息界面,点击购买按钮,将要买的商品加入购物成并进入到购物车界面“shoppingCart”。(2)用户可以在购物车中修改购买商品的数量。(3)用户可以将不想买的商品从购物车中删除。(4)系统能够判断用户账户中是否存有足够的资金购买购物车中的商品。(5)购买成功后,系统将用户的购买信息存入到数据库并生成订单。创建系统动态模型5.注册会员管理账户序列图和交互图工作流程如下:注册会员选中某些商品并想购买时,其账户中必须有足够的资金,管理账户包括可以显示账户中的存款余额;可以增加账户中的资金等。(1)注册会员成功登录后,可以单击账户管理的超链接,系统调用用户名并查询后台数据库得到用户的个人信息,包括了账户资金的信息,然后通过前台界面显示账户中的存款余额。(2)如果用户增加账户里的资金,则单击提交按钮,系统会取出用户填入的资金值,保存到业务实体中,再调用业务组件将用户新的资金更新到后台数据库。创建系统动态模型6.管理员管理商品序列图和交互图工作流程如下:本系统数据库中商品信息是后台管理员通过后台管理模块加入的。(1)管理员进入商品管理界面“GoodsInfoManage”,输入商品相关信息,单击保存按钮,系统将这些信息保存到业务实体类对象中,然后调用业务组件类中的方法,最后将商品信息存入数