您的位置:首页 > 其它

初识UML

2018-01-28 17:28 253 查看
为什么要建模?
  如果自己想盖一栋豪华的房子,你会不会事先规划一下自己房子的样式,以及画一些图纸之类的东西?不会直接拿来砖就开始盖房子吧?软件设计就像盖房子一样,不是简单的代码写完了,功能实现了就可以做出高质量的软件是的,做任何大工程的时候都应该绘制蓝图,即我们所谓的建模。

建模两种常用的方法:基于算法的建模、面向对象的建模
算法的建模思想:程序或函数
面向对象的建模思想:类或对象

面向对象建模在任何情况下能够良好的建模,当然最典型的就是我们的统一建模语言(UML)



UML:

面向对象的、可视化建模语言。
优点:可视化建模—一幅图顶上千言万语。
UML的构成:(事物、关系、图)事物是模型中最具有与代表性的成分的抽象,关系把事物结合在一起,图聚集了相关的事物
事物:构成模型图的一些基本符号
事物种类:结构事物、行为事物、组织事物、注释事物

   
结构事物(UML中的静态部分)

类(class)
:相同属性、方法、关系和语义对象的描述。——用矩形表示
个人理解:就是具有相同属性的对象,例如学生这个类,学生每个人有自己的学号、班级、学院等。

接口(interface):一个类或构件的一个服务的操作集。——用圆形表示
个人理解:类或组件对外的动作,作用无非就是转换和连接。就像我们的电脑接一个外接显示器一样,就是一个连接的功能。

协作(collaboration):一组共同工作已提供某种协作的角色和其他元素构成的群体。——用虚线椭圆表示。

用例(usecase):是一组动作序列的描述、一个用例就是一个用户的需求——用实线椭圆表示

个人理解:用来捕获用户需求,完成一个具体的用户目标,就是一个具体的功能。

主动类(active):其对象至少拥有一个进程或线程,因此它能启动控制活动。——外粗内细的矩形。

构件(component):系统中物理的,可代替的部件,遵循且提供一组接口的实现。——一个大矩形,交叉嵌套两个小矩形。

节点(node):运行时存在的一个物理元素,表示了一种计算机资源。——用立方体表示。
个人理解:代表着一种设备,例如处理器、或者服务器等。

行为事物:(UML的动态部分)代表时间和空间上的动作。
交互(interaction):特定环境中共同完成一定特定任务的一组对象之间交换的消息的组成。一个对象的群体行为或单个操作的行为可用一个交互来描述。——用带箭头的直线表示。
状态机(state machine):一对象的一个或者多个状态的集合。——用圆形矩形表示。

组织事物:UML模型的组织部分,最主要的分组事物是包。

个人理解:就是一个黑盒子,盒子里面关系太复杂,不需要知道是什么,只需要知道盒子和盒子之间关系就可以,这样看起来方便,就像你玩手机一样,玩之前不需要知道手机是如何制作的、材料是什么。

包:有组织的将一系列元素分组的机制。——用类似文件夹的符号表示。

注释事物:(UML模型中解释的部分)用来描述、说明和标注模型的任何元素。——用折起一角矩形表示。

注释:UML模型中解释的部分。



关系:基本图示符号之间的关系(关联、聚合、依赖、泛化、实现)



关联关系:一个对象和一个对象之间的联系。一个类访问另一个类。例如学校雇佣教师、教师—工作—学校 直线代表关联关系

单向关联和双向关联



聚合关系:类和类之间关系是整体和部分之间的关系。(整体—部分关系)



聚合与组合:(组合比聚合更加强势)

左边聚合:(空心菱形)

一个火车包含一个或者多个引擎,一个引擎属于0个或者多个火车

右边组合:(实心的菱形)

整体—部分关系

列表包含0个或者多个节点,一个节点只属于一个列表

节点不能脱离列表而存在、先有列表才有节点



泛化关系(Generalization)也就是继承关系,也称为“is-a-kind-of”关系,泛化关系用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类。在UML中,泛化关系用带空心三角形的直线来表示。
在代码实现时,使用面向对象的继承机制来实现泛化关系,如在Java语言中使用extends关键字、在C++/C#中使用冒号“:”来实现。


依赖关系(Dependency)
是一种使用关系
,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系。大多数情况下,依       赖关系体现在某个类的方法使用另一个类的对象作为参数。在UML中,依赖关系用带箭头的虚线表示,由依赖的一方指向被依赖的一方。



依赖关系有如下三种情况:

1、A类是B类中的(某中方法的)局部变量;

2、A类是B类方法当中的一个参数;

3、A类向B类发送消息,从而影响B类发生变化;

实现关系(Implementation):是用来规定接口和实线接口的类或者构建结构的关系,接口是操作的集合,而这些操作就用于规定类或者构建的一种服务。

接口之间也可以有与类之间关系类似的继承关系和依赖关系,但是接口和类之间还存在一种实现关系(Realization),在这种关系中,类实现了接口,类中的操作实现了接口中所 声明的操作。在UML中,类与接口之间的实现关系用带空心三角形的虚线来表示。

接口用圆形表示

 


使用技巧:

1.能用关联表达的就不要用依赖,能用聚合和组合表达的就不要用普通关联

2. 能用继承的时候就用泛化关系

3.描述类和结构的关系,用实现关系

4.两个类之间有结构关系就用关联

5.其他用依赖

图:特定视角对系统所作的抽象的描述

九种图:用例图、类图、对象图、构件图、部署图、状态图、活动图、顺序图、协作图

静态视图(表达静态事物):用例、类图、包图

动态视图:活动图、状态图、时序图、协作图

几种图的区别:

一:这九种模型图各有侧重,

1:用例图侧重描述用户需求,

2:类图侧重描述系统具体实现;

二:描述的方面都不相同,

1:类图描述的是系统的结构,

2:序列图描述的是系统的行为;

三:抽象的层次也不同,

1:构件图描述系统的模块结构,抽象层次较高,

2:类图是描述具体模块的结构,抽象层次一般,

3:对象图描述了具体的模块实现,抽象层次较低。

 

在有的文献书籍中,将这九种模型图分为三大类:

结构分类、动态行为和模型管理:

1:结构分类包括用例图、类图、对象图、构件图和部署图,

2:动态行为包括状态图、活动图、顺序图和协作图,

3:模型管理则包含类图。

其它总结:

面向对象与面向过程
UML—用例图
UML—类图
UML—状态图
UML—活动图
UML—包图、对象图
UML—时序图、协作图
UML—组件图、配置图
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: