模板和泛型编程也是C++中很重要的一部分,相信很大一部分程序员都用过某种容器类。但一般来说也就是用用而已,并不会自己构建类模板或者在建模中使用类模板。
本文介绍EA中类模板的创建类模板和使用类模板的方法。
创建类模板
假设我们要创建一个映射类(假设而已,可别真去创建)MyMap,它有两个参数,一个是Key,一个是元素T。
首先创建一个普通的类,设定类名为MyMap。
一定有人在输入类名的时候直接输入MyMap<class Key, class T>,这时候生成的类图就像下面这样。
看起来也是那么回事,但是并不能生成正确的代码。所以还是回到原先的轨道上来吧。只要输入MyMap就好。
接下来选择【Templates】分类,并在【Template Parameter(s)】列表空间中增加Key和T两个参数,Type都指定为class。
按下【确定】按钮返回后,类图会变成下面这样。
生成的代码如下:
使用类模板
作为例子接下来利用MayMap实例化一个类名为PersonMap的类,负责管理从整数到Person*的映射。
首先创建一个普通的类,名为PersonMap。
从工具栏的【Class Relationsships】组里选择下面图标。
然后从PersonMap类向MyMap类拖动鼠标,以建立两个类的连接关系。
鼠标双击《bind》连接线打开属性对话框并选择【Binding】分类,然后按下【Add】按钮在【Parameter Substitution(s)】列表中添加参数。
如上图所示,Formal列可以选择Key和T参数。它们都是在MyMap类模板中定义的。继续操作,指定Key和T参数的内容。
类图会变成下面这样。请关注红圈中的变化。
对应代码如下。
生成的有效代码很少,但这确实是正确的代码。在UML中这种方式叫显示绑定。
在UML中还有一种不指定新类型名的隐式绑定,可是很遗憾,作者并没有在EA中找到合适的表达方法。如果正在阅读本文的你知道怎么做,还请不吝赐教。
如果阅读本文能给您带来些许收获,欢迎分享给更多的朋友!
阅读更多新文章,请扫描下面二维码,关注公众号【面向对象思考】