UML与Rational Rose
采用b站动力节点视频学习:
【动力节点】UML与Rational Rose
视频:
什么是UML
Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是始于 1997 年一个 OMG 标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。面向对象的分析与设计(OOA&D,OOAD)方法的发展在 80 年代末至 90 年代中出现了一个高潮,UML 是这个高潮的产物。它不仅统一了 Booch、Rumbaugh 和 Jacobson 的表示方法,而且对其作了进一步的发展,并最终统一为大众所接受的标准建模语言。
软件开发的时候,系统设计师/系统架构师给出 UML 设计图,程序员将来要根据 UML 设计图进行编码/开发。
需求图?
能够实现 UML 图的建模工具有哪些?
IBM Rational Rose
StarUML
MS Visio(比较在行的是流程图)
。。。。。。
常见的 UML
类图(Class Diagram):描述类的信息(包括属性、方法),以及类和类之间的关系信息。
用例图(Use Case Diagram):站在系统用户(系统角色)的角度分析系统存在哪些功能。
时序图(Sequence Diagram):描述程序的执行过程,方法的调用过程,方法的返回值等信息。(程序是一步一步怎么执行的,怎么调用的。)
状态图….
活动图….
UML图之类图
什么是类图?
描述类的信息,以及类和类之间的关系信息。
打开IBM,canel
保存你会发现
他的文件的后缀是.md,即models类型
命名crm,保存
画一个类图
通常在Rational Rose
工具的Logical View
目录下实现类图,一般会创建一些目录用来组织这些类图,因为类可能会比较多。
右键——new——package——rename(类图)
类图——右键——new——class Diagram(类图)
这就是画图的
先来一个市场活动 的一个类图
双击就打开了一个画布
根据需求去设计:
点击右边的class,选中类——取名Activity
双击打开,属性和方法等
点到attributes——属性
把上面的属性加上
以id为例子:
这里是private
如果换成public会咋样?
会变成锁定状态:
不能更改数据
然后改回private
继续添加
也可以这样直接在下面enter,写
添加如下:
根据这个图会写代码
打开这个画布窗口就点击一下画布——市场活动就行了
UML图之泛化关系
类和类之间的关系包括 6 种情况:
先总结一下:
- 泛化关系:(is a:Cat is an Animal——》继承)
- 实现关系:(like a: Cooker like a FoodMenu)
- 关联关系:(has a: Programmer has a Comper)
- 聚合关系
- 组合关系
- 依赖关系
泛化关系
泛化关系(is a:Cat is a Animal→继承):类和类、接口和接口的继承。
打开Rational Rose,建立Cat类图和Animal类图
然后Cat类继承Animal类,所以空心箭头→指向Animal
选择左边工具栏——generalization
可以把代码写下:
选择左边——note
Cat继承Animal
选择左边项目锚注——association class
可以选中crtl+c粘贴到word中
UML图之实现关系
实现关系(like a:Cooker like a FoodMenu):类和接口的实现
定义一个接口FoodMenu
选择左边——interface
右键——Options——stereotype display——label
以label形式显示
定义个Cooker类
然后Cooker实现FoodMenu
左边——realize
代码实现——implements(实现)
选择左边项目锚注——association class
链接代码
UML图之关联关系
关联关系(has a:Programmer has a Computer)
定义一个程序员类Programmer 和一个电脑类 Computer
有一个方式描述,有联系
使用左边——undirectional association(不定向联系)
双击箭头打开——例子:
描述之间数量关系:
一个程序员·
一个电脑
还可以描述角色:
电脑——coder
箭头的方向不能乱变的
上面是通过程序员可以找到电脑的
实线箭头表示:通过Programmer可以找到Computer,
Programmer对象当中有一个Computer的属性。
public class Programmer{Computer coder;
}
public class Computer{
}
Programmer里面的定义的电脑必须是它的名字——coder
因为你前面定义过了
自关联
定义个人类Person类,《人类》
然后属性加一个名字name
然后选择undirectional association(不定向联系)
关联
自己
描述角色和定义数量
然后代码note
双向
定义人类类Human
属性定义好:名字和性别
先搞一个指向自己的单箭头
角色添加指向wife
但是你通过妻子也能找到你才对
所以应该是双向的
在Human上定义角色husband
如果要使用双向的话,把选项上的Navigable取消掉
补充上代码 定义类和属性
UML图之聚合关系
聚合关系描述的是整体和部分的关系,聚合关系是比较特殊的关联关系
比如:一个教室当中有多个学生,教室和学生之间的关系就是整体和部分的关系;
在聚合关系中,整体的生命周期不会决定部分的生命周期,例如:教室没了,学生还在,或者说学生走了,教室还在
例子:
定义一个ClassRoom类图和Student类图
然后关联undirectional association(不定向联系)
双击箭头改成聚合
先取消Navigable
在ClassRoom大的界面上勾选aggregate(集合的意思)
定义数量1对多
1个教师多个学生
定义1——0…n
这里还定义了角色students
最后把代码贴上:
UML图之组合关系
组合关系可以看做是一种特殊的聚合关系,整体的生命周期决定部分的生命周期,部分是依附在整体上面的,部分离开了整体是无法“存活的”。
例如:人和四肢的关系。
部分依赖整体,整体决定部分
例子:
先定义人Person类图和肢体类
然后关联undirectional association(不定向联系)
定义数量关系
1个人可能有四个到0个肢体,残疾人。。。。。
1对 0…4
先取消Navigable
整体是人,所以人那里的aggregate选中
然后再选中by value
表示组合关系
定义个角色
写代码:
UML图之依赖关系
依赖关系是所有关系中最弱的一种,这种关系通常体现在类和局部变量之间的关系。
例子:
定义一个类test和市场活动clue
这是泛化
定义的Clue是在方法里面的
如果挪出来
这是关联关系 has a
但是如果是在方法里面的,所以是依赖的,比较弱
用例图 use case diagram
什么是用例图 ?
站在系统用户(系统角色的角度分析系统存在哪些功能?
实现用例图的时候,需要先进行系统角色的抽取。
在 Rational Rose
工具当中一般会在 Use Case View
当中实现用例图。
怎么实现用例图?
定义角色
先新建一个包:package 命名:系统角色
再new——actor
用例图
新建个package 用例图
再新建一个package 部门管理
下面new——use case Diagram
画布
打开
把上面定义的管理员的角色拖过来
拖入用例 左边——useCase
定义这几个用例:
点击左边 关联undirectional association(不定向联系)
联系起来
这就是用例图
!UML图之时序图
最重要的!!!!! 写代码用
什么是时序图
时序图当中描述了方法的调用过程,程序的执行流程,以及方法执行结束的返回值情况。
怎么实现时序图呢?
时序图通常会在 Rational Rose
的 Logical View
中实现。
用例图当中的一个用例
会对应时序图当中的一个时序图
。
时序图描述的是一个功能具体是怎么实现的,流程是什么?
建包这样
新建一个画布 命名查看部门列表
建立存放系统类的包
要实现的是查看部门列表的时序图
那就是系统管理员实现
拖入
按照咱们设置的顺序
先是控制器,点击它的画布
定义类
然后拖进去
调用控制器的
使用左边——object mssage
调用的是里面的service方法
点击它右键new出来
这样控制器里面就有了
定义参数,返回void
会发送请求 代码
service点击调用自己
在调用
new出来dolist
属性一样的
控制器调用service
转到业务层service:
定义接口
拖进去
关联起来,定义方法getall
方法new出来
设置属性
Dept是部门,所以要转到领域模型创建
部门类Dept
回到主界面
会调用dao
在dao中定义接口
拖进去
然后
new 出来
dao里面
转到主界面
object用例
定义DB
关联
返回数据
在控制器这里自调用
转换格式
总结:
小人:动作的发起人
矩形/小圆圈:对象
实线箭头:调用
虚线箭头:返回
柱状:对象的生命周期,柱状不能断,在同一个流程当中不能断。
回折线:当前类的方法执行过程中调用自己当前类中的其它方法。
举个例子:
public class A{}
public class B{
public void m1(){}
}
这时候调用B中的m1
public class A{}
public class B{
public void m1(){
C c = new C();
c.m2();
}
}
public class A{}
public class B{
public void m1(){
C c = new C();
c.m2();
}
public void m4(){
......
}}
然后自己调用了
public class A{}
public class B{
public void m1(){
C c = new C();
c.m2();
m4();
}
public void m4(){
}
}
然后到c
public class A{
public void XXXX(){
B b = new B(); b.m1();
}
}
public class B{
public void m1(){
C c = new C(); c.m2();
m4();
}
public void m4(){
......
}
}
public class C{
public void m2(){
m3();
}
public void m3(){
....
}
}
UML与Rational Rose相关推荐
- Uml 与 Rational Rose( 类图 )
Uml 与 Rational Rose( 类图 ) 分类: UML 2005-12-04 16:09 类之间的关系可以分为四种: 关联关系( Association ) 依赖关系( Dependan ...
- Uml 理解Rational Rose软件中四种视图和Uml 9类图之间的关系
对于一个稍有规模的软件来说,列出系统内类之间的关系,对象之间的时序协作,有利于系统的梳理和扩展,使系统逻辑更有条理.下面这片文章对于四种视图的使用有提纲挈领而又不失详细的说明,可以一看. http:/ ...
- UML建模工具Visio、Rational Rose、PowerDesign,Visual Paradigm for UML
UML建模工具Visio .Rational Rose.PowerDesign,Visual Paradigm for UML ROSE是直接从UML发展而诞生的设计工具,它的出现就是为了对U ...
- UML总结(对九种图的认识和如何使用Rational Rose 画图)
UML是一种建模语言,是系统建模的标准.我们之所以建模是因为大规模的系统设计时相当复杂的,当系统比较复杂时就会涉及到以下这几个问题: 开发人员如何与用户进行沟通来了解系统的需求? 开发人员之间如何沟通 ...
- 三大UML建模工具Visio、Rational Rose、PowerDesign的区别
三大UML建模工具Visio.Rational Rose.PowerDesign的区别 本文源自http://developer.51cto.com/art/201006/207993.htm UML ...
- Rational Rose画UML状态图
我们都知道一个状态图标有如下细节:状态名和活动. 最常用的3个活动是入口活动(entry).出口活动(exit).动作(do).还可以增加其他 的动作或事件. ps. 这几句来自李虎译的<UML ...
- UML之教学管理系统——3、Rational Rose画顺序图
一.实验内容 绘制顺序图,以"删除课程"(Delete Course)为例. 二.实验工具 Rational Rose 三.实验步骤 第一步,创建协作. Logic View中创建 ...
- UML之教学管理系统——5、Rational Rose画状态机图(一)
一.实验内容 画针对学生的课程Course的状态机图. 二.实验工具 Rational Rose 三.实验步骤 1.选择对象. 针对学生的课程Course的状态机图. 2.列出对象的状态. 课程的状态 ...
- Rational Rose 下载安装
转载自:http://www.uplei.cn/post/180.html Rose介绍:Rose是Rational公司的产品,有一系列.本文指的是Rose建模工具,它支持UML用来画用例图,序列图, ...
- rational rose 逆向工程
这一节主要介绍用户如何使用Rose的逆向工程生成UML模型,并用来进行C++代码的结构分析. Rational Rose可以支持标准C++和Visual C++的模型到代码的转换以及逆向工程.下面将详 ...
最新文章
- portal商品展示功能逻辑
- 自动驾驶科普:一辆无人车到底是怎样工作的?
- c++ builder 中的 XMLDocument 类详解(2) - 记要
- 如何在 Linux 中快速地通过 HTTP 提供文件访问服务
- python的request请求401_Python模拟HTTPS请求返回HTTP 401 unauthorized错误
- 计算机的发展英语600词,程序员必备的600个英语词汇
- IDEA几款不错的基于Darcula的深色主题
- 计算机不支持此接口,Windows10提示不支持此接口的解决方法
- 计算机程序员 面试题库,计算机软考程序员面试题精选题2
- C# Revit二次开发
- Java面试相关问题以及解析
- TTW WYSIWYG Editors
- 游戏编程模式 - 观察者模式
- HDU-2017 多校训练赛9-1005-FFF at Valentine
- 由于不能验证所收到的数据是否可信,无法显示您想要查看的页面。建议向此网站的管理员反馈这个问题。
- P2713(罗马游戏 可并堆模板)
- SylixOS vutex
- Mac搭建stf教程-2023
- 2013-2014-2学期,综合实训概况
- 关于SICK公司的LMS511返回数据的数据结构说明