物件導向設計把握乙個重要的經驗:誰擁有資料,誰就對外提供操作這些資料的方法。
幾個典型的案例:
·人在黑板上畫圓:有人物件、黑板物件、圓物件,畫圓這個動作必須用到了圓心座標x、y和半徑r,而x、y、r是圓內部的資料,圓擁有這些資料,所以這個動作時圓的,而不是黑板的,更不是人的。
·列車司機緊急剎車:有列車物件和司機物件。剎車動作是列車執行的。
·售貨員統計收穫小票的
金額:有售貨員物件,小票物件。商品的金額在小票上,所以統計金額的行為屬於小票。
·你把門關上了:有人物件、門物件。關門的行為屬於門,因為門旋轉,撞到門框然後門鎖鎖上了。
學員的兩個物件導向的面試題,用物件導向的方式設計如下情景。 「
兩塊石頭磨成一把石刀,石刀可以砍樹,砍成木材,木材做成椅子
」 , 「
球從一根繩子的一段移動到了另一端
」 ,
用物件導向的方式設計如下情景:
·球從一根繩子的一段移動到了另一端
/*有繩子和小球兩個物件*/
//繩子給小球引導了滾動的方向,把繩子想成是由若干的點組成
class rope
//獲取某個點的下個點
public point nextpoint(point currentpoint)
}
class ball
public void move()
}
//小球和繩子是協作關係,小球移動時要問繩子要下乙個點的座標,因為繩子有點的座標,所以返回下個點的座標只能有繩子提供。小球移動是改變的小球的當前位置,所以移動這個動作由小球提供。--->誰有資料誰就有控制資料的方法。
·兩塊石頭磨成一把石刀,石刀可以砍樹,砍成木材,木材做成椅子
有 stone物件,stoneknife物件,tree物件 ,wood物件,chair物件 五個物件。
兩塊石頭磨成一把石刀,這個方法不是stone物件自己提供的,否則stone物件自己就沒了,這個不可能的,也不是其他四個物件提供的,所以是有其他物件提供,假設有個石刀加工廠做的:stoneknife=knifefactory.createknife(store,store)
石刀可以砍樹,砍成木材:這個方法有stoneknife物件提供:wood cut(tree)
木材做成椅子:這個方法也是由椅子加工廠完成 chair=chai***ctory.makechair(wood)
Python入門 物件導向
物件 有具體特徵和行為操作的事物 有具體 特徵 屬性和 行為 方法的物件 將物件行為特徵抽象化用 表示 1 還原生活場景 簡單的 操作 基礎語法,堆疊功能 變數 資料型別 運算 if while 函式式程式設計 將所有要處理的事情,開始封裝成具備一定處理功能的函式,呼叫執行 2 面向過程程式設計 開...
Java入門 物件導向一
物件導向與面向過程 面向過程 線性思維,事物比較簡單 物件導向 簡單的線性思維無法解決,利用大局思維找乙個能解決該問題的物件去解決問題,比如之前的鍵盤錄入就是找到scanner去解決問題。面對物件方便從巨集觀上管理,具體實現還是面向過程的方式。物件和類的關係 類是抽象的,類是確定物件會擁有的特徵 屬...
C 入門物件導向基礎知識
隨著語言學習的比較多,而且都處於基礎階段,基礎容易被忘記,做個例子,複習用。其中的內容和python比較相似,畢竟都是物件導向。include includeusing namespace std define max 10 class box box box int age 建構函式 box bo...