C++基础——用C++实例理解UML类图
来源:互联网 发布:win7旗舰版打不开软件 编辑:程序博客网 时间:2024/05/24 04:20
- 类展示
- 基本概念及术语
- 可见性visibility
- 参数的方向parameter direction
- 类成员变量或者函数的类型
- 类关系
- 关系的多重性multiplicity
- 类关系
- assocationkonws a
- dependency
- Aggregation
- Composition
- 继承泛化
- 类模板
- References
本文包括以下内容:
- 类间存在哪几种常见关系?
- 它们之间的区别和联系是什么?
- 如何在代码中反映类间的关系?
- 如何理解 IN/OUT mode型的参数?
类展示
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
基本概念及术语
可见性(visibility)
- ‘+’ public
- ‘-’ private
- ‘#’ protected
参数的方向(parameter direction)
‘in’:用于输入的参数,get the value
‘out’:用于输出的参数, set the value
‘inout’:既可作为输入又可作为输出, get the value and set the value
这种参数形式常见于,这样一种情况,传递的是一个指针变量(如果传递的是一个既非指针,也非引用的变量,就纯做输入(in)了),既然是指针变量,便可提领指针,修改其指向的内容,既具备提供输入,又具有修改原值 的双重属性。
举例如下:
对一个接口作如下documentation:
Prototype: ULONG GetActivationState( ULONG * pActivationState );
Parameters
- 1
- 2
- 3
- 4
客户端代码
- 1
- 2
既然提供的是变量的地址,便可轻易地get the value 和 set the value。 所以根据GetActivationState(ULONG*)
参数的IN/OUT状态,推测其中的代码如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
类成员(变量或者函数)的类型
- 静态成员,下划线表示
- 纯虚函数,斜体
类关系
- Assocation (knows a)
- Dependency (uses a)
- Composition (has a)
- Aggregation (has a)
- Inheritance (is a)
- Class template
关系的多重性(multiplicity)
- ‘0..1’, 无实例,或者1个实例
- ‘1’,只有一个实例
- ‘0..*’,
- ‘1..*’
类关系
assocation(konws a)
一个对象知道另一个对象的存在,该对象持有另一个对象的指针或者引用。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
dependency
当类Y与类X彼此独立,而类Y是类X成员函数的一个参数,或者X中成员函数的一个局部变量。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Aggregation
聚类发生的场景是:一个类是另一个类的集合或者容器,但被包含的类与容器本身并不具备相同的生命期,也就是容器销毁时,其包含的内容未必。关联(association)与聚合(aggregation)的不同之处在于,关联关系不存在一个明确的容器包含另外一个类。比如汽车和轮胎的关系,就是一种聚合关系,汽车包含着轮胎的集合,汽车的销毁,轮胎仍然可以存在。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
Composition
组合(composition)是聚合(Aggregation)的增强版。组合和聚合的根本不同在于类与其所持有元素的是否具有相同的生命期,要求必须相同是一种组合关系。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
继承(泛化)
类间的继承关系表达的是一种derived class B is a base class A。
类模板
类模板意味着泛型类。
- 1
- 2
- 3
- 4
- 5
- 6
References
[1] UML Class Diagram Explained With C++ samples
[2] IN/OUT Parameters and how to work with them in C++
- C++基础——用C++实例理解UML类图
- C++基础——用C++实例理解UML类图
- C++基础——用C++实例理解UML类图
- C语言基础实例
- C语言基础实例
- c基础实例
- 【C#】基础实例演练
- C语言基础理解
- C++UML类图
- C语言基础—小实例:三天打渔两天晒网
- C语言基础—函数的理解及应用
- opencv基础实例(C++)
- C/C++——深入理解sizeof
- C#——基础
- c基础—5
- Object—C基础
- C#—基础语法
- C基础—内存
- python 解决数组赋值问题
- 第15周项目2
- APK 混淆文章推荐
- 彻底征服 Spring AOP 之 实战篇
- 设置分屏
- C++基础——用C++实例理解UML类图
- 第二周项目一之程序的多文件组织
- 数据结构课程大总结
- 第15周之插入排序
- 云监控 Ganglia 安装步骤 (含python module)
- Java与mysql数据库编程中遇见“Before start of result set at com.mysql.jdbc.SQLError.createSQLException” 的解决办法
- 可穿戴“活纹身” 可感应环境变化
- C用交换函数实现三个数排序
- IDEA跳转到实现类中