qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          解讀面向對象的程序設計(二)

             面向對象編程(ObjectOrientedProgramming,OOP,面向對象程序設計)是一種計算機編程架構。接上一篇

            OOP的一條基本原則是計算機程序是由單個能夠起到子程序作用的單元或對象組合而成。OOP達到了軟件工程的三個主要目標:重用性、靈活性和擴展性。

            一、OOP技術的歷史

            面向對象技術最初是從面向對象的程序設計開始的,它的出現以60年代simula語言為標志。80年代中后期,面向對象程序設計逐漸成熟,被計算機界理解和接受,人們又開始進一步考慮面向對象的開發問題。這就是九十年代以MicrosoftVisual系列OOP軟件的流行的背景。

            傳統的結構化分析與設計開發方法是一個線性過程,因此,傳統的結構化分析與設計方法要求現實系統的業務管理規范,處理數據齊全,用戶能全面完整地其業務需求。

            傳統的軟件結構和設計方法難以適應軟件生產自動化的要求,因為它以過程為中心進行功能組合,軟件的擴充和復用能力很差。

            對象是對現實世界實體的模擬,因面能更容易地理解需求,即使用戶和分析者之間具有不同的教育背景和工作特點,也可很好地溝通。

            區別面向對象的開發和傳統過程的開發的要素有:對象識別和抽象、封裝、多態性和繼承。

            對象(Object)是一個現實實體的抽象,由現實實體的過程或信息牲來定義。一個對象可被認為是一個把數據(屬性)和程序(方法)封裝在一起的實體,這個程序產生該對象的動作或對它接受到的外界信號的反應。這些對象操作有時稱為方法。對象是個動態的概念,其中的屬性反映了對象當前的狀態。

            類(Class)用來描述具有相同的屬性和方法的對象的集合。它定義了該集合中每個對象所共有的屬性和方法。對象是類的實例。

            由上分析不難看出,盡管OOP技術更看中用戶的對象模型,但其目的都是以編程為目的的,而不是以用戶的信息為中心的,總想把用戶的信息納入到某個用戶不感興趣的“程序對象”中。

            二、OOP的優缺點

            OOP的優點:

            使人們的編程與實際的世界更加接近,所有的對象被賦予屬性和方法,結果編程就更加富有人性化。

            OOP的缺點:

            就C++而言,由于面向更高的邏輯抽象層,使得C++在實現的時候,不得不做出性能上面的犧牲,有時候甚至是致命的(所有對象的屬性都經過內置多重指針的間接引用是其性能損失的主要原因之一;不過,筆者的局限性在于未使用過VC++外的面向對象語言,所以不是十分肯定,哈哈,有人笑出來了…)。

            在計算機速度飛速發展的今天,你可能會說,一丁點的性能犧牲沒什么大不了。是的,從面向對象的角度,使的編程的結構更加清晰完整,數據更加獨立和易于管理,性能的犧牲可以帶來這么多的好處,沒有理由不做穩賺的生意吧?

            不過,在某些對速度要求極高特殊場合,例如你做的是電信的交換系統,每秒鐘有超過百萬的人同時進行電話交換,如果,每一個數據交換過程都是一個對象,那么總的性能損失將是天文數字!!

            或者這個例子不夠貼身,再舉個例子吧。假如你受聘于一個游戲設計公司,老板希望做出來的游戲可以更多的兼顧到更多的電腦使用者,游戲每秒鐘的運行的幀可以更多,子彈和爆炸物可以更多、更華麗。那么,你會發現使用C++會使你的程序變得笨拙,無法滿足你的需求,除非你非得要你的游戲運行于奔騰四的機器上(如果不是,而你又堅持用C++的對象編程,那么請減少主角的槍的威力吧)。

            如果你是冥頑不寧的人,你說不相信OOP會有性能上的損失,那么,我記得曾看到在CSDN上關于VB和VC執行效率的討論的文章,講述的就是使用了MFC以后,執行效率甚至低于VB開發出來的東西。請各位驗證一下:如果使用的是純粹的C語言語法的話,那么一定會比在VB編出來的東西要快很多(GetTickCount函數可以查閱MSDN,如果想更加精確一些,可以使用QueryPerformanceCounter函數)。

          posted on 2012-02-02 10:07 順其自然EVO 閱讀(148) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2012年2月>
          2930311234
          567891011
          12131415161718
          19202122232425
          26272829123
          45678910

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 赫章县| 永德县| 宁蒗| 马边| 抚顺市| 澎湖县| 德钦县| 建湖县| 普定县| 临泉县| 马尔康县| 宣武区| 老河口市| 辉县市| 巴里| 庆安县| 嘉善县| 崇左市| 电白县| 郴州市| 南宁市| 鸡东县| 昌黎县| 黔西县| 龙口市| 长春市| 葫芦岛市| 康乐县| 卢氏县| 嘉荫县| 太康县| 宝坻区| 卫辉市| 景洪市| 临西县| 包头市| 莱州市| 莒南县| 楚雄市| 丹寨县| 刚察县|