網路開發/程式課程備份文
-----------------------
由於我目前聽過的程式語言, 好像全都是物件導向型的,
不禁好奇, 那何謂非物件導向的語言? 這兩者又有甚麼差異呢?
我這邊稍微查了一下, 可是出現的討論文章專業術語都太多了,
身為新手實在沒能看很懂......
看來看去只能大概理解說, 物件導向語言是比較新的,
目的是為了解決非物件導向的一些麻煩事。
有蠻多人主張說, 與其把物件導向看成是一種技術, 其實他更像是一種思維方式。
也就是換個角度, 去拆解問題, 所以才誕生出物件導向。
(原創) 什麼是物件導向(Object Oriented)?
在這篇文章中, 有實際舉例說明兩者的差異,
可是此篇文章分別使用了C++與C#來做範例, 目前我的能力沒法看很懂
但好像大概念是在講.....
非物件導向, 意思就是功能導向,
所以會先把Function給定義出來, 再利用條件判斷去抓出物件。
產生的缺點就是, 如果要增加新物件時, 前面的Function跟條件判斷全都得重寫。
如果是物件導向的方式來寫程式, 就不需要去改寫前面的程式,
直接加入新物件就好。
例如說, 我現在要list一份清單, 顯示會講外語的成員。
假設現在只有A, B兩人, 一個會英文, 一個會日文,
非物件導向的思考方式將會是......
- 建立功能, 講英文 { 如何如何 };
- 建立功能, 講日文 { 如何如何 };
- 條件判斷, if {} -> Yes, 是A / No, 是B
- list, A會講英文, B會講日文
那如果突然多了一個新人C, 他會講法文。
這時候我除了得多寫一個講法文的function之外,
條件判斷也得全部重寫。
可是物件導向就會變成這樣......
- 建立物件A, { 會講英文 };
- 建立物件B, { 會講日文 };
- list, A會講英文, B會講日文;
- 這時要新增會講法文的C時, 我只要建立C, 描述他就完事了。
在程式規模很小的時候, 看起來沒甚麼差異,
但規模很大的時候, 用非物件導向的思維, 一碰到修改就會改死人。