uml概述
uml(UNIFIED MODELING LANGUAGE)
uml是一种工具,隐藏在其后面的是面向对象的想法
url非常适合面向对象分析和设计,在软件开发中想法
很重要,而uml是用来表达我们想法的工具
统一建模语言
建模:给现实世界里面的这些事物,建立一种能够被人理解的模型
UP
:统一过程的缩写,是一种以用例驱动、以体系结构为核心、迭代及增量的软件过程模型,由UML方法和工具支持,广泛应用于各类面向对象项目。
RUP(Rational Unified Process),统一软件开发过程,统一软件过程是一个面向对象且基于网络的程序开发方法论,描述了如何有效地利用商业的可靠的方法开发和部署软件,是一种重量级过程(也被称作厚方法学),因此特别适用于大型软件团队开发大型项目。
软件开发过程(software development process)描述了构造、部署以及维护软件的方式。
- 统一过程( The Unified Software DevelopmentProcess,UP) 是一种流行的构造面向对象系统的迭代软件开发过程。
UP其主要概念是:以构架(各种模型)为中心、用例(开发软件的目标)驱动、迭代和增量式开发- 特别是,Rational统一过程( Rational Unified Process,RUP)是对统过程的详细精化,并且已经被广泛采纳。
OOA/D
:全称面向对象分析方法(Object-Oriented Analysis,OOA),是在一个系统的开发过程中进行了系统业务调查以后,按照面向对象的思想来分析问题。
面向对象分析与设计
UML不是OOA/D,也不是方法,它仅仅只是一种图形表示法
。表示的是OOA/D的想法
分析(analysis)
对问题和需求的调查研究
设计(design) :
满足需求的概念上的解决方案,也就是对设计的细化,比如使用java进行开发,进行分析是有一些功能java不能实现,必须换另一种方法去实现该功能
面向对象分析:
在问题域内发现和描述对象
面向对象设计:
如何定义软件对象以及它们之间如何协作以实现需求
示例:
开发一个软件,模拟游戏者投掷两个骰子,如果总点数是7则赢得游戏,否则输
开发过程如下:
-
定义用例:用例是需求分析的一种工具,它是一些情节的描述
1、游戏者请求骰子
2、系统展示结果:如果骰子的总点数是7,则游戏者赢;否则游戏者输 -
定义领域模型(OOA):识别问题中的概念,它是对真实世界领域中的概念和想像可视化,与具体实现的软件技术无关(比如java或C# )
骰子游戏的领域模型
游戏者、骰子、骰子游戏之间的关系:游戏者投掷两个骰子,一个游戏者可以玩一次骰子游戏
-
定义交互图:00D关注的是:软件对象的定义-职责与协作
分配对象职责并绘制交互图(动态建模)
-
定义设计类图:静态建模,从领域模型以及交互图中获得启示,定义软件类,包括属性、方法等等
骰子游戏的局部设计类图示例如下:
UML概述
标准定义:统一- 建模语言(Unified Modeling Language,UML)是描述、构造和文档化系统制品的可视化语言。
UML是一个庞大的图形化表示法体系
应用UML的三种方式
- 草图
- 蓝图
- 编程语言
学习UML的要素
- 表示法:图形
- 过程:(UML与过程无关,但最好用于RUP)
- 工具: (比如: Ratinal Rose )
UML包括:事物、关系、图、扩展机制
事物
结构
:类、接口、构件、节点等等
类:表示一个实体,描述概念、执行功能等
接口:功能性的描述
构件:软件的一个模块,比如一个dao文件、java文件、jar包…
节点:部署里面的概念,比如数据库节点、一个服务器节点等,描述整体系统的部署结构
行为
:交互(消息)、状态等等
交互(消息):描述调用方法
状态:状态的变化,一个功能的变化,可以通过状态图活动图去描述
分组
:包、子系统等等
包:用于组织其他事物的一种功能
子系统:从大的方面描述各系统之前的关联关系
注释
:注释
注释:使用注释去面试
关系
关系:事物之前的关系,有依赖、关联(聚合、组合)、泛化、实现。
依赖
比如功能管理系统与权限管理系统之前的依赖关系
关联(聚合、组合)
表示对象之前的结构关系,比如在一个组织机构里面,部门里面有一些人,建立部门之间与人之间的关联关系
聚合:关联双方,整体与部分之间的关系
组合:是一种强聚合,整体与部分之间的生命周期是一致的
泛化
映射为java中的继承,是一种什么东西,比如猪是一种动物,猪是对动物的一种泛化
实现
在java当中就是implements(实现),对某一种规范的实现,定义具体的细节
图
图:相当于一种角度,从不同的角度观察系统,然后会产生不同的概念,比如用例图、交互图(顺序图、协作图)、类图、活动图、状态图等等
用例图:从功能需求进行分析,描述功能
交互图(顺序图、协作图):用于如何实现功能的过程
比如添加用户时,首先需要打开界面,然后输入用户信息,提交…
类图:描述部门和人之前的关系是多对一的关系
活动图:表示一种流程,整个系统都描述清楚
比如在登录时,需要各种各样的判断…
状态图:描述状态的变化,
比如校园卡状态的变化,比如格式化、消费、关联学生、挂失、注销等状态变化
扩展机制
Stereotype、Tagged Value、Constraint
只有在特定的环境下才有作用