精華區beta Programming 關於我們 聯絡資訊
Sorry 我好像沒有仔細體會 tester 大大所要問的東西 所以回答的方向好像不太一樣 如果造成誤解 敬請見諒 <(_ _)> ※ 引述《tester.bbs@bbs.csie.ncu.edu.tw (try or test)》之銘言: : > OO 具有封裝性呀 : 封裝是強調不可分割, 有外防的包莢, 事實上她不像 Mornitor 有 kernel : mode 的保護, 因此她採的策略是 information hidden . 這是她不能隨意 : 使用 pointer 跨 class object 使用莢內資源的原因. : 保護未必要黑漆漆的, 是因為根本沒有透明的防護罩, 事實上她跟普通程 : 式一樣也沒有特製的防護罩, 只是採用 "不必明說" , 直接指向切入的語 : 法就不支援, 或者很難用. : > OO 全然沒有推翻循序性 : > OO 是「建立在循序性上」的「程式碼管理哲學」與「工程實務」 : 事實是 "毫不相關的片段 code thread" 本身就能平行, "你走你的陽關道, 我 : 過我的獨木橋", 誰先誰後互不影響, 這是實況. 加上作業系統 multi-process : 支援或是分散不同地的電腦都能做這種 "無關的平行". : OOP 可以讓這類片段的 code 與用到的 data 成包莢式的各別獨立顯現, : 傳統的命令式語言雖然也是可以這樣做, 只是不明顯, 必須刻意的處理. : 目前 OOP 的語法並沒有相關式平行需要的同步機制, 所以她不是 CHHL , : 但她可以適應分散在不同電腦的處理, 在設計思考時, 是不必一定得按特定順 : 序想, 所以會被誤認為可能是任意的非循序式. 若把這種無關的非循序, 擴大 : 成可以在任意相關下也能平行, 那就會越界變成無序. : 採用訊息傳遞, 把相關的 code , data 封裝在一起就是為了將來能直接用 : 在分散的電腦上執行. : > OO 的物件為雜亂交錯的 data 與 code 提供了單純而平面化的操作介面 : Class Object 內部的 code , data 甚至 stack 還是分堆擺的, 用了高階語 : 言的 compiler 就會這麼做. Class object 間的界限也不必用到像 process : 間隔離的 memory protection & separation , 也就不會增加多餘的工作, : 她靠的是 information hidden . : > OO 不是在討論程式執行的本質 循序化的執行早已是本然 : > OO 討論的是 data 與 code 的封裝性 物件的責任 物件間的關聯 介面的抽象性 ... : > 這些東西並不違反任何實體特質 : > 討論的層次有所差異 : > 「程式語言與電腦的實體是不對稱的」? 我們得先思維這個命題是否正確 : > OOP 沒有損害到程式的執行效率 : > 相同的事 要用循序性語言來做 不見得會比較有效率 : > 會慢是來自於 design : > 你不能說我要讓程式碼受良好管理而不付出任何成本 : 事實上, 好的 OOP implementation 不會讓程式語言與電腦實體呈現不對稱的現 : 像, OO 先天就是能把 相關的 code , data 擺在分開來的同一電腦上. 有從屬 : 關係的 object 會因繼承性而儘量放在可以快速拿得到的地方. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.216.204