Re: [閒聊] OOP小評

看板Soft_Job (軟體人)作者 (恥ずかしい ね...(>///<))時間10年前 (2015/07/03 21:16), 10年前編輯推噓11(13253)
留言68則, 18人參與, 最新討論串43/43 (看更多)
查詢一下這一系列的文章,感覺好幾篇都在鬼打牆, 從可以從 定性 談到 物件導向 再談到 命名原則... 實在有點獵奇... 小弟就我大學C語言以及 C++ 均獲得 A+ 以及多年的開發經驗來談一下 OOP 好了。 首先,OOP 不完全等與 C++ ,不一定要混在一起談,C++ 的範疇已經遠超越 OOP 了, OOP 的真正精髓在於 P.I.E. (有的時候,Abstract 也會被提及) P 指的是 Polymorphism (多型):   動態或靜態地轉換相同的訊息到不同的類別的物件。   聽起來有點抽象,簡短地說,就是像虛函式以及運算子重載。 I 指的是 Inheritance (繼承):   這好理解多了,看看C++輸入流以及輸出流的繼承關係大概就知道繼承的功能了   http://www.cplusplus.com/img/iostream.gif
  就是因為有很高的關聯性,所以用這個特性可以讓一個語言的功能發揮到極致。 E 指的是 Encapsulation (封裝)   通常指的是一個型態的可見度,通常使用類別來做封裝。 大家有沒有發現,這一切的一切都圍繞著一件東西... 沒錯... 就是類別! C++ 用類別(Class)來封裝(Encapsulation)各式各樣的型態(datatype)以及方法(method) 再讓繼承(Inheritance)去巧妙地處理不同類別可能的相互依賴關係,讓程式變得更好理解 最後,多型(Polymorphism)負責處理剩餘的問題,像是虛函數這種動態的轉換功能。 是不是覺得 OOP 很有趣呢? 這是一個完整的思路,必須要自己慢慢去體會,C++ 的範疇真的已經遠大與 OOP 了! 學好 OOP 不用一年,但是學 C++ 學到精通需要超過五年的時間,除非你是天才, 連 Stroustrup 自己都不敢說他自己精通 C++ 呢... 想要做 OOP 編程也不一定要用 C++,JAVA 也是屬於 OOP 的(閹割版的C++?) 我真心覺得,很多時候,根本用不到 OOP 的,硬是要使用 C++,這讓我覺得有點莫名其妙 一個好的生魚片師傅會去辨別哪種魚要用哪一種刀子, 如果一個自稱高級工程師的人卻不會選擇要使用的程式語言,實在貶低了自己的頭銜。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.241.158.27 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1435929373.A.5F4.html

07/03 21:33, , 1F
不要理他啦這串好不容易沉了
07/03 21:33, 1F

07/03 21:48, , 2F
給推 不要讓亂版的讓大家不敢討論
07/03 21:48, 2F

07/03 22:15, , 3F
你這 P I E 還 A+ 呢 一定不是啥好學校
07/03 22:15, 3F

12/05 22:14, , 4F
會不會寫程式對土木人而言不是很重要 Fortran C++忘
12/05 22:14, 4F
你不是已經忘記C++了...怎麼還突然口沫橫飛了@@? 拎北113啦~不用說A+啦~OOP還幾霸昏嘞~~~ヽ( ・∀・)ノ 自己都幾歲了,戰學校不無聊嗎?

07/03 22:21, , 5F
別戰學校拉,五隻手指都不見的一樣長何況是學校
07/03 22:21, 5F
※ 編輯: Hazukashiine (111.241.158.27), 07/03/2015 22:27:15

07/03 22:36, , 6F
戰學校的是學生還是生命中最值得說嘴成就的是學歷??
07/03 22:36, 6F

07/03 22:59, , 7F
為什麼只有PIE A(抽象)跑到哪去了?
07/03 22:59, 7F

07/03 23:01, , 8F
個人認為是 APIE, A是最重要的一個原則
07/03 23:01, 8F

07/03 23:05, , 9F
OO要學好, 經驗很重要 OO過與不及都不是好事
07/03 23:05, 9F

07/03 23:07, , 10F
我倒覺得C++看書就好了
07/03 23:07, 10F

07/03 23:26, , 11F
Java不是閹割版的C++ 應該說C++有繼承C所以不完全OO
07/03 23:26, 11F

07/04 00:27, , 12F
c++ 是真的很難,oo 也很難,但我覺得兩個是不同方向的難
07/04 00:27, 12F

07/04 00:28, , 13F
c++ 和 java 應該是沒有誰是誰的閹割
07/04 00:28, 13F
謝謝,小弟沒有深入研究過JAVA,但是JAVA語言的特性應該比C++再少一些... WIKIPEDIA: Java程式語言的風格十分接近C++語言。繼承了C++語言物件導向技術的核心,Java捨棄了 C++語言中容易引起錯誤的指標,改以參照取代,同時移除原C++與原來運算子多载,也移 除多重繼承特性,改用介面取代,增加垃圾回收器功能。 照這樣看起來,應該是簡化版的C++,再額外增加介面與垃圾回收器的樣子...XD 不是很確定...XD ※ 編輯: Hazukashiine (36.230.110.229), 07/04/2015 00:50:52

07/04 00:53, , 14F
很好呀 誰沒事會覆寫「+」這樣的運算子
07/04 00:53, 14F
string append 很方便哩...

07/04 00:54, , 15F
如果要看危機百科才知道這個語言特性....
07/04 00:54, 15F
沒學過的也只能以管窺天了啊 XD ※ 編輯: Hazukashiine (36.230.110.229), 07/04/2015 00:58:54

07/04 01:09, , 16F
PIE 以外還有一項.... hashCode
07/04 01:09, 16F

07/04 04:05, , 17F
反正...用得順手就用用不順手就不要用 @@
07/04 04:05, 17F

07/04 04:07, , 18F
什麼語言倒是跟 OOP 與否關係不大, 想用的沒有就自己包
07/04 04:07, 18F

07/04 04:08, , 19F
頂多自己包的語法比較不漂亮而已
07/04 04:08, 19F

07/04 12:11, , 20F
為了用而用,是很多程式人的通病
07/04 12:11, 20F

07/04 14:52, , 21F
原po 你是112的 再來用這種口氣跟我說話 沒見過世面 !
07/04 14:52, 21F
112 CE v.s. 113 CS 領域不同,學校不同,八竿子打不著,敢問要怎麼比? 臺灣會淪落至此,有很大一部份就是因為學歷至上, 不願相信專攻領域,只在乎學校名稱,這實在很可悲... 以日本為例: 「一橋大學」在商管領域方面首屈一指, 「東京醫科牙科大學」為齒科方面的翹楚, 「慶應義塾大學」專攻文史學,研究成果卓越, 「早稻田大學」在政治以及經濟領域也十分著名。 每個大學本應注重在不同的領域發展,有其強項,也有其弱項,不能以一蓋全。 臺灣大學肯定是一個著名的綜合研究型大學,但並不代表在各個領域都有執牛耳的地位。 哈佛大學敢說他的電腦科學領域贏過麻省理工學院嗎? 自己好好想想吧...

07/04 15:25, , 22F
樓上好像有點可憐……
07/04 15:25, 22F
我也覺得他好可憐 @@ ※ 編輯: Hazukashiine (118.165.146.41), 07/04/2015 16:22:59

07/04 16:13, , 23F
@deray: +很好用呀 其實很多operator有定義好就很好用
07/04 16:13, 23F

07/04 16:31, , 24F
只能推了 「男塾」專出男子漢
07/04 16:31, 24F

07/04 17:04, , 25F
可憐的是這種 P I E 的觀念 還出自major in CS 113
07/04 17:04, 25F
我不是在出書,也不是在編講義... 我當然可以可以講解得盡善盡美,但是,這壓根不是這帖子的用意! 請閣下是否能開一個帖子並用相同或更少的字數,更清晰地闡述 PIE 的觀念。 你可以針對我本人,但是不允許你侮辱交大資工系。 ※ 編輯: Hazukashiine (118.165.146.41), 07/04/2015 17:53:32

07/04 18:03, , 26F
能講得盡善盡美 那很好 交大資工其實是台灣的希望 !
07/04 18:03, 26F

07/04 19:03, , 27F
為什麼要把這無聊的討論串拉回來…
07/04 19:03, 27F

07/04 19:53, , 28F
污辱交大資工系的應該是連Abstract都不知道的學生吧
07/04 19:53, 28F

07/04 19:56, , 29F
隨便GOOGLE查一下...幾乎沒有在忽略A的
07/04 19:56, 29F
search "OOP" "PIE": 387,000 results https://www.google.com.tw/?gws_rd=ssl#q=%22OOP%22+%22PIE%22 search "OOP" "APIE": 424,000 results https://www.google.com.tw/?gws_rd=ssl#q=%22OOP%22+%22APIE%22 差不到 10% ※ 編輯: Hazukashiine (118.165.146.41), 07/04/2015 20:43:22

07/04 22:51, , 30F
大概都在寫C++ 所以沒不太有abstract的概念…吧?
07/04 22:51, 30F

07/04 22:51, , 31F
常用virtual的話應該會了解?
07/04 22:51, 31F
我們老師的投影片也沒有 Abstract 啊... (笑 ※ 編輯: Hazukashiine (118.165.146.41), 07/05/2015 01:22:03

07/05 09:32, , 32F
平心而論你說PIE是對的,其他不予置評
07/05 09:32, 32F

07/05 09:33, , 33F
然後建議可以去看一些Design Pattern的書
07/05 09:33, 33F

07/05 09:34, , 34F
以及C++ Object Model。C++很深可以非常深,螞蟻書僅是
07/05 09:34, 34F

07/05 09:35, , 35F
導覽用。C++很多tricky的東西沒辦法塞進去。
07/05 09:35, 35F

07/05 09:35, , 36F
最後老生常談:人要活的謙卑,不然哪天走在路上小心被
07/05 09:35, 36F

07/05 09:35, , 37F
怎麼捅的都不知道。
07/05 09:35, 37F

07/05 09:39, , 38F
啊忘記說,C++有多重繼承,但JAVA沒有,所以解釋會不同
07/05 09:39, 38F

07/05 09:41, , 39F
BTW,我是不知道你OOP修誰的啦,如果是YYP的話是恭喜你
07/05 09:41, 39F

07/05 09:41, , 40F
可以活過老師的摧殘,但後面的路還很長,加油。
07/05 09:41, 40F
謝謝學長給我一點方向... 在打上面一些東東的時候理智線斷了... 我修的是 YYP,老師人很好,只是作業有點多...XD ※ 編輯: Hazukashiine (111.243.62.32), 07/05/2015 10:36:28

07/05 22:05, , 41F
智者複雜的事物簡化,X者將簡單的東西複雜化
07/05 22:05, 41F

07/05 23:15, , 42F
比如可以把文章塞在一篇就好 結果偏偏要分很多篇嗎?
07/05 23:15, 42F

07/06 00:17, , 43F
簡化個人覺得有很多角度
07/06 00:17, 43F

07/06 00:17, , 44F
某個角度的簡化可能是另一個角度的複雜化
07/06 00:17, 44F

07/06 00:17, , 45F
簡稱 複雜度不滅定律 XDD
07/06 00:17, 45F

07/06 00:18, , 46F
最終則是看 哪一個角度跟你的腦子比較合拍
07/06 00:18, 46F

07/06 00:18, , 47F
一樣東西會風行, 最少表示它跟相當數量的人的腦子合拍
07/06 00:18, 47F

07/06 00:19, , 48F
這些人是智者或 X者 其實無所謂
07/06 00:19, 48F

07/06 00:20, , 49F
對他們來說,用得順手、能把事做好、有效率,就是好
07/06 00:20, 49F

07/06 00:20, , 50F
說起來其實沒有對錯,其優劣也是 by 個人或各別團隊的
07/06 00:20, 50F

07/06 12:07, , 51F
為什麼一個程式語言需要學五年?
07/06 12:07, 51F

07/06 12:08, , 52F
為什麼一個程式會越寫越去模組化?後面越來越難改?
07/06 12:08, 52F

07/06 12:11, , 53F
「上輩子做壞事,這輩子做電視」那一家公司的程式
07/06 12:11, 53F

07/06 12:11, , 54F
已經快要做不去了,接手的人現在痛苦不堪,偉大的C++ Code
07/06 12:11, 54F

07/06 12:15, , 55F
我只要一個功能,可是Class, Framework將十幾個Sku的code
07/06 12:15, 55F

07/06 12:15, , 56F
通通包在一起
07/06 12:15, 56F

07/06 12:16, , 57F
通通包在一起,要做一個小小的移植都大有問題
07/06 12:16, 57F

07/06 12:17, , 58F
現在客戶有特別需求,沒有人敢給Schedule
07/06 12:17, 58F

07/06 12:19, , 59F
接手的人看到這一堆滿出馬桶大便不知如何清理
07/06 12:19, 59F

07/06 12:20, , 60F
聰明的人看看就跑了,剩下的菜鳥只能靠么上輩子做了壞事
07/06 12:20, 60F

07/06 12:21, , 61F
高層還在考慮是不是要將整個產品線幹掉
07/06 12:21, 61F

07/06 12:23, , 62F
各位大哥,看了那麼多年,不是在無的放矢
07/06 12:23, 62F

07/06 12:27, , 63F
現在只能勉強站著大便,不要沾到自己的屁股就好
07/06 12:27, 63F

07/06 12:28, , 64F
然後再堆高另一層大便,不知道什麼時候會垮掉
07/06 12:28, 64F

07/06 12:35, , 65F
重構!那可是將煙火彈放在馬桶裡引爆,將老闆嚇得尿褲子
07/06 12:35, 65F

07/06 12:35, , 66F
的行為
07/06 12:35, 66F

07/06 12:35, , 67F
行行好,家裡還有老婆孩子要養
07/06 12:35, 67F

07/06 12:36, , 68F
混口飯吃就好,不要弄得砸飯碗
07/06 12:36, 68F
文章代碼(AID): #1LbeiTNq (Soft_Job)
討論串 (同標題文章)
完整討論串 (本文為第 43 之 43 篇):
-14
103
4
24
-11
76
1
1
11
45
2
31
0
4
4
55
0
4
文章代碼(AID): #1LbeiTNq (Soft_Job)