C++ Primer 答客問 (12)
侯捷 jjhou@ccca.nctu.edu.tw
1999.10.30 第一次發表於
清大.楓橋驛站(140.114.87.5).電腦書訊版(Computer/CompBook)
本文將於日後整理於 侯捷網站/作品勘誤/C++ Primer 中文版/答客問
侯捷網站:www.jjhou.com
----------------------------------------------------------------
Richard wrote : (1999/10/30)
> 在 "C++ PRIMER 中文版" 83頁 5行
> int month;
> 說 變數 month 是物件 (object)
> 物件有:屬性(property), 方法(method), 事件(event)
> 請問 整數變數 month 的 屬性(property), 方法(method), 事件(event) 是
?
侯捷回覆:
您說錯頁次了,我想您指的是 85 頁。
把根據 C++ 內建型別(build-in types)而宣告(或定義)出來的
「變數」說成「物件」(object),是一種比較廣義、且更具一致性
的說法。例如:
int i(5); // 以 5 做為 i 的初值。類似 constructor 的用法。
int j = i + 3; // int type 擁有 overloaded operator=
int k = i * 3; // int type 擁有 overloaded operator*
以上形式,都與 C++ object 相彷。故曰 i, j, k 為 objects。
您問:
> 物件有:屬性(property), 方法(method), 事件(event)
> 請問 整數變數 month 的 屬性(property), 方法(method), 事件(event) 是
?
以目前習慣用詞而言,我想恐怕 PME(Property, Method, Event)
是比較偏向用於 software component。對 C++ class 而言,
如果說 int 是一種 class type 的話,那麼其 property
便是 int 內容,而其 method 則是各種可施加於其上的
動作如 +, - , *, / 等等(可視為 overloaded operators)。
至於 event,唔,這個嘛…
在OO 古典用詞裡,event 的意思好像是:「喚起某個 class
的 method,我們便說是送給該 class (object) object 一個 event」。
如果是這樣的話,那麼可以說 j = i + 3; 這行便是送出一個 event
給 int type 的 operator+。
印象中好像「送出一個 event」和「送出一個 message 同義」。
在 Scott Meyers 的 More Effective C++ p.230 甚至是這樣說:
what C++ programmers know as a virtual function call is
termed a "message dispatch"。
以上關於 event 和 message 的名詞意義,我不是很有把握。
在 C++/OOP 方面,我個人對實際面比較感興趣,對於
古典名詞(尤其是衍生自過去傳統 OO 基本教義派的名詞)
鑽研得少。所以,見笑了。
查了一下 The C++ Programming Language 和 C++ Primer 兩本書
的索引,前者雖然有 event 這個字,但與 object 毫無干係;
後者則是完全沒有收錄這個字。
--- the end
--
※ Origin: 楓橋驛站<bbs.cs.nthu.edu.tw> ◆ Mail: jjhou@ccca.nctu.edu.tw