作者csfgsj (Lazy bone)
看板Soft_Job
標題Re: [閒聊] OOP小評
時間Thu Mar 5 20:07:21 2015
※ 引述《oaz ()》之銘言:
: B. 關於將資料和程序放在一起
: 我個人覺得更精確的說法是:將「相關的」資料和程序放在一起
: 想像我們現在在蓋一間房子,有兩種可能:
: I. 每間房有各自的家電用品,開關都在各自的房間
: II. 每間房有各自的家電用品,開關都集中在某一間房
: 那麼,我們會蓋哪一種?
貴司所舉的例子是一個典型的封閉體系
以下我對您所舉例子的認知,假設有兩個房間好了
兩個房間就是兩個獨立的Class,互不相干
房間的開關就是Class所屬資料成員
只有在那個房間裡面的人才能操作該房間內的開關
也就是成員函式
在這邊Class模型可以成立的原因是:
開關屬於房間,也封閉在房間內,房間外的人不會來操作
何謂開放體系?
房間內有一雙鞋
我可以將它穿出房間外,走到任何其它的地方
甚至房間垮了,鞋子還在
再舉一個交叉的例子
跟車廠買了一部車(資料),車子就是你的了
車子離開車廠
你要找老王(另外一個不相干的處理函式)改車
在路上飆車給警察追
甚至把車放火燒了,車廠都管不著
這是開放體系,車子屬於客戶,控制權在客戶手上
而封閉體系,就是租來的車
客戶想如何使用車,都要通過租車公司(Class)
遵守許多規定,雖然車子是因你而產生的,可是你沒有主控權
也沒有彈性
如果租車公司倒了,那你再也沒有車子可用
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.228.21.125
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1425557243.A.800.html
→ Feis: 車是類別, 租是類別, 租車是類別, 公司是類別, 車場是類別, 03/05 20:15
→ Feis: 隔壁老王也是類別. 然後再排列組合. 應該是 power set 03/05 20:15
→ Feis: 其實一行 code 也可是一個類別. 何苦執著呢. 03/05 20:16
→ Feis: 就是擇善固執而已 03/05 20:18
噓 alan3100: 關鍵字:uml class diagram,真的有興趣逛完新手村再來講 03/05 20:19
→ Feis: 所以求中庸之道. 合謂中庸? 體用相成 03/05 20:20
→ y3k: 你應該是MBTI測出來會是S型的人 沒辦法接受太抽象或太具前瞻 03/05 20:35
→ y3k: 性的東西... 03/05 20:36
噓 bibo9901: OOP也不算"前瞻"了吧XD 03/05 20:41
→ y3k: 我是說"寫法"XD 03/05 20:44
→ typiacalcat: 團隊裡要是有個碎念又沒內容的老人會很讓人頭疼 03/05 21:50
→ typiacalcat: 基本上會被定義成是team-leader或manager的重大過失 03/05 21:51
→ rofellosx: 你說的開放體系聽起來像bug.. 03/06 09:12