[Note] 物件導向設計與模擬 course 2015/10/05

Object的概念:
Object有三樣東西:
1 State : keep information
2 Behaviour:這個物件可以幹麻,他會在什麼情況下做什麼事情
3 Identity:每一個物件本身必須是unique的,描述上可以清楚地說出是哪一個
一個物件被 new出來時,他的記憶體位置就是他的identity

生活中的例子:
物件:人
identity: 人名
Behaviour: 可以說話,可以走,可以讀
State: Studying, resting

物件:衣服
identity:我最喜歡的上衣
Behaviour:可折,染色
State:正在被穿,髒的,損壞的


物件:眼睛
identity:陳雲濤的左眼
Behaviour:瞳孔放大,縮小
watch <-- 這是人在操作的,所以不是眼球本身的Behaviour
State:紅的,還是正常的
close/open (X) <-- 這個state不是眼球本身的 State

物件:路燈
State:路燈編號
Behavior:開/關
State:亮著/暗著

物件:一張股票
identity: 台GG
Behaviour:上市,下市
上漲下跌(X) <-- 這不是股票本身的 Behaviour
State:可交易/不可交易
買進/賣出 (X)  <-- 這不是股票本身的 Behaviour 

物件:HTC手機
identity:IMET (唯一的序號)
Behaviour:(叫手機)撥號,(叫手機)上網
State:開機/關機/充電


物件:鞋子
identity:品牌型號 (X) <-- 他不是唯一的 !!  產品序號(O)
Behaviour:跑步爬山(X)  <-- 這是人可以做的!!  保護腳步(O)
State:Size,color (X) <-- 這不是鞋子本身的狀態!! 新的/舊的(O)
物件:Dog
identity:name IC
Behaviour:bite, bark
State:sleeping

動作描述:
搭高鐵回家這件事情
物件名稱:車票
Identity:ID
Behaviour:check 乘車資訊,經過閘門驗證
State:有效/無效,已售出/待售

物件名稱:車票交易紀錄
Identity:訂位代碼
Behaviour:新增 修改 刪除
State:交易成功/交易失敗



Class 是 description of a set of objects with similar:
features
sematics
constraints

物件本身有生命週期的問題
所以為什麼要用Class來描述物件呢?
方便闡述"分類"的概念

Object 有 id 
Class 沒有 id 
練習:請寫出你現在周圍所有的Class跟Object

Class:學生  特徵:性別
Object:我(school id xxxxxxxx)

Class:冷氣   特徵:出廠年份Object:教室中間的那台冷氣(id = 1029314)

Class:電腦   特徵:品牌
Object:我面前的這一台電腦(產品編號 xxxxxxxx)

Class:教室   特徵:空間大小,座位數
Object:127A 這間教室

Class 的 instance 就是 object


Generalization 繼承

Java裡的 inheritance:同時繼承宣告跟實作
Java裡的 implement:只繼承宣告不繼承實作

UML圖
如果Class名稱前面打了一個冒號
例如
:Driver 
代表他是一個Instance (實體 Object)

不在Object的instance variable裡面的東西可以用參數傳過去

Polymorphism
故事:
如果台大校方規定,台大學生畢業條件是修完128學分
工科海洋系繼承台大校方
但是override這個method把畢業學分調整成140學分
所以當外面的人問的時候
不同系所的學生回答的畢業學分會不一樣!



Encapsulation / Inheritance
故事:
有些時候我不想要讓人去直接操作數據
例如
2/28日的後面一天是幾月幾號
我們需要把這個動作封裝起來 做一個Function叫做 m1()
不需要告訴使用者他怎麼做的
只要可以call m1() 產生正確的下一天日期即可
然後,
有另一個Class繼承了現在的這個class
如果他也要使用m1() 的話,他根本不知道這個 m1() 怎麼做的
當他 call m1() 時,就會super 到 parent class 的 m1() 讓parnet版本的m1() 來做事情!







留言

這個網誌中的熱門文章

[筆記] CRLF跟LF之區別 --- 隱形的 bug

[ML筆記] Batch Normalization

[筆記] 統計實習(1) SAS 基礎用法 (匯入資料並另存SAS新檔,SUBSTR,計算總和與平均,BMI)

[ML筆記] Ensemble - Bagging, Boosting & Stacking