天天看点

EA&UML日拱一卒-类模板

模板和泛型编程也是C++中很重要的一部分,相信很大一部分程序员都用过某种容器类。但一般来说也就是用用而已,并不会自己构建类模板或者在建模中使用类模板。

本文介绍EA中类模板的创建类模板和使用类模板的方法。

创建类模板

假设我们要创建一个映射类(假设而已,可别真去创建)MyMap,它有两个参数,一个是Key,一个是元素T。

首先创建一个普通的类,设定类名为MyMap。

EA&UML日拱一卒-类模板

一定有人在输入类名的时候直接输入MyMap<class Key, class T>,这时候生成的类图就像下面这样。

EA&amp;UML日拱一卒-类模板

看起来也是那么回事,但是并不能生成正确的代码。所以还是回到原先的轨道上来吧。只要输入MyMap就好。

接下来选择【Templates】分类,并在【Template Parameter(s)】列表空间中增加Key和T两个参数,Type都指定为class。

EA&amp;UML日拱一卒-类模板

按下【确定】按钮返回后,类图会变成下面这样。

EA&amp;UML日拱一卒-类模板

生成的代码如下:

EA&amp;UML日拱一卒-类模板

使用类模板

作为例子接下来利用MayMap实例化一个类名为PersonMap的类,负责管理从整数到Person*的映射。

首先创建一个普通的类,名为PersonMap。

EA&amp;UML日拱一卒-类模板

从工具栏的【Class Relationsships】组里选择下面图标。

EA&amp;UML日拱一卒-类模板

然后从PersonMap类向MyMap类拖动鼠标,以建立两个类的连接关系。

EA&amp;UML日拱一卒-类模板

鼠标双击《bind》连接线打开属性对话框并选择【Binding】分类,然后按下【Add】按钮在【Parameter Substitution(s)】列表中添加参数。

EA&amp;UML日拱一卒-类模板

如上图所示,Formal列可以选择Key和T参数。它们都是在MyMap类模板中定义的。继续操作,指定Key和T参数的内容。

类图会变成下面这样。请关注红圈中的变化。

EA&amp;UML日拱一卒-类模板

对应代码如下。

EA&amp;UML日拱一卒-类模板

生成的有效代码很少,但这确实是正确的代码。在UML中这种方式叫显示绑定。

在UML中还有一种不指定新类型名的隐式绑定,可是很遗憾,作者并没有在EA中找到合适的表达方法。如果正在阅读本文的你知道怎么做,还请不吝赐教。

如果阅读本文能给您带来些许收获,欢迎分享给更多的朋友!

阅读更多新文章,请扫描下面二维码,关注公众号【面向对象思考】