UML类图(简介、类的表示、对象的表示、关系、注释)
目录1. 简介2. 类和对象1. 简介UML(Unified Modeling Language)是一种面向对象的建模语言,包含我们所需要的所有图形标识;是一种更直观的图形方式,用符号来表示概念,概念间的关系用连接符合的线来表示UML的各种图形,分别描述软件模型的静态结构、动态行为、模块组织和管理;本文我们讲解的类图(class diagram),是一种静态结构图(static structrue
1. 简介
UML(Unified Modeling Language)是一种面向对象的建模语言,包含我们所需要的所有图形标识;是一种更直观的图形方式,用符号来表示概念,概念间的关系用连接符合的线来表示
UML的各种图形,分别描述软件模型的静态结构、动态行为、模块组织和管理;本文我们讲解的类图(class diagram),是一种静态结构图(static structrue diagrams),用来描述类和对象、类和对象的内部结构、类和对象的关系
2. 类和对象
2.1 类的表示
我们先来看一个简单的例子,体验一下
class Student {
public:
Student(string n = "",int a=0) {
name=n;
age= a;
}
void show() {
cout << name << ":" << age << endl;
}
private:
string name;
int age;
};
假如我们有上面的一个类,用类图来表示,如下:
说明:
- 类的描述包含类的名称、数据成员、函数成员、各成员的控制访问权限
- 由一个3段的矩形表示,上中下依此为类名、数据成员、函数成员;可以只有类名,如下:
- 数据成员的表示
- 语法:
[访问控制属性]名称 [重数] [: 类型] [= 默认值] [{约束特征}]
- 访问控制属性:public、private、protected分布对应UML的"+"、"-"、"#"
- 名称:数据成员的变量名
- 重数:属性的重数,具体什么意思没搞懂
- 默认值:如该数据成员的类型为
Area
,Area
类构造函数为Area(int length, int width)
,则该数据成员的默认值形式为= (10, 10)
- 约束特征:该数据成员性质约束的说明,如
{只读}
表示该数据成员只能被读取
- 语法:
2.2 对象的表示
我们用上面的类Student
创建一个对象my_student
说明:
- 分为两部分,上面部分为对象名,下面部分为数据成员及其值,数据成员及其值是可选的
- 对象名格式为:
对象名 : 类名
,下面要加下划线,可以省略对象名或类名
3. 关系的表示
使用带有特定符号的实线段或虚线段表示关系
3.1 依赖关系
表示一个类A使用另一个类B作为函数的成员参数,就要用依赖关系,通常为类之间的调用、友元和类的实例化;B变化会影响A,反之不成立
UML中表示依赖关系使用<<use>>构造型,如下所示:
表示类A使用了类B
3.2 作用关系—关联
表示一个类的对象和另一个类的对象之间相互作用的关系,UML中用实线来表示两个类(或同一个类)之间的关联
重数A表示:类B的每个对象与类A的多少个对象发生作用,如:重数A = 0..1
重数B表示:类A的每个对象与类B的多少个对象发生作用
重数标记的形式和含义如下表所示:
标记 | 说明 |
---|---|
* | 任何数目的对象(包括0) |
1 | 恰好1个对象 |
n | 恰好n个对象 |
0…1 | 0个或1个对象(表明关联是可选的) |
n…m | 最少为n个对象, 最多为m个对象(n和m是整数) |
2,4 | 离散的结合(如2个或4个) |
3.3 包含关系—聚集和组合
聚集表示整体与部分的关系,是一种特殊的关联,聚集分为共享聚集和组成聚集(组合),如下所示:
- 左图表示共享聚合:类A包含多个类B,但类B还可以被其它类包含,在UML中由空心菱形表示
- 右图表示组成聚合(组合):类A包含多个类B,且类B只能被类A包含,在UML中由实心菱形表示
3.4 继承关系-泛化
类的继承关系在UML中称为泛化,如下图所示,子类1说明单继承,子类2说明多继承
4. 注释
UML的注释是一种能独立存在的修饰符号,附加在元素或元素集上用来表示说明的图形符号,可以添加说明、评述、注解等信息,如下所示:
其中虚线连接到UML的其它元素上
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)