本文主要是介绍UML 与rational rose 使用(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、UML
UML—Unified Modeling Language;UML是一种标准的图形化建模语言,是面向对象分析与设计的标准表示
二、实操 类图
Rational Rose简明实用教程-CSDN博客
用面向对象方法开发软件通常需要建立的三种模型:
⒈对象模型:描述系统数据结构的模型;
⒉动态模型:描述系统控制结构的模型;
⒊功能模型:描述系统功能的模型。
对象模型是最重要、最基本、最核心的
1.范例1
用Thoroughbred类对优良品质的马进行建模。它有3个属性:mother,father,birthyear,还有3个操作:getCurrentAge()、getFather()和getMother。
每个属性都有名字、类型和可见性级别。类型和可见性都是可选的。类型放在名字后面,并用冒号进行分隔。可见性由前面的-、#、或+指定,分别代表私有、受保护、包或公有可见性。在实验中,所有属性都是私有的,由前面的减号(—)指出。可以用可见性级别、带名字和类型的参数以及返回类型来表示每个操作。
(1)创建类 Thoroughbred
(2) 定义三个属性 mother,father,birthyear
(3)将私有成员属性改成减号
view -> Toolbars -> configure -> notation -> 将对号去掉,点确认
2.范例2
College有一个包含Building对象的聚合,这表示建筑构成了学院。学院也有一个包含课程的组合。Course类也受到约束性注释(注释Course一定在某个Building中进行)。
如何用Rational Rose画聚合与组合关系(空心菱形与实心菱形)_rose组合关系怎么画-CSDN博客
UML用例图之关联关系、包含关系、扩展关系、泛化关系详解_用例图中的扩展关系-CSDN博客
下面链接里有关联关系 设置几对几的操作
UML一一 类图关系 (泛化、实现、依赖、关联、聚合、组合)_uml类图关系-CSDN博客
3.范例3
简化的网上购物系统需求说明:客户(Customer)具有四个属性:姓名(name),联系电话(contact),邮寄地址(deliveryAddress)和是否激活状态(active),订单(Order)具有两个属性:创建日期(createDate),订单状态(status)包括CREATE、PAID、SHIPPING、DELIVERED、CANCEL五种状态;订单详情(OrderDetail)具有一个属性:数量(quantity),并具有calculateSubTotal()、calculateWeight()方法;商品项(Product)具有名称(title)、重量(weight)和描述(description),并具有getPriceForQuantity()方法和getWeight()方法;支付方式(Payment),具有金额(amount)属性;支付方式支持以下五种支付方式:信用卡Credit,具有卡号(number)、类型(type)和过期日期(expireDate);现金(Cash),具有支付金额(cashTendered)属性;在线转账(WireTransfer),具有银行ID:bankID,银行名称bankName属性,支付宝(AliPay)具有卡号number属性;微信支付(WeixinPay),具有卡号属性。请根据以上简化的网上购物系统的关键类描述说明,创建类模型,并定义类之间的关系包括多重性(Multiplicity)。
(1)关于有五个订单状态:
UML类图绘制实例_uml建模实例-CSDN博客
上连接中 (为图书馆管理系统UML),语言有五种语言
(2)关于多重性
详解UML类图之---多重性分析_类图多重性-CSDN博客
(3)聚合和组合的区别
聚合关系
*聚合关联是一种特殊的关联. 它表示类间的关系是整体与部分的关系. 简言之: 关联关系中的一个类描述了一个较大的事物, 它由较小的事物组成.
* 聚合关系描述了 “has a” 的关系, 即整体对象拥有部分对象
*整体和部分之间用空心菱形箭头的连线连接, 箭头指向整体
组合关系
*组合关系是更强形式的聚合.
*组合关系中, 整件拥有部件的生命周期, 所以整件删除时, 部件一定会跟着删除. 而且, 多个整件不可以同时共享同一个部件。
*聚合关系中, 整件不会拥有部件的生命周期, 所以整件删除时, 部件不会被删除. 再者, 多个整件可以共享同一个部件.
*UML 中组成关系用实心的菱形实线表示。
https://blog.csdn.net/qq_44275015/article/details/106319882?ops_request_misc=&request_id=&biz_id=102&utm_term=%E7%BD%91%E4%B8%8A%E8%B4%AD%E7%89%A9%E7%B3%BB%E7%BB%9Fuml%E7%B1%BB%E5%9B%BE&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-4-106319882.142^v96^pc_search_result_base4&spm=1018.2226.3001.4187
上图链接为用例图类图练习(网上购物平台)
https://blog.csdn.net/qq_47230378/article/details/121341316?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169763784916800226589791%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=169763784916800226589791&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-121341316-null-null.142^v96^pc_search_result_base4&utm_term=%E7%BD%91%E4%B8%8A%E8%B4%AD%E7%89%A9%E7%B3%BB%E7%BB%9Fuml%E7%B1%BB%E5%9B%BE&spm=1018.2226.3001.4187
上链接为 淘宝系统 B2C电子商务系统UML建模 范例 感觉并没有很准确,不如图书的那个
三、 实操状态图 StateChart diagram
使用状态图来描绘对象的状态、触发状态转换
的事件以及对象的行为
动态模型的三要素:
① 事件 (event):引发对象状态改变的控制
信息(瞬时)
② 状态(status):即对象的属性所处的情形
(可持续)
③ 行为(action):对象要达到某种状态所做
的操作(耗时)
(1)找到分支节点
在工具栏上右键点击,从菜单中选择:customize按钮
1.范例1绘制恒温水箱
绘制恒温水箱20°~100°的状态图。恒温水箱启动之后,当温度传感器检测温度低于20°时,如果水量传感器检测到水箱中有水,则打开继电器电源,开始烧水;如果水量传感器检测到当前无水,则不打开电源烧水。当温度传感器检测到水箱中水的温度达到100°,则断开电源。如果水箱烧坏,则进行维修。当晚上11点整时,自动断开电源,进入休眠状态;早上7点整,自动进入上述恒温烧水过程。
UML之教学管理系统——5、Rational Rose画状态机图(一)-CSDN博客
(1)创建状态图
右键单击Logical View,“New”——》“Statechart Diagram”(状态机图)——》命名。双击打开
(2)读题 ,寻找重要对象
对于恒温水箱 最重要对象是水箱 ——>即要画水箱的状态图
(3)寻找这个对象的所有重要状态 ,
对象的状态取决于对象所包含的所有数据
用形容词来命名状态,并且注意合并相同的状态,例如,对于账号的状态图,未登录和已注销就是同一种状态。
仅供参考
2.范例2 绘制ControlPanel状态图
阅读教材《软件工程-实践者的方法》第八版 SafeHome项目说明(教材122页第八版,教材102页第九版),针对控制面板ControlPanel的状态建模,绘制ControlPanel状态图。SafeHome控制面板的行为说明参考如下:
在SafeHome的安全功能中控制面板类ControlPanel的状态如下:
户主敲击控制面板的键盘按键输入密码时,控制面板处于读取键入字符状态。每输入一个字符则执行输入密码与设置的密码长度(4位)比较,如果达到密码长度则验证密码是否正确;如果输入密码错误3次,则锁定控制面板;锁定时间超过120秒之后,再次允许户主输入;如果输入的密码正确,控制面板进入系统功能选择状态。
(1)对象:状态面板ControlPanel
(2)插入动作
3.提取字符串
可以参照2
3.编写之前三个范例的代码
java
Error:Cannot run program “C:\Program Files\Java\jdk1.8.0_66\bin\java.exe“ (in directory “D:\ideaIU-2_d:\program files\java\jdk1.8.0_341\bin\java.exe" (_Cesium开发的博客-CSDN博客
四、 实验五
(1)绘制边界类、控制类和实体类三种分析类,并绘制B-C-E包图
边界类:系统及其参与者的边界
控制类:系统的控制逻辑
实体类:系统使用的信息
1.边界类
通过用例图可以确定需要的边界类
(2)控制类
识别控制类
在系统开发早期,为一个用例定义一个控制类,负责该用例的控制逻辑
针对复杂用例,可为备选路径分别定义不同控制类
3.实体类
可以从以下中找到实体类
用例事件流(需求) 、业务模型(业务建模)、词汇表(需求)
实体类是名词、名词短语
只看这张ppt,可能不太懂,
例:
五、最后一次实验
有一个叫 HuntBird 的游戏,里面需要表示各种各样的鸟类。采用Bridge设计模式实现,针对各种鸟类,采用Bridge设计模式建模,如下图:
注意:
(1)绘制类之前,首先设置默认语言为Java/C++(本例以Java说明)
(2)Bird类为抽象类
(3)display方法为抽象方法
(4)Bird具有保护类型的FlyBehavior属性;
1.设置接口<<Interface>>
(1)在Stereotype给出的列表中选择Interface
(2)
2.设置#号,即为Bird设置具有保护类型的FlyBehavior属性
3.设置抽象类
4.设置抽象方法
双击进入display
勾选abstract
2.按照以下给出的要求,扩展类图,并生成代码框架,实现代码,测试
(1)添加一个飞翔的行为的实现类UnableFly,实现fly接口方法:扑腾几下飞不起来;
(2)添加游泳的行为SwimBehavior接口,两个实现类AbleSwim,实现swim接口方法:鱼翔浅底;UnableSwim实现类实现swim接口方法:扑腾几下就淹死了:
(3)添加两个具体类:老鹰Eagle和企鹅Penguin,并实现相应代码,即构造函数和display抽象方法
(4)使用Client类,测试以上代码
这篇关于UML 与rational rose 使用(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!