熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

抽象的進步

2013-11-15 11:48:53  來源: JSP教程 

  所有編程語言的最終目的都是提供一種抽象方法一種較有爭議的說法是解決問題的復雜程度直接取決於抽象的種類及質量這兒的種類是指准備對什麼進行抽象?匯編語言是對基礎機器的少量抽象後來的許多命令式語言(如FORTRANBASIC和C)是對匯編語言的一種抽象與匯編語言相比這些語言已有了長足的進步但它們的抽象原理依然要求我們著重考慮計算機的結構而非考慮問題本身的結構在機器模型(位於方案空間)與實際解決的問題模型(位於問題空間)之間程序員必須建立起一種聯系這個過程要求人們付出較大的精力而且由於它脫離了編程語言本身的范圍造成程序代碼很難編寫而且要花較大的代價進行維護由此造成的副作用便是一門完善的編程方法學科
  為機器建模的另一個方法是為要解決的問題制作模型對一些早期語言來說如LISP和APL它們的做法是從不同的角度觀察世界——所有問題都歸納為列表所有問題都歸納為算法PROLOG則將所有問題都歸納為決策鏈對於這些語言我們認為它們一部分是面向基於強制的編程另一部分則是專為處理圖形符號設計的每種方法都有自己特殊的用途適合解決某一類的問題但只要超出了它們力所能及的范圍就會顯得非常笨拙
  面向對象的程序設計在此基礎上則跨出了一大步程序員可利用一些工具表達問題空間內的元素由於這種表達非常普遍所以不必受限於特定類型的問題我們將問題空間中的元素以及它們在方案空間的表示物稱作對象(Object)當然還有一些在問題空間沒有對應體的其他對象通過添加新的對象類型程序可進行靈活的調整以便與特定的問題配合所以在閱讀方案的描述代碼時會讀到對問題進行表達的話語與我們以前見過的相比這無疑是一種更加靈活更加強大的語言抽象方法總之OOP允許我們根據問題來描述問題而不是根據方案然而仍有一個聯系途徑回到計算機每個對象都類似一台小計算機它們有自己的狀態而且可要求它們進行特定的操作與現實世界的對象或者物體相比編程對象與它們也存在共通的地方它們都有自己的特征和行為
  Alan Kay總結了Smalltalk的五大基本特征這是第一種成功的面向對象程序設計語言也是Java的基礎語言通過這些特征我們可理解純粹的面向對象程序設計方法是什麼樣的
  () 所有東西都是對象

  可將對象想象成一種新型變量它保存著數據但可要求它對自身進行操作理論上講可從要解決的問題身上提出所有概念性的組件然後在程序中將其表達為一個對象
  () 程序是一大堆對象的組合

  通過消息傳遞各對象知道自己該做些什麼為了向對象發出請求需向那個對象發送一條消息更具體地講可將消息想象為一個調用請求它調用的是從屬於目標對象的一個子例程或函數
  () 每個對象都有自己的存儲空間可容納其他對象

  或者說通過封裝現有對象可制作出新型對象所以盡管對象的概念非常簡單但在程序中卻可達到任意高的復雜程度
  () 每個對象都有一種類型

  根據語法每個對象都是某個的一個實例其中(Class)是類型(Type)的同義詞一個類最重要的特征就是能將什麼消息發給它?
  () 同一類所有對象都能接收相同的消息

  這實際是別有含義的一種說法大家不久便能理解由於類型為(Circle)的一個對象也屬於類型為形狀(Shape)的一個對象所以一個圓完全能接收形狀消息這意味著可讓程序代碼統一指揮形狀令其自動控制所有符合形狀描述的對象其中自然包括這一特性稱為對象的可替換性是OOP最重要的概念之一
  一些語言設計者認為面向對象的程序設計本身並不足以方便解決所有形式的程序問題提倡將不同的方法組合成多形程序設計語言(注釋)
  [注釋]參見Timothy Budd編著的《Multiparadigm Programming in Leda》AddisonWesley 年出版
  

From:http://tw.wingwit.com/Article/program/Java/JSP/201311/19665.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.