UML类图
类图
先看动物矩形框
第一层是类名,如果是 斜体,表示是抽象类
第二层是成员变量,+
表示 public
,-
表示 private
,#
表示 protected
第三层是成员方法
class IAnimal
{
public:
bool life; //有生命
public:
virtual void metabolism(Oxygen oxygen, Water water) = 0; //新陈代谢
virtual void breed() = 0; //繁殖
};
接口图
然后看左下角飞翔矩形框
与类图的区别是顶端有《interface》显示
第一层是接口名称
第二层是接口方法
class IFly
{
public:
virtual void Fly() = 0;
};
除了这种方式表示实现接口,还有棒棒糖表示法,如下图
表示唐老鸭实现了讲人话接口
class ILanguage
{
public:
virtual void Speak() = 0;
};
继承关系
继承关系用空心三角+实线来表示
class IBird : public IAnimal
{
public:
int feather; //羽毛
bool noTeeth; //没有牙齿
public:
virtual void layEgg() = 0; //下蛋
};
实现接口
实现接口用空心三角+虚线来表示
//大雁类继承了鸟类,并且实现了飞翔接口
class WideGoose : public IBird, public IFly
{
public:
virtual void Fly() override;
};
关联关系
关联关系用实线箭头来表示
class Penguin : public IBird
{
private:
Climate climate; //在企鹅Penguin中,引用到气候Climate对象
};
聚合关系(弱拥有)
聚合关系用空心的菱形和实线箭头来表示
class WideGooseAggregate
{
private:
WideGoose arrayWideGoose[100]; //在雁群WideGooseAggregate类中,有大雁数组对象arrayWideGoose
};
聚合表示一种弱的“拥有”关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分
合成关系(强拥有)
合成关系用实心的菱形和实线箭头来表示
class Bird
{
private:
Wing* wing;
public:
Bird() {
wing = new Wing(); //在鸟Bird类中,初始化时,实例化翅膀Wing,它们同时生成
}
};
合成(Composition,也有翻译成“组合”)是一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。
依赖关系
依赖关系用虚线箭头来表示
class IAnimal
{
public:
bool life; //有生命
public:
virtual void metabolism(Oxygen oxygen, Water water) = 0; //新陈代谢
};