作者chenjoe (MAKOTO)
看板Soft_Job
標題Re: [請益] 我這樣解釋OOP對嗎?
時間Sat Nov 18 18:22:52 2017
Re: [請益] 我這樣解釋OOP對嗎?
(類別)杯子的概念
(屬性)材質,外型,顏色,目前容量,最大容量,內容物
(方法)倒入,倒出
(事件)if(目前容量>最大容量) then 漏出
封裝---使用杯子的人(User)只能用倒入,倒出方法去控制杯子的目前容量屬性
其餘屬性以User的角度來說無法控制
繼承---當新造一個杯子的時候,製作者(開發人員)可以決定材質,外型,顏色,最大容量
當一種新的杯子的概念生成時,繼承杯子的部分屬性
繼承杯子的概念,OverWrite材質為玻璃
杯子------------------------------------>玻璃杯
多形---以玻璃杯為概念,製作實體,並更改容量,外型與顏色
生成實體(New),設定外型
玻璃杯------------------------------->高腳玻璃杯
生成實體(New),設定顏色
玻璃杯------------------------------->藍色玻璃杯
生成實體(New),設定容量與外型
玻璃杯------------------------------->啤酒杯
介面---為物件追加一個原來類別中不存在的方法
有天在酒吧有兩個人在吵架,其中一人想拿東西打人
在他面前剛好有三個杯子,於是就砸出去了
高腳玻璃杯:打人(繼承打人介面)
藍色玻璃杯:打人(繼承打人介面)
啤酒杯:打人(繼承打人介面)
當然能拿來打人的不只是杯子,於是他拿了身邊的東西
球棒:打人(繼承打人介面)
椅子:打人(繼承打人介面)
桌子:打人(如果力氣夠大的話)
不管什麼東西都可以拿來打人,所以打人這個動作就可以稱為介面
大概4這樣
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 175.181.102.123
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1511000576.A.084.html
→ loveflames: 介面視上下文,意思可能不同,可能是方法的外觀,但 11/18 19:50
→ loveflames: 講OOP時通常是指另一種 11/18 19:50
→ loveflames: 也就是對方法的規範,跟實作類別有is(或稱can-do、wea 11/18 19:56
→ loveflames: k is-a)關係,也有人不會特地去分is跟is-a,像C++就沒 11/18 19:56
→ loveflames: 辦法區分這兩個,只能一律用抽象類別實現 11/18 19:56
噓 pttuser: 對啦都對,不要再解釋了 11/18 20:46
噓 stitchris: 都對都對... 大家都對 11/19 11:40
推 Void956: 笑了 11/24 16:24