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