property是指類向外提供的資料區域。而attribute則是描述物件在編譯時或執行時屬性的,分為固有型和使用者自定義型,其中使用者自定義型可以利用Reflection在執行期獲取。這兩者是有本質區別的。資料上說二者一個是service的屬性,而另一個是interface的。第一種好象更準確,摘要如下:在很多人的腦海中,Attribute就是類的屬性,Property呢?好像也是類的屬性?因此有很多人不加區別的統一稱為類的屬性,尤其是在寫中文文章的時候。這種心理是典型的鴕鳥心態,眼不見為淨。其實稍微用腳想一下就知道,事實肯定不是這樣的,UML中既然發明了這兩個術語,顯然不是用來冗餘的。它們之間肯定有著千絲萬縷的聯絡與區別。各種各樣的面嚮物件語言、各種元件技術、模板技術、Web Service技術,其中大部分涉及到了“屬性”這個概念,而其英文術語則常常是Attribute、Property或者Field。很多人一概稱之為“屬性”,有的地方確實可以不加區分,但有的地方卻是差之毫釐、謬以千里。我對於這些紛紛擾擾的技術和術語也很苦惱,但是我們至少可以透過UML中的這兩個術語的解釋找到一個可以參考的標準。無論如何,UML是面向物件技術的集大成者和事實上的標準。很客觀的說,UML1.4中對於這兩個術語並沒有很清晰的定義,但是其區別還是顯而易見的。Attribute應該是UML1.4中的寵兒,而Property連一個單獨的術語都沒有撈到。誰也沒想到在UML2.0中風雲突變,Attribute從類圖中消失了,而Property堂而皇之入主中原。1。4中 Attribute是與Classifier相關聯的術語,它比Property的影響範圍要小。Class是Classifier的子類,因此Attribute也可以表示Class的屬性。從上面的定義還可以看出,Attribute可以是Classifier的例項的命名的槽。對於Class來說,其例項就是Object,Object的槽就是物件的屬性值槽。因此,Attribute是可以作為物件的屬性的。而Property似乎沒有這一層的含義。按MOF(元物件設施,OMG的另一個規範,後面會有詳細解釋)的模型層次劃分,Attribute涉及的模型層從M2到M0,而Property似乎只是M2層的概念。2。0中 Attribute這裡僅僅指一個類元的結構特徵,可以將類元的例項聯絡到一個或者一組具體值。而沒有提到例項的槽(slot)等等。我猜想,這是因為UML2.0中已經把Attribute作為Property的一個子集了,所以關於例項的槽(slot)等等的具體賦值方法,都歸結到Property的定義中解釋了。另外一點值得注意的是,Attribute的定義來自於術語表,而沒有在元模型圖中出現。而Property出現在元模型圖中,並且都做了詳細而具體的解釋。這一點可以看出,UML強化Property,弱化Attribute的決心。
property是指類向外提供的資料區域。而attribute則是描述物件在編譯時或執行時屬性的,分為固有型和使用者自定義型,其中使用者自定義型可以利用Reflection在執行期獲取。這兩者是有本質區別的。資料上說二者一個是service的屬性,而另一個是interface的。第一種好象更準確,摘要如下:在很多人的腦海中,Attribute就是類的屬性,Property呢?好像也是類的屬性?因此有很多人不加區別的統一稱為類的屬性,尤其是在寫中文文章的時候。這種心理是典型的鴕鳥心態,眼不見為淨。其實稍微用腳想一下就知道,事實肯定不是這樣的,UML中既然發明了這兩個術語,顯然不是用來冗餘的。它們之間肯定有著千絲萬縷的聯絡與區別。各種各樣的面嚮物件語言、各種元件技術、模板技術、Web Service技術,其中大部分涉及到了“屬性”這個概念,而其英文術語則常常是Attribute、Property或者Field。很多人一概稱之為“屬性”,有的地方確實可以不加區分,但有的地方卻是差之毫釐、謬以千里。我對於這些紛紛擾擾的技術和術語也很苦惱,但是我們至少可以透過UML中的這兩個術語的解釋找到一個可以參考的標準。無論如何,UML是面向物件技術的集大成者和事實上的標準。很客觀的說,UML1.4中對於這兩個術語並沒有很清晰的定義,但是其區別還是顯而易見的。Attribute應該是UML1.4中的寵兒,而Property連一個單獨的術語都沒有撈到。誰也沒想到在UML2.0中風雲突變,Attribute從類圖中消失了,而Property堂而皇之入主中原。1。4中 Attribute是與Classifier相關聯的術語,它比Property的影響範圍要小。Class是Classifier的子類,因此Attribute也可以表示Class的屬性。從上面的定義還可以看出,Attribute可以是Classifier的例項的命名的槽。對於Class來說,其例項就是Object,Object的槽就是物件的屬性值槽。因此,Attribute是可以作為物件的屬性的。而Property似乎沒有這一層的含義。按MOF(元物件設施,OMG的另一個規範,後面會有詳細解釋)的模型層次劃分,Attribute涉及的模型層從M2到M0,而Property似乎只是M2層的概念。2。0中 Attribute這裡僅僅指一個類元的結構特徵,可以將類元的例項聯絡到一個或者一組具體值。而沒有提到例項的槽(slot)等等。我猜想,這是因為UML2.0中已經把Attribute作為Property的一個子集了,所以關於例項的槽(slot)等等的具體賦值方法,都歸結到Property的定義中解釋了。另外一點值得注意的是,Attribute的定義來自於術語表,而沒有在元模型圖中出現。而Property出現在元模型圖中,並且都做了詳細而具體的解釋。這一點可以看出,UML強化Property,弱化Attribute的決心。