一、实验目的
在面向对象的设计里面,可维护性复用都是以面向对象设计原则为基础的,这些设计原则首先都是复用的原则,遵循这些设计原则可以有效地提高系统的复用性,同时提高系统的可维护性。在掌握面向对象七个设计原则基础上,能够在具体软件设计中能实际运用这些原则来提高系统的可维护性。
二、实验工具
1.Star UML,NetBeans,eclipse,Myeclipse 软件。
2.Windows系统PC机。
三、实验要求
1. 《设计模式》教材P23页思考与练习第1、2、3题。
四、实验内容
1.类图:某商场会员管理系统包含一个会员类(Member),会员的基本信息包括会员编号、会员姓名、联系电话、电子邮箱、地址等,会员可分为金卡会员(GoldMember)和银卡会员(SilverMember)两种,不同类型的会员在购物时可以享受不同的折扣;每个会员可以拥有-个或多个订单(Order),每一个订单又可以包含至少一条商品销售信息(Productltem),商品销售信息包括订单编号、商品编号、商品数量、商品单价和折扣等;每一条商品销售信息对应一类商品(Product),商品信息包括商品编号、商品名称、商品单价、商品库存量、商品产地等。
1、Member(会员):
属性: Mnumber(会员编号): String、 Mname(会员姓名): String、 Mcall(联系电话): int、 Memail(电子邮箱): String、Maddress(地址): String。
会员类是其他会员类型的基类,可以进一步细分为金卡会员(GoldMember)和银卡会员(SilverMember)。
- GoldMember(金卡会员):
继承自Member类。金卡会员在购物时可享受特定的折扣。
- SilverMember(银卡会员):
继承自Member类。 银卡会员在购物时可享受特定的折扣。
- Order(订单):
属性: OderNumber(订单编号): String。一个会员可拥有一个或多个订单。
- Productltem(商品销售信息):
属性: Order(订单): void方法,可能表示订单的创建或处理)、 unit_price(单价): double、 discount(折扣): double、 product_number(商品编号): int、 Quantity(数量): int、Order_number(订单编号): int、每个订单可以包含至少一条商品销售信息。
6、 Product(商品):
属性: Product_number(商品编号): int、 product_name(商品名称): String、unit_price(单价): double、 inventory(库存量): int、 product_origin(商品产地): String、每一条商品销售信息对应一类商品。
7、类之间的关系:
(1)泛化关系:Member类是金卡会员(GoldMember)和银卡会员(SilverMember)的基类,表示金卡会员和银卡会员都是会员的一种。
(2)关联关系:一个会员(Member)可以拥有多个订单(Order),表示会员与订单之间的一对多关系。
(3)关联关系:一个订单(Order)可以包含多个商品销售信息(Productltem),表示订单与商品销售信息之间的一对多关系。
(4)关联关系:一个商品销售信息(Productltem)对应一个商品(Product),表示商品销售信息与商品之间的一对一关系。
- 顺序图:图书管理员打开借书界面,输入借书信息并提交借书请求;
系统验证借书卡状态,如果该借书卡未借书:则记录借书信息且修改图书状态和借书卡状态,并提示借书成功,否则提示借书失败。
- 某销售信息管理系统中:销售部员工可以提交订单,刚提交的订单为“初始”状态;系统管理员可以处理订单,如果订单无误,则修改订单为“备货”状态,否则将订单退还给提交订单的销售部员工修改,员工此时可以取消订单;仓库管理员备货完毕后可将订单状态改为“发货”状态;销售部员工在确认客户已经收到货物后,可将订单改为“关闭”状态。绘制状态图描述上述过程。
- 实验思考
通过本次实验,我更加明确了面向对象设计原则在提高系统复用性和可维护性方面的重要性。在设计类图时,我特别注意了如何合理地应用封装、继承和多态等原则,以确保设计的合理性和高效性。
在设计商场会员管理系统的类图时,我学习到了如何将现实世界的问题抽象成计算机世界中的类和对象。通过泛化、关联等关系,我能够清晰地表达出不同类之间的关系,这对于后续的系统开发和维护非常关键。
顺序图帮助我理解了系统操作的动态过程。在绘制图书借阅系统的顺序图时,我学会了如何通过顺序图来描述对象间的交互过程,这对于理解系统的运行机制和调试程序非常有帮助。
通过绘制销售信息管理系统的状态图,我深入理解了状态图在描述对象状态变化中的作用。状态图不仅帮助我清晰地展示了订单状态的流转,也让我认识到在设计系统时需要考虑的各种状态转换条件。
实验让我意识到理论知识与实践操作的结合是至关重要的。通过将《设计模式》中的理论应用到实际的软件设计中,我能够更好地理解