天天看點

Java程式設計思想讀書筆記(一)對象導論

1. 内容

  • 軟體設計原則:高内聚和低耦合
  • 每個對象都隻能滿足某些請求,這些請求由對象的接口(interface)定義。
  • 每個對象都能很好的完成一項任務,而不試圖做更多的事。
  • 通路控制的存在原因:
    • 用戶端程式員(調用别人寫好的類庫的程式員)不能調用他們不應該調用的方法
    • 寫庫的大佬可以改變類内部的工作方式,而不用擔心會影響用戶端程式員
  • 通路權限:public、預設(包權限)、ptotected、private
  • UML中每個類用一個方框表示,類名在方框的頂部,資料成員在中間,方法在底部。通常隻有類名和公共方法被顯示于UML設計圖中。
  • 建立新類時應該首先考慮組合——一個類是另一個類的成員對象
  • 繼承
    • 子類與父類有差異的方式:
      • 直接在子類中添加方法
      • 方法的覆寫
    • 判斷是否繼承,要确定是否可以用 is-a 來描述類之間的關系,例如:點是一個幾何形狀。
    • 在子類中添加了新方法構成了is-like-a關系,由于父類無法通路子類新添加的方法。
  • 後期綁定
    • 非OOP程式的編譯器産生的函數調用會引起前期綁定,即運作時直接加在這個函數的絕對位址。而OOP采用後期綁定,調用的函數隻有在運作時候才能确定,編譯器隻保證調用方法的存在,對調用函數和傳回值進行檢查,但是不知道将被執行的确切代碼(不提供此類保證的語言稱為弱類型)。
    • 為了這樣的機制能夠正确執行,java使用一小段特殊的代碼來代替絕對位址調用,以此用來計算真正調用的方法體的位址。
  • 向上轉型
    • 将子類看做父類的過程(upcasting)
  • 單根繼承結構
    • 除了c++,所有的oop語言所有的類都繼承自一個終極基類,java中是Object。
    • 好處:
      • 所有對象都可以在堆上面很輕易的建立
      • 參數傳遞得到了極大的簡化
      • 使得垃圾回收機制的實作變得容易了很多,所有的對象都有具體的類型資訊,不會發生因為無法确定類型而陷入僵局
  • 容器
    • 也成為集合,list、set、map等
    • 泛型
  • Internet
    • 客戶/伺服器
    • 用戶端程式設計