Re: [閒聊] OOP小評
我覺得 OOP 這個名字真的取得不好
因為會讓人 誤解為 什麼東西都視為物件
其實他最重要的概念就是
"針對介面寫程式"
跟 Domain Knowledge 一點衝突也沒有
而介面 最重要的概念 就是 : 封裝
雖然 繼承 或多型也很重要
不管用啥語言
如果 能做到 封裝
也就是 讓 介面 清楚 表達裡面的實作內容
並且 不會與其他 介面 做混淆
這就 符合 OOP 的精神了
而裡面實作的內容 就是 Domain Knowledge
介面有各種層次
比如
<1> 最初 的 function
<2> 接著 進階到 file name (EX : C 裡面的 file name 就是把 相同的 API group 在一起)
然後 是 Class (OOP 語言)
<3> Class 裡 設為 public 的就是介面
當 OOP 出現後
他最重要 的就是 利用 繼承 將 這些 Class 的 介面抽取出來
也就是多型
<4> 他的父類別就是 OOP 裡的 介面
就這樣 一直不斷抽取
我覺得 OOP 的概念其實就 源自於 生物裡的細胞
假設 病毒 的介面 和 人類 的不同
那 病毒不就無法 感染人類了
但如果 身體裡 各個器官的介面 都不一樣
不就無法將 消化的養分送到 各個器官
各個器官也無法一起合作
以上這段說明一個概念
介面是為了 互動 而生的
他是要讓 一個 可能 不十分了解你的 Domain Knowledge 的 client
能夠 透過介面 跟你 互動
有一本書 曾說過
學 OOP 應該 先從 Design Pattern 入手
這是真的
Design Pattern 讓你曉得 當 互不相干的兩人要互相溝通(存取介面)
要如何才能讓 對方 可以 在不知道 實作情況下 很有效 的溝通
用 OOP 如果 只創造 一個 Class 是沒有意義的
只有在 與別的 Class 交互作用下
才能發揮 介面的功效
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.137.68.90
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1425183886.A.B49.html
推
03/01 12:38, , 1F
03/01 12:38, 1F
→
03/02 13:09, , 2F
03/02 13:09, 2F
討論串 (同標題文章)
以下文章回應了本文:
閒聊
1
1
完整討論串 (本文為第 3 之 43 篇):
閒聊
3
26
閒聊
0
2
閒聊
1
2
閒聊
6
21
閒聊
3
5
閒聊
1
1
閒聊
-8
31
閒聊
3
4
閒聊
1
5
閒聊
6
17