論物件導向part 1:why OO - 劉逸的留意世界

文章推薦指數: 80 %
投票人數:10人

很多人接觸物件導向總是因為公司需要用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 關閉視窗



請為這篇文章評分?