UML类图详解及类图设计
UML中定义了用例图、类图、时序图、协作图等九种。设计模式中经常会用到的是类图。类是面向对象系统组织结构的核心,类可以说是对一组具有相同属性、操作、关系和语义的对象的抽象。在UML中,类使用带有分隔线的矩形表示,它包含名称部分(Name)、属性部分(Attribute)和操作部分(Operation)。
其中属性的表现形式是[可见性] 属性名:类型 [=默认值]。操作的表现形式是:[可见性] 名称(参数列表)[:返回类型]。
详细见下图。
1.类图基础属性
+表示public
-表示private
#表示protected
~表示default,也就是包权限
_下划线表示static
斜体表示抽象
2.类之间关系
在UML类图中,常见的有以下几种关系:
泛化(Generalization):带空心三角箭头的实线来表示,箭头由子类指向父类
实现(Realization):带空心的三角箭头的虚线来表示,箭头从实现类指向接口
关联(Association):分为双向关联和单向关联,其中,双向关联可以用带两个箭头或者没有箭头的实线来表示,单向关联用带一个箭头的实线来表示,箭头从使用类指向被关联的类,还可以再关联线的两端标注角色名,补充说明它们的角色。
聚合(Aggregation),用带空心菱形的实线表示,菱形指向整体
组合(Composition):用带实心菱形的实线来表示,菱形指向整体。
依赖(Dependency):使用带箭头的虚线表示,箭头从使用类指向被依赖的类
下图为类之间的关系在UML中的图形表达式:
2.1泛化
泛化(Generalization)表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系
(1)继承
介绍:
继承表示是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。
表示方法:
继承使用空心三角形+实线表示。
示例:
鸟类继承抽象类动物
(2)实现![](data:image/png;base64,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)
实现表示一个class类实现interface接口(可以是多个)的功能。
表示方法:
使用空心三角形+虚线表示
比如:大雁需要飞行,就要实现飞()接口
2.2依赖
对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。
表示方法:
依赖关系用虚线箭头表示。
示例:
动物依赖氧气和水。调用新陈代谢方法需要氧气类与水类的实例作为参数
2.3关联
对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。
表示方法:
关联关系用实线箭头表示。
示例:
企鹅需要‘知道’气候的变化,需要‘了解’气候规律。当一个类‘知道’另一个类时,可以用关联。
2.4聚合
表示一种弱的‘拥有’关系,即has-a的关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分。 两个对象具有各自的生命周期。
表示方法:
聚合关系用空心的菱形+实线箭头表示。
示例:
每一只大雁都属于一个大雁群,一个大雁群可以有多只大雁。当大雁死去后大雁群并不会消失,两个对象生命周期不同。
2.5组合
介绍:
组合是一种强的‘拥有’关系,是一种contains-a的关系,体现了严格的部分和整体关系,部分和整体的生命周期一样。
表示方法:
组合关系用实心的菱形+实线箭头表示,还可以使用连线两端的数字表示某一端有几个实例。
示例:
鸟和翅膀就是组合关系,因为它们是部分和整体的关系,并且翅膀和鸟的生命周期是相同的。
3、推荐绘制UML工具
UMLet(非常好用,上手及其简单)
应用实例:采用UMLet画出类以及类之间的关系图,图以鲁迅先生的介绍为例介绍类图的画法。
参考:
http://www.pianshen.com/article/1059678851/ UML类图介绍以及关系详解