1. 程式人生 > >JAVA程式設計思想學習筆記(一)

JAVA程式設計思想學習筆記(一)

物件導論

1.1 抽象過程

Smalltalk的五個基本特性:

  1. 萬物皆為物件。
  2. 程式是物件的集合,它通過傳送訊息來告知彼此所要做的。
  3. 每個物件都有自己的由其他物件所構成的儲存。
  4. 每個物件都有其型別。
  5. 某一特定型別的所有物件都可以接受同樣的訊息。

1.2 每個物件都有一個介面

類描述了具有相同特性(資料元素)和行為(功能)的物件集合,所以一個類實際上就是一個數據型別。
例如:浮點型具有相同的特性和行為集合。

1.3 每個物件都提供服務

當正在試圖開發或理解一個程式時,最好的方法就是將物件想象為“服務提供者”。
將物件看做是服務提供者有一個附帶的好處:有助於提高物件的內聚性

1.4 被隱藏的具體實現

被隱藏的部分通常代表物件內部脆弱的部分,他們容易被粗心的客戶端程式設計師所毀壞,因此隱藏起來可以減少程式bug

1.5 複用的具體實現

一個類被建立並測試完,那麼它就應該是一個有效的程式碼單元。程式碼複用是面向物件程式設計語言所提供的最了不起的優點之一。
組合:新的類可以由任意數量、任意型別的其他物件以任意可以實現新的類中想要的功能的方式所組成。
組合帶來了極大的靈活性,而繼承並不具備這樣的靈活性。

1.6 繼承

繼承使用基型別和匯出型別的概念表示了型別之間的相似性。一個基類包含其所有匯出型別所共享的特性和行為。
匯出類和基類差異的方法:
6. 直接在匯出類新增新方法。使用時應該考慮是否基類有需要這些新的方法。
7. 覆蓋:改變現有基類的方法的行為。

1.7 伴隨多型的可互換物件

非面向物件程式設計的編譯器產生的函式呼叫會引起所謂的前期繫結,面向物件使用的是後期繫結。在某些語音中,需要特別宣告,如:C++中的virtual關鍵字。
向上轉型: 將匯出類看做是它的基類的過程。

1.8 單根繼承結構

包括除C++以外的所有OOP語言最終都是繼承自單一的基類:Object。
C++這麼做是為了更好的適應C模型,而且受限較少。
單根繼承結構好處:會有更高的生產率;引數傳遞得到了極大的簡化;垃圾回收器實現變得容易的多。

1.9 容器

單一型別的容器可以滿足所有需要,如Object容器,可以放下所有型別,但是還是需要不同型別的容器。

  1. 不同容器提供了不同型別的介面和外部行為。
  2. 不同容器對於某些操作具有不同的效率。

1.10 物件的建立和生命週期

Java採用動態記憶體分配方式。想要建立新物件時,就要使用new關鍵字構建此物件的動態例項。

1.13Java與Internet

客戶/伺服器的核心思想:系統具有一箇中央資訊儲存池,可以根據需要分發給某些人員或機器叢集。