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