第一張 對象導論

第一張 對象導論
1.1 抽象過程
(1)編程語言都是提供抽象機制(解決問題的複雜性直接取決於抽象的類型和質量)。
(2)對象:將問題空間中的元素及其在解空間中的表示;其思想的實質死程序可以添加新類型
的對象使自身適用於某個特定問題。
(3)Java語言基於smalltalk的五個基本特性所面向的程序設計方式:
<1>萬物皆對象
<2>程序是對象的集合
<3>每個對象都有自己的由其他對象所構成的存儲
<4>每個對象都擁有其類型
<5>某一個特定類型的所有對象都可以接受同樣的消息
(4)booch總結對象簡單描述爲:對象具有狀態、行爲和標識。(意味每一個對象都擁有內部
數據和方法,並且每一個對象在內存都具有唯一的一個地址)
1.2 每個對象都一個接口
(1)亞里士多德是一個深入研究類型的哲學家(可能是他):所有的對象都是唯一的,但同時
具有相同的特性和行爲的對象所歸屬的類的一部分;這種思想在程序中以關鍵字“class”引入新的類型

(2)抽象數據類型的運行方式與內置類型幾乎完全一致:創建某一個類型的變量,然後操作這
些變量,這些變量表示成唯一的實體,也就是對象;每一個對象都屬於定義了特性和行爲的某個特定的
類。
(3)每個對象都只能滿足某些請求,這些請求有對象的接口所定義,決定接口的便是類型(接
口確定了對某一些對象所能發出的請求,在程序中必須有滿足這些請求的代碼,這些代碼與隱藏的數據
一起構成了實現)。
1.3 每個對象都提供服務
將對象看作是“服務提供者”,程序本身向用戶提供服務,它將調用其他對象提供的服務來實
現這一目的。
好處:它有助於提高對象的內聚性(軟件的基本質量要求之一)
1.4 被隱藏的具體實現
(1)爲什麼被隱藏:因爲加一隱藏,客戶端程序員將不能訪問它,也就可以任意的修改隱藏的
部分,而不用擔心對其他人造成影響。被隱藏的部分都是對象內部最脆弱的部分,他們很容易被客戶端
所毀壞,因此隱藏起來可以減少程序bug。
(2)java用三個關鍵字在類的內部設計邊界:
public:表示緊隨其後的元素對任何人都可以使用;
private:除類型創建者和類型的內部的方法之外的任何人都不能訪問的元素;
protected:與private相當,差別就是繼承的類可以訪問protected成員,而private
不可以;
(3)包訪問權限:類可以在同一個包中的其他類型成員,但是在包之外,這些成員如同制定的
private一樣。
1.5 複用具體實現
(1)最簡單的複用某個類的方式就是直接使用該類的一個對象,也可以將這個對象置於某個新
的類中,稱爲“創建一個成員對象”。
(2)新的類可以由任意數量、任意類型的其他對象以任何可以實現新的類中想要的功能的方式
所組成。使用現有的類合成新的類稱爲“組合”,如果組合是動態生成的,則稱爲“聚合”。
(3)組合具有很大的靈活性,新類的成員對象通常設爲private的。
1.6 繼承
(1)繼承可以在創建一個類之後,我們可以以這個類爲基礎,複製它,然後添加和修改這個類
來創建新類。
(2)讓基類和導出類產生差異:第一種,直接在導出類中添加新的方法;第二種,導出類可以
對基類的方法進行覆蓋
1.7 伴隨多態的可以互換對象
把導出類看作是他的基類的過程稱爲向上轉型。
1.8 單繼承結構
好處:(1)單根繼承結構保證所有對象都具備某些功能;(2)單根繼承結構使垃圾回收器的
實現變得容易很多。
1.9 容器
對容器選擇的原因:(1)不同的容器提供不同類型的的接口和外部的行爲;(2)不同的容器
對於某些操作具有不同的效率
1.10 對象的創建和生命週期
(1)對象的儲存空間和生命週期可以在編寫程序時確定,這可以通過將對象置於堆棧或靜態存
儲區域來實現,但必須在編寫程序時直到對象確切的數量、生命週期和類型。在堆棧上創建的對象,編
譯器可以確定對象存活的時間,並且可以自動銷燬它;
(2)在堆的內存池中動態的創建對象,直到運行時才知道需要多少對象,他們的生命週期如何
;如果在堆上創建對象,編譯器對他的生命週期一無所知;
1.11 異常處理:處理錯誤
異常處理將錯誤處置直接置於編譯語言中,有時甚至置於操作系統中。異常是一種對象,他從
出錯點被拋出,並被專門的設計用來處理特定類型錯誤的相應異常處理器捕獲。
1.12 併發編程
(1)把問題切換成多個可以獨立運行的的部分,從而提高程序的響應能力,在程序中,這些彼
此獨立運行的部分稱之爲線程,總得稱爲併發。
(2)存在的問題:共享資源;
解決方案:某個任務鎖定某項資源,完成其任務,然後釋放資源鎖,使其他任務可以
使用這項資源;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章