※ 引述《garylee.bbs@bbs.yzu.edu.tw (www.dev.idv.tw)》之銘言:
> > main()
> > {
> > [go to a shop]
> > 餐單* 餐單A;
> > Struct 點餐單 我的餐單;/取得一張空白餐單/
> > 餐單A = &我的餐單
> > 餐單A->珍珠奶茶點取數量=1; /填寫餐單/
> > 飲料= Waitor(餐單A); /將餐單交給服務生並取得飲料/
> > 喝(飲料);
> > }
> 一點也看不懂,哪裡跟自然界有對稱了..
> 這個例子裡分不出哪些動作是誰作的....
> 填寫菜單是誰填的?是客人還是Waitor?
> 將menu給waitor並取得飲料?如果沒有那個註解,
> 我看半天也不知道在寫什麼...
> 喝飲料?誰喝飲料?客人還是Waitor?
你真得看不出來其中的抽象模型嗎?
我也不怪你,我也是寫了3、4年的 Device Driver才看出來這種東西來的
不過說出來它真的是蠻簡單的
這麼說吧!
你有看食譜作菜的經驗嗎
或者是看Menu安裝硬體的經驗嗎
就是它了,它就是一個電腦硬體運作的基本模型
一個看的懂文字的行為者:人 or CPU
一段文字記載的操作程序:作菜程序or 硬體安裝步驟 or 一段程式(放在Ram裡面)
一個可被操作的物體:鍋子 or 硬體 or 電腦週邊
當你看到Main() 這個程式的時候
不是程式在作事,是你在作事
是你看了程式後而依順序操作,所以行為者是你,而不是程式
所以菜單是你填的,不是程序在填的
飲料也是你在喝的
Waitor 是另一個行為程序,是被你唆使的對象,由另外一個行為者來施行
不過電腦中的CPU只有一個,所以是同一個行為者作這件事
有點 "校長兼撞鐘" 的意味在裡面
如果Main() 經Compile 成機械碼,交給CPU執行
則行為者是CPU,也不是機械碼
把程式當成行為本體,這是一個普遍易犯最基本的錯誤
這個錯誤的觀念不更正過來,就看不出這個抽象模型
關於物件,這邊的物件都是表單物件
在這邊給你一個提示,下次看別人的程式,只要是看到指標
就通通表示正在操作物件
有關這個議題,我有兩萬字的文章對此作詳細的解說
去年曾經貼了其中一半出來(一萬字)
如果你有興趣我可將它們全部貼出來
--
Ξ Origin: 中興大學天樞資訊網 <bbs.nchu.edu.tw>
Ξ From : 218-169-53-140.dynamic.hinet.net