模板和泛型編程也是C++中很重要的一部分,相信很大一部分程序員都用過某種容器類。但一般來說也就是用用而已,并不會自己構(gòu)建類模板或者在建模中使用類模板。
本文介紹EA中類模板的創(chuàng)建類模板和使用類模板的方法。
創(chuàng)建類模板
假設(shè)我們要創(chuàng)建一個映射類(假設(shè)而已,可別真去創(chuàng)建)MyMap,它有兩個參數(shù),一個是Key,一個是元素T。
首先創(chuàng)建一個普通的類,設(shè)定類名為MyMap。
一定有人在輸入類名的時候直接輸入MyMap
看起來也是那么回事,但是并不能生成正確的代碼。所以還是回到原先的軌道上來吧。只要輸入MyMap就好。
接下來選擇【Templates】分類,并在【Template Parameter(s)】列表空間中增加Key和T兩個參數(shù),Type都指定為class。
按下【確定】按鈕返回后,類圖會變成下面這樣。
生成的代碼如下:
使用類模板
作為例子接下來利用MayMap實例化一個類名為PersonMap的類,負責管理從整數(shù)到Person*的映射。
首先創(chuàng)建一個普通的類,名為PersonMap。
從工具欄的【Class Relationsships】組里選擇下面圖標。
然后從PersonMap類向MyMap類拖動鼠標,以建立兩個類的連接關(guān)系。
鼠標雙擊《bind》連接線打開屬性對話框并選擇【Binding】分類,然后按下【Add】按鈕在【Parameter Substitution(s)】列表中添加參數(shù)。
如上圖所示,F(xiàn)ormal列可以選擇Key和T參數(shù)。它們都是在MyMap類模板中定義的。繼續(xù)操作,指定Key和T參數(shù)的內(nèi)容。
類圖會變成下面這樣。請關(guān)注紅圈中的變化。
對應(yīng)代碼如下。
生成的有效代碼很少,但這確實是正確的代碼。在UML中這種方式叫顯示綁定。
在UML中還有一種不指定新類型名的隱式綁定,可是很遺憾,作者并沒有在EA中找到合適的表達方法。如果正在閱讀本文的你知道怎么做,還請不吝賜教。