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

看板Soft_Job作者 (重出江湖)時間8年前 (2017/11/15 22:24), 編輯推噓8(8021)
留言29則, 12人參與, 8年前最新討論串15/19 (看更多)
面試的時候也常被問這問題 後來自己整理過後大概有自己的解釋方式 還好沒面試官聽到睡著 也有被稱讚過解釋的不錯 所以分享給各位參考看看 如果有錯也希望各位糾正一下 OOP的三大精神分別為封裝、繼承、多型 封裝的目的是要隱藏私有成員 讓外部使用者透過公開的介面去使用 這好處是可以規範限制外部使用者 避免任意存取發生意料之外的行為 繼承的目的是要讓子類別擴充父類別所有的公開或限定子類別可見的成員 多型的功能是可以讓你對一個物件使用不同的型別去操作 這好處是可以讓不同類別但是繼承或是實做相同介面(interface)用同一個型別去操作 你只需要注意物件是否有共通的型別而不須注意物件本身怎麼實作 繼承跟介面(interface)使用上的差別? 繼承在使用上子類別跟父類別一定有is a的關係(雖然說我看過的code這根本就是屁…) 但是介面不一定有is a的關係 相反的 某些行為或屬性是某些類別有但其他類別又沒有的話 那麼就適合把這些東西抽離出來 讓有需要的類別去實作 又能不破壞類別繼承的關係 ※ 引述《goooeooo (ge)》之銘言: : 以前面試遇到的問題 : 面試官問我什麼是OOP : 當時我覺得我回答不好 : 我想請問以下 這樣解釋可以嗎? : OOP觀念 運用得宜可以將開發時間縮至最短 且觀念正確下 也可讓將來維護人員好維護 : 在大型系統下效果尤其顯著 : 譬如今天開發倉庫系統(我隨意舉例實際沒有碰過這種系統) : 由上往下分類 譬如有電子類、玩具類 此兩類都還有很多繼續向下的分類... : 將電子類、玩具類 設計製作成大致物件 : 就是讓此兩類的向下分類幾乎都是以此兩物件做為變化繼續修正或增加差異的部份來開發 : 譬如:電子類 再向下有手機類、電腦類 : 那將手機類、電腦類會共通的方法、邏輯再加上變數 制作成電子類物件 : 用電子類物件來小幅修正 完成向下的手機類跟電腦類兩個小差異的部份就行了 : 照這樣的規則一直向下 就是說 也將手機類跟電腦類 繼續做成物件 供向下分類使用 : 也就是說你必須在規劃開始時就已經思考好整個系統架構 會由幾個最上層的物件開始向下 : 一直向下創造物件 讓程式碼進而達到最簡化 但又能完成繁瑣的任務 : 讓開發人員可以快速開發 將來維護人員也可快速理解維護 : 所以最上層的物件設置規劃非常重要 關係到整個系統開發的過程 : 這是我所理解的 請問這樣可以解釋OOP觀念嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.233.159.254 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1510755850.A.43E.html

11/15 23:05, 8年前 , 1F
介面也是要滿足is-a
11/15 23:05, 1F

11/15 23:07, 8年前 , 2F
介面可以看成一種特殊的class
11/15 23:07, 2F

11/16 00:26, 8年前 , 3F
這樣解釋看得出來原po有懂沒有通(內化)
11/16 00:26, 3F

11/16 00:55, 8年前 , 4F
不曉得哪裡還可以加強呢?
11/16 00:55, 4F

11/16 07:50, 8年前 , 5F
能舉得出一個簡單、清楚的實例,就會通個七、八成唷。
11/16 07:50, 5F

11/16 08:10, 8年前 , 6F
說真的. 這標題可以有這麼多回文, 然後每個回文下還都有
11/16 08:10, 6F

11/16 08:11, 8年前 , 7F
人在吐槽別人的答案, 真是不可思議 = =a 如果是我的話只
11/16 08:11, 7F

11/16 08:11, 8年前 , 8F
會問你寫過完成甚麼東西, 其中利用OO的好處和壞處是甚麼
11/16 08:11, 8F

11/16 08:12, 8年前 , 9F
如果沒用OO理由又是甚麼, 真的做出甚麼東西, 又不是清朝
11/16 08:12, 9F

11/16 08:12, 8年前 , 10F
科舉, 大家紙上談兵寫八股比高下 :p
11/16 08:12, 10F

11/16 09:36, 8年前 , 11F
推樓上
11/16 09:36, 11F

11/16 09:39, 8年前 , 12F
真槍實彈就是問如何用C表現出OO精神,然後記憶體優化程
11/16 09:39, 12F

11/16 09:39, 8年前 , 13F
度,問完程度如何就知道了,結果一堆回文都在比作文
11/16 09:39, 13F

11/16 11:42, 8年前 , 14F
又不是每個人都是底層@@
11/16 11:42, 14F

11/16 11:43, 8年前 , 15F
我比較在意記憶體回收和什麼時候會收的問題。
11/16 11:43, 15F

11/16 12:43, 8年前 , 16F
推meowyih 問寫過什麼比較一下就好 前面幾篇根本課文
11/16 12:43, 16F

11/16 13:22, 8年前 , 17F
強人領導下,領導者每一個細節都會反映在企業文化上
11/16 13:22, 17F

11/16 13:23, 8年前 , 18F
orz,推錯
11/16 13:23, 18F

11/16 17:26, 8年前 , 19F
又不是知道底層原理 OOP設計就能設計得好...= =
11/16 17:26, 19F

11/16 18:46, 8年前 , 20F
樓上你說的沒錯阿,但知道OO在底層大概是怎樣的面貌,至
11/16 18:46, 20F

11/16 18:46, 8年前 , 21F
少在原始設計上會多些考量,是說原始設計上喔
11/16 18:46, 21F

11/17 01:14, 8年前 , 22F
為何不能? 知道底層是如何實現, OOP只剩語法問題而已,
11/17 01:14, 22F

11/17 01:15, 8年前 , 23F
可以直接思考最好的抽象方法
11/17 01:15, 23F

11/17 01:16, 8年前 , 24F
很多人講到OOP就喜歡寫雞湯文, 一講到實作就說"我不需要
11/17 01:16, 24F

11/17 01:17, 8年前 , 25F
知道, 知道了也沒好處" 跟本是碼農思想的極致
11/17 01:17, 25F

11/17 09:58, 8年前 , 26F
樓上大概是萬中選一的絕世天才吧 只懂底層原理 OOP其它概念
11/17 09:58, 26F

11/17 09:59, 8年前 , 27F
與模式都不用看了就能自成一派 受小弟一拜
11/17 09:59, 27F

11/17 13:06, 8年前 , 28F
父子騎驢
11/17 13:06, 28F

11/17 13:07, 8年前 , 29F
寫太少會被說 沒有懂精髓 寫太多被說在寫作文 XDDD
11/17 13:07, 29F
文章代碼(AID): #1Q34uAG- (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #1Q34uAG- (Soft_Job)