資源描述:
《外文翻譯-java編程思想》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、1.外文資料翻譯譯文JAVA編程思想對(duì)象入門抽象的進(jìn)步所有編程語言的最終目的都是提供一種“抽象”方法。一種較有爭(zhēng)議的說法是決問題的復(fù)雜程度直接取決于抽象的種類及質(zhì)量。這兒的“種類”是指準(zhǔn)備對(duì)什么進(jìn)行“抽象”?匯編語言是對(duì)基礎(chǔ)機(jī)器的少量抽象。后來的許多“命令式”語言(如FORTRAN,BASIC和C)是對(duì)匯編語言的一種抽象。與匯編語言相比,這些語言己有了長足的進(jìn)步,但它們的抽象原理依然耍求我們著重考慮計(jì)算機(jī)的結(jié)構(gòu),而非考慮問題本身的結(jié)構(gòu)。在機(jī)器模型(位于“方案空間”)與實(shí)際解決的問題模型(位于“問題空間”)之間
2、,程序員必須建立起一種聯(lián)系。這個(gè)過程要求人們付出較大的精力,而且由于它脫離了編程語言本身的范圍,造成程序代碼很難編寫,而且要花較大的代價(jià)進(jìn)行維護(hù)。由此造成的副作用便是一門完善的“編程方法”學(xué)科。為機(jī)器建模的另一個(gè)方法是為要解決的問題制作模型。對(duì)一些早期語言來說,如LISP和APL,它們的做法是“從不同的角度觀察世界”一一“所有問題都?xì)w納為列表”或“所有問題都?xì)w納為算法”。PROLOG則將所有問題都?xì)w納為決策鏈。對(duì)于這些語言,我們認(rèn)為它們一部分是面向基于“強(qiáng)制”的編程,另一部分則是專為處理閣形符號(hào)設(shè)計(jì)的。每種方
3、法都有自己特殊的用途,適合解決某一類的問題。但只要超出了它們力所能及的范圍,就會(huì)顯得非常笨拙。面向?qū)ο蟮某绦蛟O(shè)計(jì)在此基礎(chǔ)上則跨出了一大步,程序員可利用一些工具表達(dá)問題空間內(nèi)的元素。由于這種表達(dá)非常普遍,所以不必受限于特定類型的問題。我們將問題空間中的元素以及它們?cè)诜桨缚臻g的表示物稱作“對(duì)象”(Object)。當(dāng)然,還有一些在問題空間沒有對(duì)應(yīng)體的其他對(duì)象。通過添加新的對(duì)象類型,程序可進(jìn)行靈活的調(diào)整,以便與特定的問題配合。所以在閱讀方案的描述代碼時(shí),會(huì)讀到對(duì)問題進(jìn)行表達(dá)的話語。與我們以前見過的相比,這無疑是一種更
4、加靈活、更加強(qiáng)大的語言抽象方法。總之,OOP允許我們根據(jù)問題來描述問題,而不是根據(jù)方案。然而,仍有一個(gè)聯(lián)系途徑回到計(jì)算機(jī)。每個(gè)對(duì)象都類似一臺(tái)小計(jì)算機(jī);它們有自己的狀態(tài),而且可要求它們進(jìn)行待定的操作。與現(xiàn)實(shí)世界的“對(duì)象”或者“物體”相比,編程“對(duì)象”與它們也存在共通的地方:它們都有自己的持征和行為。AlanKay總結(jié)了Smalltalk的五大基本特征。這是第一種成功的面向?qū)ο蟪绦蛟O(shè)計(jì)語言,也是Java的基礎(chǔ)語言。通過這些特征,我們可理解“純粹”的面向?qū)ο蟪绦蛟O(shè)計(jì)方法是什么樣的:(1)所有東西都是對(duì)象。可將對(duì)象想
5、象成一種新型變量;它保存著數(shù)據(jù),但可耍求它對(duì)自身進(jìn)行操作。理論上講,可從要解決的問題身上提出所有概念性的組件,然后在程序中將其表達(dá)為一個(gè)對(duì)象。(2)程序是一大堆對(duì)象的組合;通過消息傳遞,各對(duì)象知道自己該做些什么。為了向?qū)ο蟀l(fā)出請(qǐng)求,需向那個(gè)對(duì)象“發(fā)送一條消息”。更具體地講,可將消息想象為一個(gè)調(diào)用請(qǐng)求,它調(diào)用的是從屬于目標(biāo)對(duì)象的一個(gè)子例程或函數(shù)。(3)每個(gè)對(duì)象都有自己的存儲(chǔ)空間,可容納其他對(duì)象?;蛩j說,通過封裝現(xiàn)有對(duì)象,可制作出新型對(duì)象。所以,盡管對(duì)象的概念非常簡(jiǎn)單,但在程序中卻可達(dá)到任意高的復(fù)雜程度。(4)每
6、個(gè)對(duì)象都有一種類型。根據(jù)語法,每個(gè)對(duì)象都是某個(gè)“類”的一個(gè)“實(shí)例”。其中,“類”(Class)是“類型”(Type)的同義詞。一個(gè)類最重要的特征就是“能將什么消息發(fā)給它?”。(5)同一類所有對(duì)象都能接收相同的消息。這實(shí)際是別有含義的一種說法,大家不久便能理解。由于類型為“圓”(Circle)的一個(gè)對(duì)象也屬于類型為“形狀”(Shape)的一個(gè)對(duì)象,所以一個(gè)圓完全能接收形狀消息。這意味著可讓程序代碼統(tǒng)一指揮“形狀”,令其自動(dòng)控制所有符合“形狀”描述的對(duì)象,其中自然包括“圓”。這一特性稱為對(duì)象的“可替換性”,是OO
7、P最重要的概念之一。一些語言設(shè)計(jì)者認(rèn)為而向?qū)ο蟮某绦蛟O(shè)計(jì)本身并不足以方便解決所有形式的程序問題,提倡將不同的方法組合成“多形程序設(shè)計(jì)語言”。對(duì)象的接口亞里士多徳或許是認(rèn)真研宄“類型”概念的第一人,他曾談及“魚類和鳥類”的問題。在世界首例面向?qū)ο笳Z言Simula-67中,第一次用到了這樣的一個(gè)概念:所有對(duì)象一一盡管各有特色一一都屬于某一系列對(duì)象的一部分,這些對(duì)象具有通用的特征和行為。在Sinuila-67中,首次用到了class這個(gè)關(guān)鍵字,它為程序引入了一個(gè)全新的類型。Simula是一個(gè)很好的例子。正如這個(gè)名字
8、所暗示的,它的作用是“模擬”(Simulate)象“銀行出納員”這樣的經(jīng)典問題。在這個(gè)例子里,我們有一系列出納員、客戶、帳號(hào)以及交易等。每類成員(元素)都具有一些通用的特征:每個(gè)帳號(hào)都有一定的余額;每名出納都能接收客戶的存款;等等。與此同時(shí),每個(gè)成員都有自己的狀態(tài);每個(gè)帳號(hào)都有不同的余額;每名出納都有一個(gè)名字。所以在計(jì)算機(jī)程序中,能用獨(dú)一無二的實(shí)體分別表示出納員、客戶、帳號(hào)以及交易。這個(gè)實(shí)體便是“對(duì)