C++基础——用C++实例理解UML类图
来源:互联网 发布:会员视频源码 编辑:程序博客网 时间:2024/06/06 20:32
C++基础——用C++实例理解UML类图
- 类展示
- 基本概念及术语
- 可见性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。
类模板
类模板意味着泛型类。
- 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基础—内存
- JAVA抽象类和接口
- java面向对象之设计思想
- Spring+mybatis+struts框架整合的配置详解
- 英语还是要学的,太软肋了
- 第20章 驱动开发之LED应用程序
- C++基础——用C++实例理解UML类图
- MAC之tar解压与压缩打包命令
- 使用pm2启动Vue项目
- 4.spring 依赖注入的三种方式
- VPN(一):Connecting to openvpn has failed
- Java随机数生产算法
- STL 关联容器 之set(无重复有序集合)
- JAVA学习-序号2 HashSet初入门,hashCode和equals方法
- eclipse中如何向开源中国(码云)上传代码