JAVA第一章 物件導論
阿新 • • 發佈:2018-12-06
/*+ * 1、程式語言的產生起源與對機器的模仿 * 2、www.MindView.net <<c程式設計思想>> Think in C * */ /* * 什麼是抽象過程 * 1、抽象型別:型別指的是:抽象的是什麼 * 2、命令式語言:FORTRAN,BASIC,C是對組合語言的抽象 * 3、每個物件就像是一臺微型計算機:具有狀態也有操作 * 4、面向物件程式設計的特性 * (1)、萬物皆是物件 * (2)、程式是物件的集合:他們通過傳送訊息告知彼此需要做什麼 * (3)、每個物件都有自己的由其他物件所構成的儲存 * (4)、每個物件都有它的型別 * (5)、某一特定型別的所有物件都可以接收同樣的訊息:比如圓形物件可以接收幾何形物件同等的訊息 */ /* * 每個物件都有一個介面 * 1、類描述了具有相同資料和行為的物件的集合,所以類就是一個數據型別 * 2、Java允許程式設計師定義自己需要的資料型別來適應問題,即定義新的類,程式設計系統也會檢查和照管新類 * 3、物件介面確定某一物件所能傳送和接收的請求, * Light it=new Light(); * it.on(); * 定義一個物件的引用it,然後呼叫new方法來建立該型別的新物件。然後向物件傳送請求(呼叫請求介面(即方法)),物件就知道自己該做什麼 * 4、UML:統一建模語言 */ /* * 每個物件都提供服務 * 1、程式是物件的集合,它通過物件之間的服務來完成工作。物件就是服務提供者,它將呼叫本身或其他物件的服務來完成目的。程式設計師就是根據需要確定 * 我們需要哪些物件。 * 2、物件的內聚性: * 高內聚是軟體設計的基本質量要求之一:即一個軟體構建(一個物件,一個方法或一個物件庫)各個方面組合的很好。 * 就是說:每一個物件由不必由太多動能,可以被其他物件複用。 * */ /* * 被隱藏的具體實現 * 1、程式開發人員分為:1、類建立者(建立資料型別)和客戶端程式設計師(應用資料型別) * 類建立者的目標是構建類:這種類只向客戶端程式設計師暴露必備的部分,而隱藏其他部分 * 2、訪問控制: * (1)讓客戶端程式設計師無法觸及他們不該觸及的那一部分 * (2)庫設計者改變內部方式而不影響客戶端程式設計師 * java通過三個關鍵字設定內部邊界: * (1):public:任何人都可使用 * (2):private:只有類的內部方法可以使用 * (3):protected:一般作用與private相當,不同的是繼承類可以訪問 * (4):預設:包訪問許可權:同包的類可以訪問 */ /* * 複用具體實現 * 1、程式碼複用是面向物件程式設計最了不起的優點之一 * (1):複用方式 * 直接使用該類的物件 * 將一個類的物件置於一個新類中(組合:汽車擁有引擎):新類的成員一般為private */ /* * 繼承 * 1、Java程式語言的基本單位:class * 2、繼承的出現:有一個類和另一個類有相似的屬性和功能。 * 匯出類比基類具有更多的特性和功能。(匯出類和基本具有相同的型別,圓形也是幾何形) * 3、兩種方法使匯出類和基類有差異性 * (1):在匯出類中新增新方法 * (2):覆蓋 * 4、“是一個”和“像是一個”的關係 * 替代原則 * (1):完全覆蓋:即匯出類完全重寫基類的方法(是一個的關係) * (2):擴充套件介面(新增新功能)(像是一個的關係) */ /* * 伴隨多型的可互換物件 * 1、在處理型別的層次結構時,經常想把一個物件不當成它的特定物件來處理,而是將它當作基類物件來對待:把自行車看做交通工具,把鸚鵡看成鳥 * 物件會根據自己的型別執行相應的方法 * 2、前期繫結和後期繫結 * 前期繫結:在編譯時產生一個具體函式名字的呼叫:執行時呼叫執行程式碼的絕對地址 * 後期繫結:執行時才能確定程式碼的絕對地址,編譯器確保呼叫方法的存在,並對引數和返回值進行檢查。 * 後期繫結的實現:Java使用一小段特殊程式碼替代絕對地址的呼叫 * C++是使用virtual關鍵詞實現的,而Java動態繫結是預設行為 * * 3、將匯出類當做基類處理: * 向上轉型的過程:“你是一個幾何形,你有自己的draw()方法,去做吧” */ /* * 單根繼承結構 * 1、終極基類:object * 2、單根繼承結構保證所有物件都具備某些功能 * 3、物件在堆上建立 * 4、單根繼承使垃圾回收機制變得簡單 */ /* * 容器 * 1、C++中使用“集合”來表述,Java使用容器表述 * 2、Java具有滿足不同需要的各種型別的容器:List(用於序列儲存),Map(關聯陣列),Set(每個物件型別只持有一個) * (1):不同型別的容器提供不同型別的介面和外部行為 * (2):不同型別對於某些操作具有不同的效率 * 3、引數化型別(容器中只儲存object型別):向上轉型是安全的,向下轉型是不安全的 * 4、Javase5的重大變化之一:增加引數化型別:稱為泛型:用<>表示 * List<Shape> list=new ArrayList<Shape>(); * */ /* * 物件的建立和生命期 * 1、物件生存需要記憶體 * 2、Java採用了動態記憶體分配方式:建立物件使用new關鍵字 * 3、垃圾回收機制:發現物件不再被使用,就銷燬他 */ /* * 異常處理 */ /* * 併發程式設計: * 1、作業系統的併發是基於中斷服務程式,分配時間片的手段 * 2、Java的併發是內置於語言的:Javase5添加了很多大額的庫支援 */ /* * Java和Internet * 1、客戶端/伺服器技術 * 伺服器是提供服務的:伺服器上有資訊儲存池 * 2、web是一臺巨型伺服器 * 3、客戶端程式設計 * 早期的互動只由伺服器提供:瀏覽器只負責解析翻譯 * form表單提交是通過伺服器提供的通用閘道器介面CGI(但CGI啟動很慢,消耗網路頻寬) * 4、客戶端程式設計如何實現: * (1):外掛 * (2)指令碼語言 * (3)Java(通過applet和Java web start) * (4).net和C# * 5、伺服器程式設計 * (1)返回一個編排好的頁面 * (2)利用指令碼語言解析原始資料 * (3)servlet+jsp * 6<<企業Java程式設計思想>>thinking in enterprise java * */