5、C++设计模式及实际应用-UML类图(1)
UML类图,主要用于软件设计中反应类与类之间的关系,它也是学习设计模式之前必须熟悉的内容。
类之间存在以下关系:
- 泛化关系
- 实现关系
- 依赖关系
- 关联关系
- 聚合关系
- 组合关系
泛化关系
泛化关系实际就是继承,在我们第二讲继承里面介绍的游戏弹窗界面代码就是一个非常典型的泛化 关系,其UML类图如下:
由上图可以清晰的看出,SmallDailog、MeduimDailog、LargeDailog继承自BaseDailog,TipsDailog、WarningDailog继承自SmallDailog,FriendDailog、SettingDailog继承自MeduimDailog,DisplayDailog、SettingDailog继承自LargeDailog。
实现关系
实现关系可以理解为一个类实现接口的功能(在C++里面,接口是使用纯虚函数的方式表示的),在第三讲多态里面介绍的图型渲染框架里面就存在这样的关系,其UML图可以这样表示:
由上图可以看出,Object对象为一个接口类,存在一个抽象方法draw,Cube、Sphere、Cylinder实现了draw方法。
依赖关系
依赖关系定义为对于两个相对独立的对象,当一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务时,这两个对象之间主要体现为依赖关系。
在第四讲的模板里面介绍的Renderer和Cube、Sphere、Cylinder之间的关系就为依赖关系,其类图可以表示为:
很明显,Renderer对象渲染立方体时,实质是通过生成一个Cube对象,然后再调用Cube的draw方法实现的,这符合上文中提到的 一个对象负责构造另一个对象的实例,或者依赖另一个对象的服务 ,所以这是一种依赖关系。