官术网_书友最值得收藏!

第2章 面向對象程序設計初步

本章從面向對象的概念出發,介紹了程序設計種類、面向對象程序設計的特征;介紹了面向對象程序設計中的對象、類、屬性等重要概念;并描述了類、屬性、方法的定義和聲明;講述了類的構造器的概念及使用,介紹對象的創建和使用。講述如何通過類的定義來實現信息隱藏和封裝;介紹了Java源文件的結構,package和import的用法;JDK中的常用的包。

2.1 面向對象概念

2.1.1 從結構化程序設計到面向對象程序設計

面向對象程序設計與結構化程序設計都是設計和構造程序的方法。近年來面向對象程序設計的方法越來越受到人們的重視,成為解決軟件危機的新途徑,而結構化程序設計方法的使用在逐漸減少。幾乎每一種最新推出的程序開發工具或語言都采用了面向對象程序設計的思路,面向對象程序設計形成了一套與結構化程序設計具有很大差異的方法。

結構化程序設計方法又稱面向過程設計方法,起源于20世紀70年代。在這之前的程序設計基本采用過程式程序設計,雖然匯編語言已經取代了機器語言,但是對于一般的程序設計人員而言,它還是太抽象、太隱晦了。如果計算機要得到更大的發展,必須發明一些比匯編語言更易于閱讀、編寫的程序語言。在這種需求的刺激下,結構化程序設計方式產生了機構化程序設計,主要特點是采用自頂向下、逐步求精的程序設計方法:使用3種基本控制結構構造程序,任何程序都可由順序、選擇、重復3種基本控制結構構造。結構化設計的根本目標就是把復雜的系統分解成簡單模塊的層次結構。例如,你要裝修房子,以前的過程式程序設計要求你必須從客廳開始裝修,然后是臥室、廚房、衛生間,順序不能顛倒,客廳沒裝好之前,休想踏進你的臥室半步。而結構化程序設計方式將你的客廳、臥室、衛生間、廚房都獨立成一個模塊,互相之間可以互不干擾地進行。

雖然結構化程序設計解決了軟件設計開發中的一部分問題,但是它仍然存在不足。用結構化方法開發的軟件,其穩定性、可修改性和可重用性都比較差,這是因為結構化方法的本質是功能分解,從代表目標系統整體功能的單個處理著手,自頂向下不斷把復雜的處理分解為子處理,這樣一層一層地分解下去,直到僅剩下若干個容易實現的子處理功能為止,然后用相應的工具來描述各個最低層的處理。因此,結構化方法是圍繞實現處理功能的“過程”來構造系統的。然而,用戶需求的變化大部分是針對功能的,因此,這種變化對于基于過程的設計來說是災難性的。用這種方法設計出來的系統結構常常是不穩定的,用戶需求的變化往往造成系統結構的較大變化,從而需要花費很大代價才能實現這種變化。

結構化程序設計的局限性催生了面向對象的思想。面向對象(OO)并不是一個新概念,它在20世紀70年代就出現了,但是,因為受到軟/硬件的限制,直到90年代,它才為大眾所接受并成為程序設計的主流思想。面向對象的方法與結構化的程序設計根本區別在于把系統看成一起工作來完成某項任務的對象集合,而對象是系統對消息做出響應的事物,所以面向對象方法中最值得關注的不是它應該做什么,而是它如何做出反應,也就是消息,這是和結構化設計的根本不同。

在面向對象的設計思想指導下,產生了第一個面向對象的語言——20 世紀60年代的Simula-67。它的目的是解決模擬問題。一個典型的應用是模擬銀行系統的運作(銀行是最早采用計算機的行業之一),將銀行的出納部門、客戶、業務等實體模擬成一個個的對象,把這些在程序的運行中除了狀態外其他方面都一樣的對象歸納在一起,就成了更高抽象層面的“類”。在面向對象思想指導下產生了成功的面向對象編程語言——Smalltalk。并且,在此基礎上又誕生了應用更加廣泛的面向對象編程語言——C++及Java。

2.1.2 面向對象特征

1.對象唯一性

每個對象都有自身唯一的標識,通過這種標識,可找到相應的對象。在對象的整個生命期中,它的標識都不改變,不同的對象不能有相同的標識。

2.抽象性

抽象性是指將具有一致的數據結構(屬性)和行為(操作)的對象抽象成類。一個類就是這樣一種抽象,它反映了與應用有關的重要性質,而忽略其他一些無關內容。任何類的劃分都是主觀的,但必須與具體的應用有關。

3.封裝性

封裝性就是把對象的屬性和服務結合成一個獨立的單位,并盡可能隱蔽對象的內部細節。

4.繼承性

繼承性是子類自動共享父類數據結構和方法的機制,這是類之間的一種關系。在定義和實現一個類的時候,可以在一個已經存在的類的基礎上來進行,把這個已經存在的類所定義的內容作為自己的內容,并加入若干新的內容。

繼承性是面向對象程序設計語言不同于其他語言的最重要的特點,是其他語言所沒有的。

5.多態性

多態性是指相同的操作或函數、過程可作用于多種類型的對象上并獲得不同的結果。不同的對象收到同一消息可以產生不同的結果,這種現象稱為多態性。

主站蜘蛛池模板: 合川市| 稻城县| 库伦旗| 宁南县| 玛纳斯县| 习水县| 长白| 兖州市| 曲阜市| 奉化市| 常州市| 禄劝| 商洛市| 武冈市| 苗栗县| 吉木乃县| 怀集县| 北安市| 建湖县| 重庆市| 建阳市| 偃师市| 北碚区| 斗六市| 韶山市| 阿坝县| 巴塘县| 昭觉县| 茌平县| 铜川市| 龙岩市| 浦县| 手游| 安吉县| 平阳县| 墨竹工卡县| 舒城县| 通海县| 清新县| 游戏| 闽侯县|