黑馬程式設計師 JAVA高新技術之物件導向的設計思想

2021-06-22 10:57:13 字數 1161 閱讀 9587

張孝祥老師物件導向的設計思想

誰擁有資料,誰就對外提供操作這些資料的方法, 誰具有這項屬性,誰就提供操作這些屬性的方法。

經典案例分析:

1、人在黑板上畫圓

這個案例有三個物件:person,blackboard,circle 有乙個動作畫圓,畫圓這個動作可以封裝成乙個方法draw(),那麼,這個draw()方法應該封裝在那個類中呢?我們知道,要畫圓就必須知道圓心和半徑,也就是draw()方法需要使用圓心(x,y)和半徑radius這兩個屬性,而這兩個屬性正是圓的兩個屬性,所以方法draw()就應該封裝在圓circle類裡面。 draw() 

2、列車司機剎車

首先我們要知道車子本身就有與剎車有關的一些特性,假如車子沒有剎車相關的屬性,比如離合器之類的等等,那麼車子不可能被剎下來。只有車輛自己才知道如何把自己停下來,所以剎車這個方法就應該封裝在車子這個類裡面,列車司機只是呼叫了車子的剎方法。

3、關門

類似剎車,門本身就有比如旋轉軸等與關相關的屬性,所以關這個方法就應該封裝在門這個類裡面,我只是呼叫了門的關方法。逆向思維,假如我們把關封裝在「我」這個類裡面,那我就可以呼叫「關」的方法去關任何與我有關的東西,然而和我們有關係的東西並不是所有的都能關,這顯然不合理。

4、「兩塊石頭磨成一把石刀,石刀可以砍樹,砍成木材,木材做成椅子」

有哪些顯式物件:stone、stoneknife、tree、material、chair 兩塊石頭-->一把石刀 ==> 從這裡我們就應該想到兩塊石頭應該作為引數傳進去,返回的結果是石刀,所以還需要乙個用石頭作原料製作石刀的類,這裡是knifefactory,它提供乙個方法createknife(stone first, stone second)返回結果是stoneknife。 石刀把樹看成木材 ==> 這裡我們應該想到stoneknife需要提供乙個方法cut(tree)返回值是material 木材-->椅子 ==> 需要額外增加個椅子工廠類chai***ctory提供製作椅子的方法makechair(material)返回結果是chair stone knifefactory stoneknife = knifefactory.createknife(stone first, stone second) tree material = stonekinfe.cut(tree) chai***ctory chair = chai***ctory.makechair(material)

黑馬程式設計師 JAVA高新技術之JDK1 5的新特性

jdk1.5的新特性 一 自動裝箱和拆箱 1 自動裝箱和拆箱是由編譯器幫助完成從基本資料型別和基本資料型別的包裝類之間的轉換。基本資料型別 int,long,double,float,boolean,char,byte,short 基本資料型別包裝類 integet,long,double,floa...

Java高新技術 列舉

說明 當乙個類的物件個數固定,且不需要再建立這個類新的物件時,可以考慮用列舉。一,列舉原理 列舉型別特有 1.私有構造方法 2.每個元素分別用乙個公有的靜態成員變數表示 3.可以有若干個公有方法或抽象方法,抽象方法可以使每個元素 本類物件 通過覆蓋具有自己獨特的內容 注 列舉型別的元素就是本類物件,...

黑馬程式設計師 高新技術 小知識點之一

override 重寫 1 方法名 引數 返回值相同。2 子類方法不能縮小父類方法的訪問許可權。3 子類方法不能丟擲比父類方法更多的異常 但子類方法可以不丟擲異常 4 存在於父類和子類之間。5 方法被定義為final不能被重寫。overload 過載 1 引數型別 個數 順序至少有乙個不相同。2 不...