UML类图

类图简介

类图( Class Diagram) 是描述类、 接口、 协作以及它们之间关系的图, 用来显示系统中各个类的静态结构。

类图包括7个元素: 类( Class)、 接口( Interface)、 协作( collaboration)、 依赖关系( Dependency)、泛化关系( Generalization)、 关联关系( Association) 以及实现关系( Realization)。

类之间的关系

泛化关系

泛化关系用一条带空心箭头的直接表示;

347

类的继承结构表现在UML中就是泛化(generalize)与实现(realize)。最终代码中,泛化关系表现为继承非抽象类。

继承表示is-a的关系,是对象之间耦合度最大的一种关系,子类继承父类的所有细节。直接使用语言中的继承表达。在类图中使用带三角箭头的实线表示,箭头从子类指向父类

 

实现关系

实现关系用一条带空心箭头的虚线表示;

 

最终代码中,实现关系表现为继承抽象类,在Java中主要就是接口和实现的关系。箭头从实现类指向接口

 

聚合关系

聚合关系用一条带空心菱形箭头的直线表示。

 

聚合是一种特殊的关联,表示整体与部分的关系,需求描述中“包含”、“组成”、“分为….部分”等词常意味着聚合关系。与组合关系不同的是,整体和部分不是强依赖的,即使整体不存在了,部分仍然存在;例如, 部门撤销了,人员不会消失,他们依然存在;

 

组合关系

组合关系用一条带实心菱形箭头直线表示,菱形从局部指向整体。

组合表示contains-a的关系,是一种强烈的包含关系。组合类负责被组合类的生命周期。是一种更强的聚合关系。部分不能脱离整体存在。如公司和部门的关系,没有了公司,部门也不能存在了。

说一下聚合和组合的区别:聚合关系是“has-a”关系,组合关系是“contains-a”关系;聚合关系表示整体与部分的关系比较弱,而组合比较强;聚合关系中代表部分事物的对象与代表聚合事物的对象的生存期无关,一旦删除了聚合对象不一定就删除了代表部分事物的对象。组合中一旦删除了组合对象,同时也就删除了代表部分事物的对象聚合是弱关联,组合是强关联。

关联关系

关联关系是用一条直线表示的;

关联可以有方向,可以是单向关联,也可以是双向关联,默认不强调方向,表示对象间相互知道;如果特别强调方向,如下图,表示A知道B,但 B不知道A;

它是一种静态关系, 通常与运行状态无关,一般由常识等因素决定的;在最终代码中,关联对象通常是以成员变量的形式实现的;

426

依赖关系

依赖关系是用一套带箭头的虚线表示的。

依赖关系
与关联关系不同的是,它是一种临时性的关系,通常在运行期间产生,并且随着运行时的变化;是对象之间最弱的一种关联方式,是临时性的关联。代码中一般指由局部变量、函数参数、返回值建立的对于其他对象的调用关系。

多重性

通常在关联、聚合、组合中使用。就是代表有多少个关联对象存在。使用数字..星号(数字)表示。

实例

 

小汽车和自行车都是车的一种实现,他们是实现关系

SUV is a 小汽车,他们是泛化关系

小汽车 has a 发动机,他们是聚合关系

学生使用自行车是一种临时的关联,他们是依赖关系

学生和身份证是一对一永久关联,他们是关联关系

班级 contains a 学生,他们是组合关系

 

# uml 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×