作者noodleT (麵T)
看板C_and_CPP
標題[討論] 做OO是不是要有美感?
時間Fri Apr 1 16:00:23 2016
第一道問題是
要選擇繼承,還是組合?
例如:
汽車要繼承引擎,
還是汽車要包含一個引擎成員?
汽車繼承引擎的話,
自然的就擁有發動、加油等功能,
跟日常看到的一樣。
但它們之間並沒有 is a 的關係…
又例如:
物件計數器
template 〈class T〉
class counter
{建構加一,解構減一}
如果要統計汽車物件數量,
要繼承好,還是包含好?
第二個問題:
以生產線模擬來說,
一台機台完成動作後
要通知下一台「輪到你了」
所以機台要「認識」其他機台。
class machine{
machine *other;
}
但這樣一來,
machine 裡有machine,
如果有個人想搞怪,
一直 new 下去,
這樣是不是就變成
machine = 生產線 ?
我可以接受一些 tree 結構採取
自己裡面有自己的指標設計,
但就很難接受一個
活生生的、現實的例子這樣作…
是我太欠缺美感,
還是太鑽牛角尖所致嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 110.28.215.7
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1459497626.A.AEB.html
1F:→ Neisseria: 找些 object-oriented design 的書來看,會有幫助04/01 16:06
3F:→ Neisseria: 雖然是用 Ruby,不過這本評價蠻好的04/01 16:08
4F:推 rodion: 說美感太抽象 我以為OO只是達成高內聚低耦合的方法之一04/01 16:14
5F:→ rodion: 應該思考的是如何寫 才能更容易擴充與維護04/01 16:15
6F:→ noodleT: 我也想高維護性,但老闆總是說能動就好04/01 16:17
7F:→ noodleT: 還是較希望是 c++ 中文版好04/01 16:19
8F:推 longlongint: 嗯 那你應該先說服你老闆 不然他會覺得你浪費時間又04/01 17:14
9F:→ longlongint: 沒產出04/01 17:14
是不是傳統產業都比較偏向於
程式能動就好?
※ 編輯: noodleT (110.28.215.7), 04/01/2016 17:55:26
10F:推 james732: 通常老闆都會覺得會動就好XD04/01 17:56
11F:→ Caesar08: 應該是大部分人都覺得 程式能動就好,不是只有你老闆04/01 18:17
12F:推 weiclin: 那你可以接受將通知下一台的邏輯移到新的類別嗎?04/01 19:53
13F:→ weiclin: 例如生產線類別,裡面很多機台,就負責把產出餵給下一台04/01 19:55
多一個生產線類別來控管
感覺挺不錯的
14F:→ weiclin: 或許你可以參考 Domain Driven Design 的思路04/01 19:58
15F:推 CLANNAD: OO不是要你模擬現實 也不用什麼美感04/01 20:09
16F:→ CLANNAD: 只要考慮內聚力 耦合性 職責這堆東西就好了04/01 20:10
OO不是把現實的屬性、
功能轉成類別嗎?
※ 編輯: noodleT (110.28.215.7), 04/01/2016 23:27:26
17F:推 legendmtg: 不是 很多類別會是抽象的概念 而不是現實的"東西" 04/02 00:09
19F:→ weiclin: 設計類別如果能對應到現實的概念,能幫助理解 04/02 00:34
20F:→ weiclin: 但如果不適合還硬套的話就只有反效果 04/02 00:48
21F:→ noodleT: 謝謝 04/02 07:37
22F:推 farmerlu: C++ 是藝術.前二題比較簡單.第三題.每一機台要認識幾台? 04/21 19:33