软件设计实验一 UML建模实验
一、实验目的
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) 客户类能方便更换图形或使用新增图形,无须针对具体图形类编程,符合开闭原则。
请绘制重构后的类图。
三、实验要求
- 熟练制类图、顺序图和活动图;
- 选择合适的面向对象设计原则对系统进行重构;
- 绘制重构之后的类图;
- 所绘制图形必须正确、完整,需具有较好可读性,注图形中图符和文字大小及布局。
四、实验步骤 - 分析商场会员管理系统中实体类之间的关系,绘制相应的类图;
- 分析某基于C/S的即时聊天系统的登录模块的功能,绘制对应的类图;
- 分析初始设计方案存在的问题,根据依赖倒转原则和合成复用原则对初始设计方案进行重构,绘制重构之后的结构图;
4.根据面向对象设计原则进行分析; - 分析初始设计方案存在的问题,根据面向对象设计原则对初始设计方案进行重构,绘制重构之后的结构图。
五、实验结果
1、商场会员管理系统中实体类之间的关系的类图如下
2、某基于C/S的即时聊天系统的登录模块的功能的类图如下
3、重构之后的结构图如下
4、正方形是否是长方形的子类?
关于父类与子类,看了看面向对象的设计原则,其中里氏代换原则则提到关于父类与子类:所用引用基类的地方必须透明地使用其子类的对象。老师也反复强调,其实就是基类的类型可以接受子类的实例。长方形和正方形的区别在于正方形的长和宽是相等的。如果不假思索地认为正方形是长方形的子类,那么老师也没出题的意义了。按里氏代换原则如果一个方法需要调用长方形,那么我给他传一个正方形也可以。如果一个方法为了看长方形的宽增长,直至宽大于长则停止,传一个正方形这个方法就不会正常终止。所以,正方形不是长方形的子类。
5、重构后的类图如下
六、实验小结
1.了解到UML是一种分析设计语言,有图形符号表达式的建模语言。其结构包括视图、图、模型元素和通用机制四部分。
2.类图是面向对象系统建模最常见的图,描述了类图、接口集、协作以及它们之间的关系,类图描述了系统的静态设计视,该视主要体现系统的功能需求,即系统应该提供给用户的服务;
3.了解如何使用工具绘制类图、用例图,基本掌握StarUML中绘制类的关联、依赖、泛化关系。在画类图时需要弄清楚类与类之间的各种关系,只有弄清楚类之间关系后才能画好类图;
4.通过本次实验,加深了我对类图语义的理解和功能的应用,掌握了类之间的联系,关联、依赖、聚合等;
5.通过实例深入理解和掌握所学的面向对象设计原则,熟练使用面向对象设计原则对系统进行重构,熟练绘制重构后的结构图(类图)。
软件设计实验一 UML建模实验相关推荐
- ATM系统 ---UMl建模实验 对象模型建模
实验2 对象模型建模 实验2 对象模型建模 一.实验目的 1.熟悉对象模型建模方法: 2.掌握使用StarUML绘制类图的方法: 3.掌握类的描述方法. 二.实验内容 按照以下ATM系统的描述,对其进 ...
- 复习单片机:直流电机(内含1 直流电机介绍+2 ULN2003 芯片介绍+3 硬件设计+4 软件设计+5原始代码+6. 实验现象)
在 51 单片机应用中,电机控制的应用也非常多.本章所要实现的功能是:直流电机工作约 5S 后停止. 切记:51 单片机主要是用来控制而非驱动,如果直接使用芯片的 GPIO 管脚去驱动大功率器件,要么 ...
- 计算机验证型数学实验报告,数学建模实验报告1.doc
数学建模实验报告1.doc 黑龙江科技学院 实 验 报 告 课程名称: 数学建模 专 业: 班 级: 姓 名: 数力系 实 验 名 称数学规划实验课 程数学建模主要仪器设备 计 算 机使用的软件名称M ...
- 计算机验证型数学实验报告,数学建模实验报告指要.doc
说明: 本实验大纲供写报告时参考.实验报告要求写明以下各项: 1.学生班级.姓名.学号. 2.实验名称.目的要求.时间.实验类型.实验内容. 3.实验环境(如Windows XP + MATLAB5. ...
- 数学建模matlab实验报告,数学建模实验.doc
<数学建模实验.doc>由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关<数学建模实验.doc>文档请在天天文库搜索. 1.数学建模课程实验报告专题实验7 ...
- 以美萍服装管理软件为例的UML建模
编号: 19757 软件框架文档 Software Frame Documents for [美萍服装销售管理系统] [mpfz] Version [3.4] approved Prepared ...
- 【软件设计师14】UML建模
UML建模 稳定出一个,但是由于UML的图比较多,所以这种题比数据流图和数据库难度高 一般都会考用例图和类图,再附加其他的图 1. 用例图 包含关系include:比如登记外借信息必须先有用户登录 扩 ...
- 软件设计师学习笔记-UML建模
UML建模 用例图 类图与对象图 顺序图 活动图 带泳道的活动图 状态图 通信图 协作图(顺序图的另外一种表达方式)
- 实验三 UML建模(软件工程)
(一)实验目的要求 1. 了解UML的特点 2. 熟悉掌握UML中各类图的画法 (二)实验材料和仪器设备 1. PC机 2.UML绘图环境 (三)实验内容 1. 银行计算机储蓄系统的工作过程大致如下: ...
- 单片机:步进电机(内含:1 步进电机简介+2 步进电机工作原理+ 3 步进电机技术指标 +4. 软件设计+5.原始代码+6.实验现象)
本章用到两个功能,推荐反复练习,重点是代码部分和步进电机原理部分 1 步进电机简介 步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件. 2 步进电机工作原理 通常步进电机的转子为永磁体,当电流 ...
最新文章
- Windows最经典应用大变脸:学生爽翻!
- 程序员面试题精选100题(33)-在O(1)时间删除链表结点[数据结构]
- PowerShell删除Exchange 2010邮件的正确姿势
- Python中 ‘==‘ 与‘is‘ 以及它们背后的故事
- 【译】Using Objects to Organize Your Code
- 解决Ubuntu系统中文乱码显示问题
- linux i2c adapter 增加设备_Linux驱动之I2C驱动架构
- 2017.9.26 于神之怒加强版 失败总结
- 湖南高校教师评职称计算机等级考试,湖南高校教师职称评审出台新规,这些要点你了解了吗?...
- Python3 uniform() 函数
- 《演讲之禅》迷你书免费下载 每小时30000美元的秘诀
- maven内存不足:Unexpected error occurred: Not enough memory to allocate buffers for rehashing Java heap
- 两小时学会ajax,全程无废话,直接上代码,追求速度的来
- 好用的桌面搜索引擎(如果你的快捷方式很多,可能会需要它)
- 到底什么是NP问题,NP hard问题,NP完全问题?
- 创建联系人vcf文件通讯录
- 用户研究中的定性研究、定量研究
- 图像_camera_基础知识_YUV色彩模型与RGB色彩模型详解
- 4.live555mediaserver-第一次select
- vins estimator ProjectionFactor (Td) factor
热门文章
- var_threshold
- VGG19图像风格迁移
- 看虚幻引擎技术大神分享烧脑干货《克服VR眩晕之帧数:提升UE4内容实时渲染效率》(备忘)
- 不确定性Uncertainty
- ADAS倒车雷达超声波传感器elmos524.03驱动
- iOS中雷达波扩散Layer层动画的实现
- 干货 | 携程风控数据仓库实践
- work文档,Excel表格常用快捷键
- IM“扫一扫”功能很好做?看看微信“扫一扫识物”的完整技术实现
- 计算机术语中bug指的是,你知道电脑漏洞为什么叫bug吗?