
第一章:對象入門
1.1 、面向?qū)ο缶幊蹋∣OP)的吸引力:
(1)對管理人員,它實現(xiàn)了更快和更廉價的開發(fā)與維護過程
(2)對分析與設(shè)計人員,建模處理變得更加簡單,能生成清晰、易于維護的設(shè)計方案。
(3)對程序員,對象模型顯得如此高雅和淺顯。此外,面向?qū)ο蠊ぞ咭约皫斓木薮笸κ咕幊坛蔀橐豁椄谷擞鋹偟娜蝿?wù)
現(xiàn)在的事實是:
事實上,很難很好地設(shè)計出對象——從而很難設(shè)計好任何東西。因此,只有數(shù)量相當(dāng)少的“專家”能設(shè)計出
最好的對象,然后讓其他人享用。對于成功的OOP 語言,它們不僅集成了這種語言的語法以及一個編譯程序
(編譯器),而且還有一個成功的開發(fā)環(huán)境,其中包含設(shè)計優(yōu)良、易于使用的庫。所以,大多數(shù)程序員的首
要任務(wù)就是用現(xiàn)有的對象解決自己的應(yīng)用問題。
1.2、抽象的進步
所有編程語言的最終目的都是提供一種“抽象”方法。
匯編語言是對基礎(chǔ)機器的少量抽象。后來的許多“命令式”語言(如FORTRAN,BASIC 和C)是對匯編語言的一種抽象。與匯編語言相比,這些語言已有了長足的進步,但它們的抽象原理依然要求我們著重考慮計算機的結(jié)構(gòu),而非考慮問題本身的結(jié)構(gòu)。
程序員可利用一些工具表達問題空間內(nèi)的元素。由于這種表達非常普遍,所以不必受限于特定類型的問題。
我們將問題空間中的元素以及它們在方案空間的表示物稱作“對象”(Object)。
在java世界中,一切皆對象。
Alan Kay 總結(jié)了Smalltalk 的五大基本特征。這是第一種成功的面向?qū)ο蟪绦蛟O(shè)計語言,也是Java 的基礎(chǔ)語言。
(1) 所有東西都是對象。可將對象想象成一種新型變量;它保存著數(shù)據(jù),但可要求它對自身進行操作。理論上講,可從要解決的問題身上提出所有概念性的組件,然后在程序中將其表達為一個對象。
(2) 程序是一大堆對象的組合;通過消息傳遞,各對象知道自己該做些什么。為了向?qū)ο蟀l(fā)出請求,需向那個對象“發(fā)送一條消息”。更具體地講,可將消息想象為一個調(diào)用請求,它調(diào)用的是從屬于目標(biāo)對象的一個子例程或函數(shù)。
(3) 每個對象都有自己的存儲空間,可容納其他對象。或者說,通過封裝現(xiàn)有對象,可制作出新型對象。所以,盡管對象的概念非常簡單,但在程序中卻可達到任意高的復(fù)雜程度
(4) 每個對象都有一種類型。根據(jù)語法,每個對象都是某個“類”的一個“實例”。其中,“類”(Class)是“類型”(Type)的同義詞。一個類最重要的特征就是“能將什么消息發(fā)給它。
(5) 同一類所有對象都能接收相同的消息。這實際是別有含義的一種說法,大家不久便能理解。由于類型為圓”(Circle)的一個對象也屬于類型為“形狀”(Shape)的一個對象,所以一個圓完全能接收形狀消息。這意味著可讓程序代碼統(tǒng)一指揮“形狀”,令其自動控制所有符合“形狀”描述的對象,其中自然包括“圓”。這一特性稱為對象的“可替換性”,是OOP 最重要的概念之一。
1.3、對象的接口
建好一個類后,可根據(jù)情況生成許多對象。隨后,可將那些對象作為要解決問題中存在的元素進行處理。
事實上,當(dāng)我們進行面向?qū)ο蟮某绦蛟O(shè)計時,面臨的最大一項挑戰(zhàn)性就是:如何在“問題空間”(問題實際存在的地方)的元素與“方案空間”(對實際問題進行建模的地方,如計算機)的元素之間建立理想的“一對一”對應(yīng)或映射關(guān)系。
必須有一種辦法能向?qū)ο蟀l(fā)出請求,令其做一些實際的事情,比如完成一次交易、在屏幕上畫一些東西或者打開一個開關(guān)等等。
每個對象僅能接受特定的請求。我們向?qū)ο蟀l(fā)出的請求是通過它的“接口”(Interface)定義的,對象的“類型”或“類”則規(guī)定了它的接口形式。“類型”與“接口”的等價或?qū)?yīng)關(guān)系是面向?qū)ο蟪绦蛟O(shè)計的基礎(chǔ)。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
