一、 UML类图示例
构成要素:
类
第一行:类名称
第二行:特性(字段或属性)
第三行:操作(方法或行为)注意属性和方法前面的符号,‘+’表示public,‘-’表示private,‘#’表示protected。
接口
矩形表示法,顶端<<interface>>
第一行:接口方法名称
第二行:接口方法
二、六种类间关系
在UML类图中,常见的有以下几种关系:泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency)
1.泛化(Generalization)
【关系定义】:是一种继承关系,它指定了子类如何特化父类的所有特征和行为。
【类图表示】:空心三角形+实线,箭头指向为父类。
public class Bird : Animal
{
}
2.实现(Realization)
【关系定义】:是一种类与接口的关系,表示类是接口所有特征和行为的实现。
【类图表示】:空心三角形+虚线,箭头指向接口。
【代码实现】:
public interface IFly
{
void Fly();
}
public class WideGoose : IFly
{
public void Fly()
{
}
}
另外一种表示方法:棒棒糖表示法
3.关联(Association)
【关系定义】:是一种拥有的关系,它使一个类知道另一个类的属性和方法。关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。
【代码表现】:代码中的成员变量
【类图表示】:带箭头的实线,箭头指向被拥有者
企鹅需要“了解”气候的变化,需要“知道” 这一个类
【代码实现】:
public class Penguin : Bird
{
// 在企鹅 Penguin 中引用到气候 Climate 对象
private Climate climate;
}
4. 依赖(Dependency)
【关系定义】:是一种使用的关系,所以要尽量不使用双向的互相依赖。
【代码表现】:局部变量、方法的参数或者对静态方法的调用
【类图表示】:带箭头的虚线,箭头指向被使用者
【代码实现】:
public abstract class Animal
{
public void Metabolism(Oxygen oxygen, Water water)
{
}
}
5. 聚合(Aggregation)
【关系定义】:表示一种弱的“拥有”关系,体现的是A对象可以包含B对象,但是B对象不属于A对象的一部分。(部分脱离整体能单独存在)
【代码表现】:成员变量
【类图表示】:空心菱形+实线,菱形指向整体
【代码实现】:
public class WideGooseAggregate
{
// 在雁群 WideGooseAggregate 类中,有大雁数组对象 arrayWideGeese
public WideGoose[] arrayWideGeese;
}
6. 组合(Composition)
【关系定义】:是一种强的“拥有”关系,体现了严格的部分和整体的关系,部分与整体的生命周期一样。(部分脱离整体不能单独存在)
【代码表现】:成员变量
【类图表示】:实心菱形+实线,菱形指向整体
【代码实现】:
public class Bird
{
private Wing wing;
public Bird()
{
// 在鸟 Bird 类中,初始化时,实例化翅膀 Wing,他们之间同时生成
wing = new Wing();
}
}
定义参考