[Note] 物件導向設計與模擬 course 2015/10/05
- 取得連結
- X
- 以電子郵件傳送
- 其他應用程式
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學分
所以當外面的人問的時候
不同系所的學生回答的畢業學分會不一樣!
留言
張貼留言