UML Introduction
2016-06-06 15:02
183 查看
UML 2的层次结构,来自wikipedia
本文用到的术语表:
结构图:展示系统的静态结构,例如 类、组件、对象图
行为图:系统中对象间的动态行为,例如 活动、用例、序列图
结构图在整个软件构建周期内,对团队的所有类型的成员都有用。一般用在团队和个人之间验证和交流设计。例如:业务分析师 使用类图或对象图来展示目前的资产和资源情况;架构师 使用构件图和配置(deployment)图来测试/验证他们的设计;开发者 使用类图来设计和文档化系统代码类。
UML 2把结构图当成一个分类,没有设计一个叫做”结构图“的图。但是,类图提供了结构图类型的基本样例,提供了初始的符号元素集合,所有其他的结构图都是用这些符号元素。
聚合表示两个类处于不同的层析,一个是整体一个是部分,但是是一种弱的拥有关系,整体和部分是可分离的,可以具有各自的生命周期,部分可以属于多个整体,也可以为多个整体对象共享;比如计算机与CPU、公司与员工的关系。表现在代码层面合关联关系是一样的,只能从语义上区分。
举例:Car 是一个整体,Car Wheel 是整个 Car 的部分,但是在组装整车之前,Car Wheel 可以提前制造出来存放到仓库里。在这个例子里,Wheel 是 Car 的一部分,但是 Wheel 是独立存在的,不依赖于 Car 类型的实例,所以它们之间是 聚合关系
举例:Company 是一个整体,Departments 是这个整体的部分,但是 Departments 类不能在 Company 出现之前出现,Departments 类的实例依赖与 Company 类实例的存在,所以它们之间是 组合关系
reference:
Class Diagram (Wikipedia website)
Class Diagram Relationships in UML with Examples
IBM Class diagram Introduction
学习UML实现、泛化、依赖、关联、聚合、组合
工具对比:Comparison UML tools (Wikipedia website)
本文用到的术语表:
术语 | 中文 |
---|---|
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类图中的六种关系
- 比较常用UML类图几种关系的小结
- Class Model(类模型)
- 深入浅出UML类图(一)
- 一个在线的画UML图的网站
- visio画UML用例图没有include关系的解决方法
- 认识UML类图元素
- Visual Studio 2010中的UML
- 设计模式基础:类及类关系的UML表示
- UML基本概念
- 用UML做好系统分析
- UML-泛化,依赖,关联,聚合
- 八大UML类图符号的表示法
- UML类图的各种标识法
- UML三大建模工具的比较
- uml中六大关系
- UML用例的取名规则
- UML类图中箭头和线条的含义和用法
- 我所理解的OOP——UML六种关系
- UML实践详细经典教程----用例图、顺序图、状态图、类图、包图、协作图