1. 程式人生 > >Java(二)--OOP設計思想

Java(二)--OOP設計思想

(一)java中的oop思想的由來

機器語言-直接有計算機的指令組成,指令、資料、地址都已“0”和“1”組成:可以被計算機直接執行。

組合語言-用容易理解和記憶的符號表示指令、資料以及暫存器等,抽象層次低,程式設計師需要考慮大量的機器細節。

高階語言-接軍人類的自然語言,提出了結構化資料和語句,為面向資料和過程抽象的。

面向物件-抽象成了現實的事物。

(二)OOP的設計思想

從上圖中我們可以看到:OOP的設計思想是:有哪些類?這些類有哪些方法?這些類有哪些屬性?類和類之間有什麼關係?

1、類

Java本身底層檔案中給我們提供的類,有核心類,就是我們經常用的;有網路的類可以通過TCP和UDP協議實現通話;有IO類,就是資料流實現對檔案的讀寫等;工具類,有窗體工具,可以生成Java的窗體和元件等,有使用工具,有容器等。要想使用這些類,要引用,因為Java中除了8大基本資料型別不需要引用只為,其他的物件使用的時候,都需要先引用。

2、方法(動態屬性)

Java中有所有我們需要的Java類及其方法,一名優秀的程式設計師,要學會用這個api檔案。當然視訊中馬士兵老師用構造方法講解了方法,從特殊到一般,構造方法與類同名,一個類中可以有很多個構造方法,方法的區別在於:引數的個數;引數的型別不同。建構函式在例項化的時候被呼叫的。

記憶體分析:

我們主要分析的是第三步:執行過程中的,

(1)、heap為棧,new 出來的東西,都放在這裡、返回值暫時性的放在這裡、區域性變數名稱放在這裡等;

(2)、Stack為堆,區域性變數的值放在這裡,new出來的形參放在這裡等。

當所在函式執行結束,所有的資料就會被釋放。

(3)、Data Segment 是存放靜態變數的,就是用static宣告的變數,不需要對例項化,就可以直接類名+變數名就可以訪問到的。

(4)、code segment 存放程式碼的。

(5)、this的記憶體分析

3、屬性(靜態屬性)

這裡注意一下static宣告的屬性就可以了。

4、類之間的關係

這些關係,我們在UML中就討論過了的,在設計模式中主要要注意必須會這些關係在程式碼中是怎樣實現的。

5、原則

這裡在繼承中有兩個區別:

(1)、介面和抽象類的區別:繼承介面的,要實現介面中的所有方法,二繼承抽象類的,不用實現所有方法;一個類可以實現繼承多個介面,但只能繼承一個抽象類。

(2)、過載和重寫:很簡單:

過載就是在類中可以建立多個方法,他們具有不同的引數表(引數型別和個數),但名字相同,是一種類的多型性的表現。

重寫:是父類和子類之間的多型性,子類繼承父類中的方法,而不需要從新編寫,簡單地說是覆蓋,子類與父類有相同的方法名、返回型別、引數表。

注意一下就行了。

(三)總結

個人覺得馬士兵老師講的OOP改變了很多以前自以為是的想法,老師說的那句話:你們所做的new出物件,物件.方法,調出來後就用,是完完全全面向過程的思想,而大師級的程式設計師是考慮有哪些類,這些類中有哪些方法,有哪些屬性,類與類之間有什麼關係,這才是面向物件的思想。