為機(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最重要的概念之一。