抽象的進(jìn)步

為機(jī)器建模的另一個(gè)方法是為要解決的問(wèn)題制作模型。

Alan Kay總結(jié)了Smalltalk的五大基本特征。這是第一種成功的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言,也是Java的基礎(chǔ)語(yǔ)言。通過(guò)這些特征,我們可理解“純粹”的面向?qū)ο蟪绦蛟O(shè)計(jì)方法是什么樣的:

  • 所有的都東西都是對(duì)象,可將對(duì)象想象成一種的新型的變量,它保存這數(shù)據(jù),但可以要求它對(duì)自己進(jìn)行操作,理論上講,可從 要解決問(wèn)題的身上提出所有概念性的組件,然后在程序中將其表達(dá)為一個(gè)對(duì)象。
  • 程序是一大堆對(duì)象的組合,通過(guò)消息傳遞,各對(duì)象知道自己該做什么,為了向?qū)ο蟀l(fā)出請(qǐng)求,需要那個(gè)對(duì)象發(fā)出一條“消息”。更具體的講可將消息想象為一個(gè)調(diào)用請(qǐng)求,它調(diào)用的是從目標(biāo)對(duì)象的一個(gè)子例程或函數(shù)。
  • 每個(gè)對(duì)象都有自己的存儲(chǔ)空間,可容納其它對(duì)象,或者說(shuō),通過(guò)封裝現(xiàn)有對(duì)象,可以制造出新型對(duì)象,所以盡管對(duì)象的概念非常簡(jiǎn)單,但在程序中卻可以達(dá)到任意高的復(fù)雜度。
  • 每個(gè)對(duì)象都是一種類型。根據(jù)語(yǔ)法,每個(gè)對(duì)象都是某個(gè)“類”的一個(gè)“實(shí)例”,其中,“類”(Class)是“類型”(Type)的同義詞。一個(gè)類最重要的特征就是“能將什么消息發(fā)給它?”。
  • 同一類所有對(duì)象都能接收相同的消息。這實(shí)際是別有含義的一種說(shuō)法,大家不久便能理解。由于類型為“圓”(Circle)的一個(gè)對(duì)象也屬于類型為“形狀”(Shape)的一個(gè)對(duì)象,所以一個(gè)圓完全能接收形狀消息。這意味著可讓程序代碼統(tǒng)一指揮“形狀”,令其自動(dòng)控制所有符合“形狀”描述的對(duì)象,其中自然包括“圓”。這一特性稱為對(duì)象的“可替換性”,是OOP最重要的概念之一。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評(píng)論 19 139
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,034評(píng)論 25 709
  • 第一次在簡(jiǎn)書(shū)上寫(xiě)東西。就弄了一個(gè)這么看似很沉重的話題。因?yàn)榻裉欤乙恢标P(guān)注的江歌案宣判。在辦公室就和同事探...
    陽(yáng)光貓_1576閱讀 226評(píng)論 1 0
  • “他應(yīng)該對(duì)我好!” 我不知道有多少人在婚姻中固守著這個(gè)信念。 我也是,直到昨天。 我一直覺(jué)得,在這個(gè)世界上,除了他...
    眼里有光的洺姐閱讀 1,043評(píng)論 0 12
  • 6月18日,星期天,晴天 今天中午抽空看完了,感觸很深,鎖定自己的目標(biāo),決不放棄,在別人眼里看的永遠(yuǎn)是結(jié)果,不可能...
    張于閱讀 190評(píng)論 0 0

友情鏈接更多精彩內(nèi)容