發表文章

目前顯示的是有「OOAD」標籤的文章

[Note] Design Patterns 課程筆記

圖片
名詞解釋: Slide 12 Context :會使用的情況 Force : 限制條件 以行李箱為例: Context :要裝東西,要裝重物 Force :上下樓梯不方便 Slide 13 Related Pattern: 一個 Pattern 會附著其他形式的 Pattern 思考: 大的包包為什麼會有小的口袋? 思考:什麼是設計? 問題:沒有物件導向之前? 程式的資料跟程式的關係是什麼? 回想 C 語言當中的 data → 資料跟程式間的關係,簡單來說,就是 Data Structure & Algorithm 有了物件導向的概念後 → 把資料跟方法(程式function)結合在一起,變成了物件(object) 問題:在沒有framework之前,用什麼? → Library Framework v.s. Library framework 是我想要完成一件事,我先把這個架構寫好,大部份完成了,但是沒有把細節完成 library 僅僅提供執行所需的函數,沒有提供架構 Design Pattern 分成三大類: Creational : 物件生出相關的Pattern Structural : 物件跟物件關係的Pattern Behavioural : 物件跟物件互動行為的Pattern 問題:物件導向程式Performance一般比較不好,為什麼我們需要物件導向程式? Code reuse 較容易 較為彈性 較好maintain Creational Pattern Singlaton 例如: 有一個Company的Class,中華電信這家公司是Company Class的一個instance 當我們在Access 的時候,要確保我們看到的是同一個中華電信的instance 不可以自己亂new一個新的 這時就需要一個機制可以限制有一個Class只能被new一次,不能出現第二次 也就是Create的時候只能Create一次,不能Create第二次 做法: 不讓別人new! 把Constructor private 保護起來,然後利用一個static的method去呼叫它 ...

[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 Sta...