這里必須要指出, '概念' 其實就是面向對象中的對象, 也就是物件導向中的物件. 中蟒有兩個互通的保留字 "概念" 和 "類別", 它們是一樣的.
為什么要另外用一個新名字? 我認為無論是面向對象還是物件導向的說法都會令初學者 摸不著頭腦. 好像我當初听了半天都不明白, 于是以為是很深奧的東西. 現在有机會重新弄一套程式語言了, 我研究了一下, 覺得 '概念' 的講法比較淺白. 當然這個名字會太籠統了, 因此保留了 '類別' 這個保留字, 如果你絲毫不覺得 '概念' 是個好主意的話, 當它不存在好了.
這是一個不算深, 但很煩的題目. 我還沒想好該怎樣表達. 因此暫時只好用一些例子, 希望你能掌握到其中的要點.
#定義一個概念 概念 印刷員: #定義這個概念的初始動作, '__初始__'是中蟒的特別函數. #而 '自己' 則是概念本身, 中蟒規定概念中的函數 (稱為方法) #的第一個參數一定是概念本身. 至于叫什么名字可以隨便改, #一般叫做 '自己'. ('我' 也不錯) 定義 __初始__(自己, 名字): 自己.名字 = 名字 #定義本概念的某個功能 定義 印刷(自己, 稿件): 寫 "由" + 自己.名字 + "印" 寫 "<html>" + 稿件 + "</html>;" #定義另一個功能 定義 檢查(自己, 稿件): 寫 "稿件長度為:", 長度(稿件) #開始操作 小王 = 印刷員('王小明') 小李 = 印刷員('李四') 小王.印刷('這是一份廣告') 寫 '完成' 小李.檢查('論文一篇')
執行結果:
由王小明印 <html>;這是一份廣告</html>; 完成 稿件長度為: 8
可以看到所謂的概念, 其實像是一整套完整的, 自給自足的小程式. 它包括了自己的變數 (稱為屬性), 自己的函數 (稱為方法).
用概念的方法來為程式進行分工往往有很好的成效. 尤其是所寫的功能可以很容易的重用. 這是因為在分析的過程中, 互相牽連的部份己經盡量分開了.
在上面的方法定義中, 我們并沒有傳回任何值. 一個更好的做法是傳回概念本身:
... #定義另一個功能 定義 檢查(自己, 稿件): 寫 "稿件長度為:", 長度(稿件) 傳回 自己 ...
我們可以這樣調用: 小王.檢查(稿).印刷(稿)
或者我們傳回稿件:
... #定義另一個功能 定義 檢查(自己, 稿件): 寫 "稿件長度為:", 長度(稿件) 傳回 稿件 ...
這樣我們又可以用
小王.印刷(小王.檢查(稿))
一個是以工作人員的動作為主, 一個是以稿件的流程為主. 這樣寫傳回值, 實際操作時會帶來很大方便
如果按上面的寫法再寫多几個概念出來, 寫程式就可以更加接近日常的操作:
#假設己定義好概念 小王 = 印刷員('王小明') 小張 = 外勤('張三') 段總 = 編輯('段正淳') 老朱 = 會計('朱子柳') #實際操作 作者 = '老粗' 老朱.開稿費(小張,500).拿稿件(作者).交編輯(段總).正稿().付印(小王).印刷()
哈, 好玩嗎 ?