本文将分三个部分介绍Uml建模:Uml建模的作用、类图、startuml的使用
Uml的作用
本文以java为例介绍Uml,在当前的软件开发中大多数使用面向对象开发(OO),面向对象的就是将现实世界中的对象,行为,关系等模拟化到软件系统中。当在开发一个软件系统的时候,不会一开始直接编程。这样做的后果就是没有经过详细的设计,导致后期某些业务逻辑基于现有的系统不能开发。所以对于软件系统的设计尤其重要。对于系统的设计分为两部分:1.需求分析人员根据现实业务场景,梳理出业务关系。(eg:一个老师带一个班的课程)2.软件设计师设计出对应的对象关系,行为,状态等(一个老师类,一个学生类 ,多多关系)。UML建模是将现实世界的业务抽象到软件系统中,通过图形的方式勾勒出整个系统,在UML中可以清晰的了解所有模块之间的关联关系。
一:Uml 建模三种模型
类模型:描述系统内部对象及其关系的静态结构。类模型由类图构建,类图中节点表示类,类与类之间的关联关系用不同含义的弧标识。
状态模型:描述对象随着时间迁移发生了哪些变化。状态模型使用状态图确定并实现控制。状态图的节点是状态,弧是由时间引发的状态间的转移。
交互模型:描述系统中对象如何协作完成更为宽泛的任务。用例:关注系统的功能,即系统为用户做了哪些事情。顺序图:显示交互对象以及发生交互的时间顺序。活动图:描述重要的处理步骤。
二:面向对象建模离不开最基础的面向对象的特性:抽象,继承,封装,多态,这些特性都会表现在类图上,对象可以被实例化,实例化的对象的属性,操作,类型模拟具体的对象特征。
三:类模型的特征
1.关联关系(Associated):描述在对象之间在物理上或者概念上的联系。关系方向是双向的,人和工具的关联,人使用工具工作。人和工具是多对多的关系。
表示关联关系的符号:1..5(1~5),* (表示多的意思),+(表示类是public修饰的)
关联中还有一种自关联:自己关联自己,常见的在树形结构中,例如组织关系
一个子机构可以有多个父结构,一个父结构可以有多个子机构
2.泛化(generalization)指一个父类与其一个或多个子类之间的关系。子类继承父类的特性,还可以表现出更宽泛的特征。
:String(生命属性的类型),+(表示public) - (private)#(protected) ~(package) eat() (吃饭的方法)
3.实现(realization):接口是操作的集合,实现类继承接口,将接口声明的抽象操作具体化。例如:动物都有吃的动作,人是吃饭,猴子吃水果。
默认的接口图形是原型,在这里我再startUml 中修改了它的展现方式
4.聚合(aggregation)关系是一种弱关联。一个聚集对象有多个部件构成,部件是聚集的一部分。例如:车和轮胎的关系,轮胎没了,车依然存在。聚合具有传递性,A聚合B,B聚合C ,A聚合C,并且也具有反聚合性,A聚合C,C不能聚合A
这里以四轮车为例:一辆车由四个轮子聚合
5.组合(compostion):有两个恩爱的约束条件,一个组成部件至多属于一个装配件。而且一个组成部件一旦被分配给装配件,它就会和装配件有着相同的生命周期。装配件消亡,组成件也将随之消亡。例如:人和胳臂,人消失了,胳臂也不复存在,又例如:程序员没了代码就会死。这种关系要比聚合更强。这里也是用实心菱型表示。
6.单项关联(directedAssociation):没有生命周期的限制,一个引用另外一个
一个人有多辆车
7.依赖(dependency):物体与物体之间产生的依赖关系,例如:人依赖空气和水
所有的关联关系:
一个动物的接口被人类所实现(realization),人这个类被男人和女人两个类所泛化(generalization),人类依赖(dependency)水和空气而存活,人类的胳臂和腿才能组合(compostion)成人类,缺一不可,人类消亡,胳臂和腿已经消亡.人类可以开一辆车或者多辆车(directedAssociation),多个车轮聚合(aggregation)成车的一部分,人类可以自关联,人类的父亲,孩子。人类也可以双向关联(association)
四:startUml的使用
1.下载startUml之后双击打开,点击default approach.
2.若左侧的工具栏没有显示,则点击view-->toolbox 在前面勾选,勾选model explorer。
3.找到Model explorer-->design model 右键点击 add--->选择package或者class
选中之后修改名称
3.拖拽这个类到文本框中进行编辑
4.连接关联关系,直接拖拽
5.直接添加的接口是圆形图标,要想设置成方格的形式Format-stereotype dispaly-textual
6.选中类或者接口点击这两个按钮既可以显示属性和行为(方法)