uml类图
- UML中类图的绘制
- 单个类图的绘制
- 类图中的成员访问属性
- UML类图中类与类的几种关系
- 关联
- 代码示例解释
- UML类图表示
- 多重性说明
- 依赖
- 代码示例解释
- uml类图表示
- 继承
- 示例代码解释
- UML类图表示
- 实现
- 示例代码解释
- UML类图表示
- 聚合
- 示例代码
- UML类图表示
- 组合
- 示例代码解释
- UML类图表示
- 绘制UML类图示例
- 示例一
- 示例二
- 示例三
UML中类图的绘制
UML中类图包含类名,属性,方法,访问权限,类与类之间的关系。
单个类图的绘制
若下面代码:
class Person{
public:void work(){...}
private:string m_name;int m_age;
};
则其UML类图表示:
类图中的成员访问属性
符号 | 访问属性 |
---|---|
- | 私有访问 |
+ | 共有访问 |
# | 保护访问 |
~ | package或default |
UML类图中类与类的几种关系
下面介绍uml中类与类之间的6种关系。
关联
一个类类型对象作为另一个类的属性。其可以分为单向关联,双向关联,重数关联。单向关联指一个类类型的对象作为另一个类的属性。双向关联是指两个类互相作为对方类的属性。重数关联是指一个类类型的多个对象做为另一个类的属性。
代码示例解释
下面是单向关联示例代码:
class Test{.....};
class Demo{Test m_test;....
};
双向关联示例代码:
class Demo;class Test{
Demo m_demo;
.....
};
class Demo{Test m_test;....
};
重数关联示例代码:
class Test{
.....
};
class Demo{Test m_test;Test m_test1;Test m_test2;....
};
UML类图表示
多重性说明
文本 | 代表含义 |
---|---|
1.1 | 一个类对象只与该类一个对象有关系 |
1…* | 一个类对象与该类多个对象有关系 |
0…* | 一个类对象与该类有0个或者多个对象有关系 |
0…1 | 一个类对象与该类有0个或者1个对象有关系 |
m…n | 一个类对象与该类至少m,至多n个对象有关系 |
依赖
一个类类型的对象作为另一个类的成员函数的参数传入。
代码示例解释
class Test{....};class Demo{void SetTest(Test & test){...}
};
uml类图表示
继承
又叫泛化,同C++中的继承是一个意思。
示例代码解释
class Base{....};
class Demo:public Basse
{
....
};
UML类图表示
实现
抽象类中的函数的实现,即类中接口函数在另一个类中被实现,一般父类为抽象类。
示例代码解释
class Base{
virtual void paly() = 0;
virtual void eat() = 0;
};class Herio:public Base{void play(){...}void eat(){...}
};
UML类图表示
聚合
整体与部分的关系,部分与整体脱离后可以独立存在。
示例代码
省,这里只需理解其两个类对象可以独立存在,但是一个类对象又是另一个类的一部分。
class Hair{
....
};class People{
private:
static Hair m_hair;
};
UML类图表示
组合
整体与部分的关系,整体与部分之间有相同的生命周期,两者同生共死。
示例代码解释
class Battery;class ElectricCar{
Battery m_battery;
...};class Battery{...};
UML类图表示
绘制UML类图示例
下面是几个小例子,来理解uml绘图类图。
示例一
此图讲述运动员类,衣服类,与球类的关系。运动员类中含有衣服类的成员变量。故而关系为关联,运动员类的成员函数使用球类的对象做函数的参数,故而与球类之间是依赖关系。
示例二
桌子是房子的组成部分,房子没有了桌子依旧可以存在,桌子没有了房子还是房子。故而桌子类与房子类之间是一种聚合关系。而房子与房子的墙壁是一种同生共死的关系,房子没有了,房子的墙壁自然就不存在了,为组合关系。
示例三
动物类是一个抽象类,哺乳动物类实现了动物类中的setName()与setAge()函数,可以看作是实现,但是我觉得应该也是继承。猴子类与马类继承了哺乳动物类,身体类作为猴子类和马类的一部分,当猴子类与马类不存在时身体类也就不存在,故而时一种组合关系,毛发类作为马类的一部分,当马类结束生命,毛发类依旧可以单独生存,为聚合关系。
以上若是存在理解不到位的地方,望指出。