您的位置:首页 > 其它

UML Introduction

2016-06-06 15:02 183 查看
UML 2的层次结构,来自wikipedia



本文用到的术语表:

术语中文
Class Diagram类图
Component Diagram构件图
Object Diagram对象图
Activity Diagram活动图
Use Case Diagram用例图
Sequence Diagram序列图
Dependency依赖
Association关联
Aggregation聚合
Composition组合
Generalization泛化
Realization实现

UML 2的阴和阳

UML 2包含两种基本的类型:结构图、行为图。

结构图:展示系统的静态结构,例如 类、组件、对象图

行为图:系统中对象间的动态行为,例如 活动、用例、序列图

结构图概述

结构图用来展示系统中的类型(type)和类型的实例(instance),同时也展示了元素之间的关系,甚至是元素的内部结构。

结构图在整个软件构建周期内,对团队的所有类型的成员都有用。一般用在团队和个人之间验证和交流设计。例如:业务分析师 使用类图或对象图来展示目前的资产和资源情况;架构师 使用构件图和配置(deployment)图来测试/验证他们的设计;开发者 使用类图来设计和文档化系统代码类。

UML 2把结构图当成一个分类,没有设计一个叫做”结构图“的图。但是,类图提供了结构图类型的基本样例,提供了初始的符号元素集合,所有其他的结构图都是用这些符号元素。

类实例之间的关系

依赖

表现为函数中的参数(use a)。依赖是单向关系,是两个元素之间语义上的关系,被依赖项的改变会导致依赖项的改变。Java中的参数引用、局部变量、静态方法调用属于依赖关系。例如电视(TV)依赖于频道(Channel)的依赖关系如下:



关联

表现为变量(has a)。关联关系有双向关联和单向关联,大多数关联应该是单向的,单向关系更容易建立和维护,聚合和组合都是特殊的关联关系。Java中的全局变量属于关联关系。例如人(Person)跟杂志(Magazine)之间的关联关系如下:



聚合

聚合与组合是特殊的关联关系。

聚合表示两个类处于不同的层析,一个是整体一个是部分,但是是一种弱的拥有关系,整体和部分是可分离的,可以具有各自的生命周期,部分可以属于多个整体,也可以为多个整体对象共享;比如计算机与CPU、公司与员工的关系。表现在代码层面合关联关系是一样的,只能从语义上区分。

举例:Car 是一个整体,Car Wheel 是整个 Car 的部分,但是在组装整车之前,Car Wheel 可以提前制造出来存放到仓库里。在这个例子里,Wheel 是 Car 的一部分,但是 Wheel 是独立存在的,不依赖于 Car 类型的实例,所以它们之间是 聚合关系



组合

组合是比聚合更强的关联关系,它要求整体负责部分的生命周期。比如你与你的大脑、window窗体与frame,在窗口中创建一个frame时必须把它附加到窗口上,当窗口消失时frame也就消失了。表现在代码层面和关联关系是一样的,只能从语义上来区分。

举例:Company 是一个整体,Departments 是这个整体的部分,但是 Departments 类不能在 Company 出现之前出现,Departments 类的实例依赖与 Company 类实例的存在,所以它们之间是 组合关系



类之间的关系



泛化

泛化关系也被成为继承(inheritance)或者“is a”关系,类之间的泛化关系也就是Java里的继承extends,例如上例的类 BigRectangle 泛化了类 Rectangle,不仅拥有类 Rectangle 的行为,还可以拥有自己独特的行为。

实现

实现关系对应Java里的implementation关键字,表示一个类实现了接口声明的行为,例如上图类 Rectangle 实现了接口 Shape 声明的setLength方法。

reference:

Class Diagram (Wikipedia website)

Class Diagram Relationships in UML with Examples

IBM Class diagram Introduction

学习UML实现、泛化、依赖、关联、聚合、组合

工具对比:Comparison UML tools (Wikipedia website)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  uml