一、实验目的

1.学习类图的绘制;
2.学习从系统需求中识别类,并构建相应的面向对象模型;
3.学习使用时序图描述对象之间的交互;
4.学习使用活动图为业务流程建模;
5.学习使用StarUML绘制类图、时序图、活动图。
6.通过实例深入理解和掌握所学的面向对象设计原则。
7.熟练使用面向对象设计原则对系统进行重构。
8.熟练绘制重构后的结构图(类图)。

二、实验内容

1.根据以下描述绘制类图:
某商场会员管理系统包含一个会员类(Member),会员的基本信息包括会员编号、会员姓名、联系电话、电子邮箱、地址等,会员可分为金卡会员(GoldMember)和银卡会员(SilverMember)两种,不同类型的会员在购物时可以享受不同的折扣;每个会员可以拥有一个或多个订单(Order),每一个订单又可包含至少一条商品销售信息(ProductItem),商品销售信息包括订单编号、商品编号、商品数量、商品单价和折扣等;每一条商品销售信息对应一类商品(Product),商品信息包括商品编号、商品名称、商品单价、商品库存量、商品产地等。
2.某基于C/S的即时聊天系统登录模块功能描述如下:
用户通过登录界面(LoginForm)输入账号和密码,系统将输入的账号和密码与存储在数据库(User)表中的用户信息进行比较,验证用户输入是否正确,如果输入正确则进入主界面(MainForm),否则提示“输入错误”。
根据以上描述绘制类图。
3. 在某绘图软件中提供了多种大小不同的画笔(Pen),并且可以给画笔指定不同颜色,某设计人员针对画笔的结构设计了如下类图:

通过仔细分析,设计人员发现该类图存在非常严重的问题,如果需要增加一种新的大小的笔或者增加一种新的颜色,都需要增加很多子类,如增加一种绿色,则对应每一种大小的笔都需要增加一支绿色笔,系统中类的个数急剧增加。
试根据依赖倒转原则和合成复用原则对该设计方案进行重构,使得增加新的大小的笔和增加新的颜色都较为方便。
4.结合面向对象设计原则分析:正方形是否是长方形的子类?
5. 在某图形库API中提供了多种矢量图模板,用户可以基于这些矢量图创建不同的显示图形,图形库设计人员设计的初始类图如下所示:

在该图形库中,每个图形类(如Circle、Triangle等)的init()方法用于初始化所创建的图形, setColor()方法用于给图形设置边框颜色,fill()方法用于给图形设置填充颜色,setSize()方法用于设置图形的大小,display()方法用于显示图形。客户类(Client)在使用该图形库时发现存在如下问题:
(1) 由于在创建窗口时每次只需要使用图形库中的一种图形,因此在更换图形时需要修改客户类源代码;
(2) 在图形库中增加并使用新的图形时需要修改客户类源代码;
(3) 客户类在每次使用图形对象之前需要先创建图形对象,有些图形的创建过程较为复杂,导致客户类代码冗长且难以维护。
现需要根据面向对象设计原则对该系统进行重构,要求如下:
(1) 隔离图形的创建和使用,将图形的创建过程封装在专门的类中,客户类在使用图形时无须直接创建图形对象,甚至不需要关心具体图形类类名;
(2) 客户类能方便更换图形或使用新增图形,无须针对具体图形类编程,符合开闭原则。
请绘制重构后的类图。

三、实验要求

  1. 熟练制类图、顺序图和活动图;
  2. 选择合适的面向对象设计原则对系统进行重构;
  3. 绘制重构之后的类图;
  4. 所绘制图形必须正确、完整,需具有较好可读性,注图形中图符和文字大小及布局。
    四、实验步骤
  5. 分析商场会员管理系统中实体类之间的关系,绘制相应的类图;
  6. 分析某基于C/S的即时聊天系统的登录模块的功能,绘制对应的类图;
  7. 分析初始设计方案存在的问题,根据依赖倒转原则和合成复用原则对初始设计方案进行重构,绘制重构之后的结构图;
    4.根据面向对象设计原则进行分析;
  8. 分析初始设计方案存在的问题,根据面向对象设计原则对初始设计方案进行重构,绘制重构之后的结构图。

五、实验结果

1、商场会员管理系统中实体类之间的关系的类图如下

2、某基于C/S的即时聊天系统的登录模块的功能的类图如下

3、重构之后的结构图如下

4、正方形是否是长方形的子类?
关于父类与子类,看了看面向对象的设计原则,其中里氏代换原则则提到关于父类与子类:所用引用基类的地方必须透明地使用其子类的对象。老师也反复强调,其实就是基类的类型可以接受子类的实例。长方形和正方形的区别在于正方形的长和宽是相等的。如果不假思索地认为正方形是长方形的子类,那么老师也没出题的意义了。按里氏代换原则如果一个方法需要调用长方形,那么我给他传一个正方形也可以。如果一个方法为了看长方形的宽增长,直至宽大于长则停止,传一个正方形这个方法就不会正常终止。所以,正方形不是长方形的子类。
5、重构后的类图如下

六、实验小结
1.了解到UML是一种分析设计语言,有图形符号表达式的建模语言。其结构包括视图、图、模型元素和通用机制四部分。
2.类图是面向对象系统建模最常见的图,描述了类图、接口集、协作以及它们之间的关系,类图描述了系统的静态设计视,该视主要体现系统的功能需求,即系统应该提供给用户的服务;
3.了解如何使用工具绘制类图、用例图,基本掌握StarUML中绘制类的关联、依赖、泛化关系。在画类图时需要弄清楚类与类之间的各种关系,只有弄清楚类之间关系后才能画好类图;
4.通过本次实验,加深了我对类图语义的理解和功能的应用,掌握了类之间的联系,关联、依赖、聚合等;
5.通过实例深入理解和掌握所学的面向对象设计原则,熟练使用面向对象设计原则对系统进行重构,熟练绘制重构后的结构图(类图)。

软件设计实验一 UML建模实验相关推荐

  1. ATM系统 ---UMl建模实验 对象模型建模

    实验2 对象模型建模 实验2 对象模型建模 一.实验目的 1.熟悉对象模型建模方法: 2.掌握使用StarUML绘制类图的方法: 3.掌握类的描述方法. 二.实验内容 按照以下ATM系统的描述,对其进 ...

  2. 复习单片机:直流电机(内含1 直流电机介绍+2 ULN2003 芯片介绍+3 硬件设计+4 软件设计+5原始代码+6. 实验现象)

    在 51 单片机应用中,电机控制的应用也非常多.本章所要实现的功能是:直流电机工作约 5S 后停止. 切记:51 单片机主要是用来控制而非驱动,如果直接使用芯片的 GPIO 管脚去驱动大功率器件,要么 ...

  3. 计算机验证型数学实验报告,数学建模实验报告1.doc

    数学建模实验报告1.doc 黑龙江科技学院 实 验 报 告 课程名称: 数学建模 专 业: 班 级: 姓 名: 数力系 实 验 名 称数学规划实验课 程数学建模主要仪器设备 计 算 机使用的软件名称M ...

  4. 计算机验证型数学实验报告,数学建模实验报告指要.doc

    说明: 本实验大纲供写报告时参考.实验报告要求写明以下各项: 1.学生班级.姓名.学号. 2.实验名称.目的要求.时间.实验类型.实验内容. 3.实验环境(如Windows XP + MATLAB5. ...

  5. 数学建模matlab实验报告,数学建模实验.doc

    <数学建模实验.doc>由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关<数学建模实验.doc>文档请在天天文库搜索. 1.数学建模课程实验报告专题实验7 ...

  6. 以美萍服装管理软件为例的UML建模

    编号: 19757 软件框架文档 Software Frame Documents for [美萍服装销售管理系统] [mpfz]   Version [3.4] approved Prepared ...

  7. 【软件设计师14】UML建模

    UML建模 稳定出一个,但是由于UML的图比较多,所以这种题比数据流图和数据库难度高 一般都会考用例图和类图,再附加其他的图 1. 用例图 包含关系include:比如登记外借信息必须先有用户登录 扩 ...

  8. 软件设计师学习笔记-UML建模

    UML建模 用例图 类图与对象图 顺序图 活动图 带泳道的活动图 状态图 通信图 协作图(顺序图的另外一种表达方式)

  9. 实验三 UML建模(软件工程)

    (一)实验目的要求 1. 了解UML的特点 2. 熟悉掌握UML中各类图的画法 (二)实验材料和仪器设备 1. PC机 2.UML绘图环境 (三)实验内容 1. 银行计算机储蓄系统的工作过程大致如下: ...

  10. 单片机:步进电机(内含:1 步进电机简介+2 步进电机工作原理+ 3 步进电机技术指标 +4. 软件设计+5.原始代码+6.实验现象)

    本章用到两个功能,推荐反复练习,重点是代码部分和步进电机原理部分 1 步进电机简介 步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件. 2 步进电机工作原理 通常步进电机的转子为永磁体,当电流 ...

最新文章

  1. Windows最经典应用大变脸:学生爽翻!
  2. 程序员面试题精选100题(33)-在O(1)时间删除链表结点[数据结构]
  3. PowerShell删除Exchange 2010邮件的正确姿势
  4. Python中 ‘==‘ 与‘is‘ 以及它们背后的故事
  5. 【译】Using Objects to Organize Your Code
  6. 解决Ubuntu系统中文乱码显示问题
  7. linux i2c adapter 增加设备_Linux驱动之I2C驱动架构
  8. 2017.9.26 于神之怒加强版 失败总结
  9. 湖南高校教师评职称计算机等级考试,湖南高校教师职称评审出台新规,这些要点你了解了吗?...
  10. Python3 uniform() 函数
  11. 《演讲之禅》迷你书免费下载 每小时30000美元的秘诀
  12. maven内存不足:Unexpected error occurred: Not enough memory to allocate buffers for rehashing Java heap
  13. 两小时学会ajax,全程无废话,直接上代码,追求速度的来
  14. 好用的桌面搜索引擎(如果你的快捷方式很多,可能会需要它)
  15. 到底什么是NP问题,NP hard问题,NP完全问题?
  16. 创建联系人vcf文件通讯录
  17. 用户研究中的定性研究、定量研究
  18. 图像_camera_基础知识_YUV色彩模型与RGB色彩模型详解
  19. 4.live555mediaserver-第一次select
  20. vins estimator ProjectionFactor (Td) factor

热门文章

  1. var_threshold
  2. VGG19图像风格迁移
  3. 看虚幻引擎技术大神分享烧脑干货《克服VR眩晕之帧数:提升UE4内容实时渲染效率》(备忘)
  4. 不确定性Uncertainty
  5. ADAS倒车雷达超声波传感器elmos524.03驱动
  6. iOS中雷达波扩散Layer层动画的实现
  7. 干货 | 携程风控数据仓库实践
  8. work文档,Excel表格常用快捷键
  9. IM“扫一扫”功能很好做?看看微信“扫一扫识物”的完整技术实现
  10. 计算机术语中bug指的是,你知道电脑漏洞为什么叫bug吗?