論物件導向part 1:why OO - 劉逸的留意世界
文章推薦指數: 80 %
很多人接觸物件導向總是因為公司需要用C++、Java來寫ap, ... NET寫程式,但寫了老半天我問他到底為什麼要用OO,很多人總是支支吾吾的說因為他可以 ...
劉逸的留意世界
跳到主文
紀錄IT、趨勢的點點滴滴
部落格全站分類:數位生活
相簿
部落格
留言
名片
Jun26Sun201101:55
論物件導向part1:whyOO
很多人接觸物件導向總是因為公司需要用C++、Java來寫ap,所以就開始接觸OOP。
但卻忘了,whyOOP?,跳過why是一個壞習慣,總是直接進入到howtouse,隨著時間久了,真的問你為什麼要用OO其實也說不出個所以然。
記得OO主要就是希望更貼近真實世界,用更自然的方法描繪出程式的邏輯運作。
喂!馬步紮穩了沒。
我總覺得學任何語言時,語法其實不是最重要的問題,先把這語言真正的精神瞭解,你才懂得他的適用性、優缺點各自為何。
但現在的人越來越講求速成,只希望能趕快會用C++、Java、.NET寫程式,但寫了老半天我問他到底為什麼要用OO,很多人總是支支吾吾的說因為他可以支援
l DataAbstraction
l Encapsulation
l Inheritance
l Polymorphism
…又來了~我不是出研究所考題,請不要一直被他有哪些特色,對每件事情如果你夠瞭解他你應該能要很白話的方式輕而易舉的把OO的核心價值描繪清楚。
OO只是更直觀的描繪出真實世界的運作。
我常問坐在我對面的面試者,為什麼不用C、要用Java,C什麼都可以做啊,Java的好在哪裡?C速度更快耶,Java比較慢不是嗎?theansweris…?如果又要開始查google、翻書、想老半天,我想或許跟你OO還不熟勒。
其實,OO的出現主要是要解決程式的易讀性、可維護性跟彈性等問題(當然OO的優點不只如此…往後在細談囉!),這些多半不是再開發階段能立刻享受到的好處,但不要忘了80/20法則,百分之80%的effort都是在維護期間出現的,這時候OO的優點就派上用場了。
舉個例子而言,如果今天出了一個題目:『你要產生一個人,設定他的身高、體重之後並且叫他走路』,你可以試著想看看在C語言中你要怎麼撰寫,我想通常會比較不直觀,並且需宣告不少變數;此外,為了日後看的懂你還會寫了不少註解。
但在OO中一切是非常自然的在描述上述的問題:
Personp;
p.height=180;
p.weight=80;
p.walk();
see.Itlookssonaturally.我想應該不需要任何註解,你應該很好看得出來這個人叫p、身高180、體重80、之後開始走路吧!這就是OO的魅力喔…^^
至於為什麼可以有Personp這種宣告方式,其實也是很簡單的概念,你把Person想成type、p想成變數,那上面那一個跟intx,不就是同等的道理。
差別只在於int是系統幫你準備好的型態,而Person則是需要我們自己抽象化描述而來(其實就是定義類別),當我們將Person抽象化定義成類別之後,就可以拿來當一般的type使用,而p就是我們所謂的物件。
從這邊你應該不難想像到為何常聽到類別是靜態的、而物件是動態的;用類比的角度來看,int是靜態的型態,x是變數,然而變數是隨著執行會有所變動,當然就是動態的。
又物件其實可以想成變數所以當然是動態的,每次產生時就會佔用記憶體空間。
上述的描繪都只是OO概念當中的冰山一腳,如果連這些你都尚未釐清,呼~請深呼吸一下誠實的面對殘酷的事實:『請務必~~砍掉重練!!』
全站熱搜
創作者介紹
劉逸
劉逸的留意世界
劉逸發表在痞客邦留言(2)人氣()
E-mail轉寄
全站分類:數位生活個人分類:臥龍論IT此分類上一篇:Convergentprojectequation
此分類下一篇:論物件導向part2:DataAbstraction
上一篇:TradeOff:取捨
下一篇:論物件導向part2:DataAbstraction
歷史上的今天
2012:ITbigshotpart6:雲端經濟四強爭霸個案分析(1)--Apple
▲top
留言列表
發表留言
我的好友
熱門文章
文章分類
臥龍邏輯思考力(19)臥龍論IT(87)臥龍雜記(93)臥龍點將錄(2)全文分享區(1)
最新文章
最新留言
文章精選
文章精選
2016五月(1)
2015九月(1)
2015五月(1)
2014十一月(2)
2014一月(3)
2013十二月(1)
2013十一月(1)
2013八月(2)
2013六月(5)
2013五月(3)
2013四月(5)
2013三月(8)
2013二月(9)
2013一月(5)
2012十二月(9)
2012十一月(7)
2012十月(11)
2012九月(11)
2012八月(15)
2012七月(18)
2012六月(14)
2012五月(6)
2012四月(2)
2012三月(5)
2012二月(5)
2012一月(2)
2011十二月(4)
2011十一月(4)
2011十月(3)
2011九月(7)
2011八月(13)
2011七月(8)
2011六月(8)
2011五月(3)
所有文章列表
文章搜尋
新聞交換(RSS)
誰來我家
參觀人氣
本日人氣:
累積人氣:
QRCode
POWEREDBY
(登入)
回到頁首
回到主文
免費註冊
客服中心
痞客邦首頁
©2003-2022PIXNET
關閉視窗
延伸文章資訊
- 1什麼是OO?物件導向與封裝 - Medium
- 2什麼是物件,為什麼要物件導向,怎麼才能物件導向? - IT人
物件導向是一種思想,他讓我們在分析和解決問題時,把思維和重點轉向現實中的客體中來,然後通過UML工具理清這些客體之間的聯絡,最後用物件導向的語言 ...
- 3物件導向程式設計- 維基百科,自由的百科全書
物件導向程式設計(英語:Object-oriented programming,縮寫:OOP)是種具有物件 ... 物件導向程式程式設計的定義是使用「物件」來做設計,但並非所有的程式語言都 ...
- 4DAY26-物件導向設計 - iT 邦幫忙
用不用「物件導向」差在哪裡? · 「基礎建設」較繁雜龐大, · 寫個簡單程式需要比傳統寫法,還要更多行.
- 5為什麼要使用物件導向設計(OOD)... - 隨意窩
撇開所有美輪美奐的說詞,回來面對現實,我們就是為了能夠讓程式碼重複利用,讓系統易於擴充與維護所以才要使用物件導向。這一切最直接的效果就反應在縮短軟體開發的時間 ...