本篇文章我們說明如何添加屬性(attribute)。屬性是OO中的一個詞匯,在C++語法中,應該叫數(shù)據(jù)成員。這里我們盡量使用OO中的屬性一詞。
打開屬性窗口有兩種方法:
1.雙擊類圖中的對應類框圖,選擇【General】以后,點擊【Attributes】按鈕。
2.從模型樹中選擇對應的類節(jié)點,打開上下文菜單并選擇【Attributes】菜單項。
無論哪種方法都可以打開下面的屬性設定對話框。嚴格講這并不是屬性自己的屬性對話框,而是屬性和操作共同的對話框。本文只關注屬性部分。
添加新屬性的操作主要是在紅綠兩個矩形框中進行的。我們在這里只說明有(zhi)關(dao)的項目。
基本項目
基本項目通過紅框中的列表控件來設置。
Name:變量名,可以自由輸入文本。
Type: 數(shù)據(jù)類型,可以自由輸入文本,也可以點從下拉菜單中選擇。在下拉菜單的最下面,還有一個【Select Type...】選項,提供了從工程中選擇類型的功能。但是選擇的結果也只是作為文本保存,起到的作用僅限于輸入輔助。如果你期待變量類型和被參照的類型 名聯(lián)動,那你想多了。
Scope:從下拉列表中選擇,一共有四個選項:Public/Protected/Private/Pack
age。Package也是可選的,表示也沒有問題。但是在生成代碼時當作Public處理。
Initial Value:為屬性設置初期值??梢跃偷剌斎牖虼蜷_對話框輸入。區(qū)別不詳。
擴展項目
屬性列表中有屬性被選中時,可以設定該屬性的擴展屬性。
Static:表明該屬性是靜態(tài)屬性,或稱靜態(tài)數(shù)據(jù)成員。
Property:定義Property操作方法(Getter/Setter)。具體畫面如下:
Const:定義常量數(shù)據(jù)成員。
下面來看一個實例:
在本例中創(chuàng)建了三個屬性(擴展項目部分省略表示):
私有的int型變量m_age,并為其設置了Proerpty屬性。
保護的string變量m_name。
靜態(tài),公開的int型變量MARRY_AGE。
作為上述操作的結果,類圖變成下面這個樣子。
請注意觀察在類圖中屬性的表達方式。另外也可以看到SetAge和GetAge兩個方法。
關于初期值的補充說明:
在基本項目中有一個初期值InitialValue需要補充說明一下。
在C++11之前這個項目只能應用于靜態(tài)常量數(shù)據(jù)成員。
在C++11以后,可以為每個變量設定缺省值。當構造函數(shù)的初始值列表中沒有為數(shù)據(jù)成員制定初始值的時候,編譯器會利用這個缺省值來初始化數(shù)據(jù)成員。