Re: [請益] 我這樣解釋OOP對嗎?

作者: gnimnek168 (Gnimnek168)   2017-11-13 16:06:14
1. 封裝 (encapsulation)
其實封裝本來就是人們面對複雜度的一種本能,針對某一問題點的廣度與深度之間找到適
切的焦點。鄧小平就曾說過:「不管黑貓或白貓,能抓到老鼠的就是好貓」。其實這就是把系
統當作黑箱 (black-box)的封裝概念了。 :)
設計模式 (DP, Design Pattern)內的「Facade」,即為強調封裝某一主體 (context)內
部繁雜的細節。
例如,兩大平台的 Web MVC (Model/View/Control)是一種因應 Web 端的技術解決方案,
實際上 Controller 僅為 UI 端的控制邏輯,卻不適合擔任資料存取(data access)與邏
輯運算(business logic)的工作。所以在大型系統的開發上,一般會設計中間層的「領域
物件 (domain controller)」,將上述兩大類的工作 (資料存取/邏輯運算)由其當窗口
(entry-poing),再視工作性質,委派 (delegate)給專司其職的成員物件 (如
DAO/Utility, Business Object ...等)。
此時「Domain Controller」就是一種系統的「Facade」物件,封裝了資料存取與邏輯運
算的細節,UI 端 (Web/Standalone Form/Mobile App/外部系統)不需要知道如何處理,
只要能取得所需要的結果即可。
不僅程式寫碼,在 UML 的使用案例 (use case)需求分析技術中,就擅用了封裝的技巧 (
系統功能(主題)->程序/工作事項->細節(資料欄位/計算邏輯)),先抓大的操作目的,再
來包容善變的細節。
在軟體工程來說,這比較能造成「低耦合 (low coupling)」的效果。
作者: YahooTaiwan (超可愛南西我老婆)   2017-11-13 16:17:00
好像在考計概名詞解釋 XD
作者: kwpn (ITSST)   2017-11-13 17:20:00
第一篇不是有人推"三句沒講出重點就下一個問題了 誰會聽你廢話"
作者: elements (Helianthus annuns)   2017-11-13 17:22:00
考試大概可以拿一百
作者: kaufmann (抓住虛幻的尾巴)   2017-11-13 17:35:00
認真解答疑惑
作者: youtuuube000 (小孩)   2017-11-13 17:45:00
這樣寫根本看不懂...我只看到一堆專有名詞而已
作者: ab18282099 (poppopjack)   2017-11-13 18:09:00
推詳解
作者: buper (ymsrc)   2017-11-13 18:31:00
先推解釋
作者: WiseLin1125 (Wise)   2017-11-13 18:42:00
清楚明瞭
作者: bibo9901 (function(){})()   2017-11-13 18:45:00
一本正經的廢話
作者: pttuser (pttuser)   2017-11-13 19:18:00
這些背完,面試官都睡覺了問多型最簡單的方法:C如何實現多型,會的話OO問完了不會的話,面試也問完了^o^
作者: art1 (人,原來不是人)   2017-11-13 19:30:00
不看專有名詞的部分應該很好懂吧,一般化/特殊化會看不懂?保險的例子也能看不懂?
作者: bibo9901 (function(){})()   2017-11-13 19:50:00
這些概念跟本不需Object也能做到C沒有object, FP跟本連class都沒有, 難道就做不到封裝繼承多態了? 這只是指出了「好程式」的特性, 並沒有解釋OO如何解決這些需求
作者: ripple0129 (perry tsai)   2017-11-13 20:10:00
搞不好面試官只是想要你回答Object Oriented Programming
作者: jej (晃奶大馬桶)   2017-11-13 20:16:00
畫一個class diagram 結束
作者: dreamnook (亞龍)   2017-11-13 20:20:00
好奇問問C的封裝怎麼做xD
作者: willyann (咖啡偶)   2017-11-13 20:38:00
上次看到滴妹(阿滴英文)解釋facade的意思,真是有那麼一瞬認為她超適合當軟體工程的代言人啊
作者: shiauji (消極)   2017-11-13 21:09:00
這篇會很難懂嗎?我非本科覺得解釋很精闢
作者: bibo9901 (function(){})()   2017-11-13 22:42:00
不是難懂. 是太廣泛到幾乎是廢話
作者: sss81521 (爆宇哥)   2017-11-13 22:45:00
樓上你真的會OOP嗎XD 他寫這樣你懂?我指sh大XD
作者: bibo9901 (function(){})()   2017-11-13 22:51:00
就好像我問你「微波爐是什麼?」,而你的回答是1.可以加熱 2.可以放在家裡 3.只要放得進去的食物都可以當然是很好懂而且道理也沒錯....只是有講跟沒講一樣比較有建設性的回答應該是加熱原理、適用情形、使用規則
作者: vi000246 (Vi)   2017-11-13 23:28:00
我還是喜歡深入淺出拿鴨子跟pizza的範例 好記又好懂
作者: elements (Helianthus annuns)   2017-11-13 23:54:00
微波爐那個 要看你是面試廚師還是電機工程師
作者: art1 (人,原來不是人)   2017-11-14 02:12:00
沒有解釋如何解決嗎? 那封裝繼承多型不算解決方法?
作者: shiauji (消極)   2017-11-14 06:03:00
這個 在做大型專案開發時不都要用到這些觀念嗎? 順便講個我原本是物理系的 不覺得這個多難懂....
作者: keke0421 (zrae)   2017-11-14 08:09:00
外圍畫圈圈 卻沒有直擊到核心 描述赘詞太多
作者: silent5566 (沉默五六)   2017-11-14 09:15:00
懂OOP的看得懂這篇 不懂的還是不懂覺得可以用簡單的譬喻或實做上的心得說明
作者: jefflu   2017-11-14 10:36:00
其實我覺得應該是 inheritance is for code reuse, and polymorphism is for extending the code.
作者: Vick753 (彬彬)   2017-11-14 11:33:00
寫的不錯了
作者: aszx4510 (wind)   2017-11-14 13:15:00
寫得很棒 感謝分享
作者: ae86357961 (Jasper.Yang)   2017-11-14 14:05:00
作者: LoserWon (魯蛇王)   2017-11-14 17:09:00
OOP系列文第 2 名
作者: Sidney0503 (Sidney0503)   2017-11-16 12:38:00
面試你會講一堆中文雜英文?

Links booklink

Contact Us: admin [ a t ] ucptt.com