對象導論

一 抽象過程java

  全部編程語言都提供抽象機制.人們所能解決的問題的複雜性直接取決於抽象的類型和質量.所謂的"類型"是指"所抽象的是什麼?"彙編語言是對底層機器的輕微抽象,許多命令式語言都是對彙編語言的抽象,可是它們在解決問題時要基於計算機的結構而不是所要解決的問題的結構來考慮.程序員須要創建起機器模型和實際待解問題的模型之間的關聯.程序員

  另外一種對機器建模的方式就是隻針對待解決的問題,如早期的編程語言,LISP和APL.可是它們只試用於它們要解決的特定類型問題,一旦超出其領域範圍就力不從心.編程

  面向對象方式經過向程序員提供表示問題空間中的元素的工具而更進了一步.這種方式使得程序員不會受限於任何特定類型的問題.這種思想的實質是:程序能夠經過添加新類型的對象使自身適用於某個特定的問題.編程語言

  一個成功的面嚮對象語言的基本特性:工具

  1)萬物皆爲對象測試

  2)程序是對象的集合,它們經過發送消息來告知彼此所要作的.spa

  3)每一個對象都是本身的由其餘對象所構成的存儲.設計

  4)每一個對象擁有其類型.對象

  5)某個特定類型的全部對象均可以接受一樣的消息.接口

 二 每一個對象都有一個接口

  建立抽象數據類型是面向對象程序設計的基本概念之一.抽象數據類型的運行方式與內置類型幾乎徹底一致:你能夠建立某一類型的變量,而後操做這些變量.每一個類的成員或元素都具備某種共性,每一個成員都有本身的狀態.由於類描述了具備相同特性和行爲的對象集合,因此一個類實際上就是一個數據類型.一旦類被創建,就能夠爲所欲爲地建立類的任意個對象,而後去操做它們.接口肯定了對某一特定對象所能發出的請求.

三 每一個對象都是服務提供者

1,當正在試圖開發或理解一個程序設計時,最好的方法之一就是將對象想象爲"服務提供者".程序自己將向用戶提供服務,它將經過調用其餘對象提供的服務來實現這一目的.你的目標就是去建立可以提供理想解決問題的一系列對象.

 2,着手從事這件事的一種方式就是問一下本身:"若是我能夠將問題從表象中抽取出來,那麼什麼樣的對象能夠立刻解決個人問題?"

 3,將對象看作是服務提供者還有一個好處就是能夠提升對象的內聚性.

4,將對象做爲服務提供者看待是一件偉大的簡化工具.

四 被隱藏的具體實現

1,程序開發人員按照角色劃分爲類建立者和客戶端程序員.客戶端程序員的目標是收集各類用來實現快速應用開發的類.類建立者的目標是建立類.這種類只向客戶端程序員暴露必需的部分,而隱藏其餘部分.

2,在任何相互關係中,具備關係涉及的各方都遵照的邊界是十分重要的事情.訪問控制對於界定各自的邊界起着重要的做用.

3,訪問控制的第一個存在的緣由就是讓客戶端程序員沒法觸及他們不該該觸及的部分.

4,問控制的第二個存在的緣由就是容許庫設計者能夠改變類內部的工做方式而不用擔憂會影響到客戶端程序員.

5,java用三個關鍵字在類的內部設定邊界:public,private,protected,還有一種默認的訪問權限.

五 複用具體實現

1 一旦類被建立並被測試完,那麼就應該表明一個有用的代碼單元.能夠用於複用.代碼複用是面向對象程序設計語言所提供的最了不得的有點之一.

相關文章
相關標籤/搜索