• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    軟件測試關于面向對象的一些思考[1]

    發布: 2009-11-05 10:38 | 作者: 不詳 | 來源: 領測軟件測試網采編 | 查看: 10次 | 進入軟件測試論壇討論

    領測軟件測試網 軟件測試關于面向對象的一些思考[1] 軟件測試工具

    關鍵字:面向對象

      面向對象方法被人談論了二十多年了。我接觸它比較晚,直到九十年代中期才開始學習使用它。若說對這個方法做些評價,那還真是大言不慚了。~不過這么些年來,也周期性的對面向對象做些思考;驅蝈e,我想都值得總結一下。一家之言,來看的同學不必太當真。

      首先我們要區分一下“基于對象”和“面向對象”的區別。

      基于對象,通常指的是對數據的封裝,以及提供一組方法對封裝過的數據操作。比如 C 的 IO 庫中的 FILE * 就可以看成是基于對象的。

      面向對象,則在基于對象的基礎上增加了多態性。所謂多態,就是可以用統一的方法對不同的對象進行同樣的操作。當然,這些對象不能完全不同,而需要有一些共性,只有存在了這些共性才可能用同樣的方法去操作它們。我們從 C++ 通常的實現方法的角度來看,A 和 B 在繼承關系上都有共同的祖先 R ,那么我們就可以把 A 和 B 都用對待 R 的控制方法去控制它們。

      為什么需要這樣做?

      回到一個古老的話題:程序是什么?

      程序 = 算法 + 數據結構

      在計算機的世界里,數據就是一個個比特的組合;代碼的執行流程就是順序、分支、循環的程序結構的組合。用計算機解決問題,就是用程序結構的組合去重新排列數據的組合,得到結果。為了從龐大的輸入數據(從 bit 的角度上看,任何輸入數據都可能非常的龐大),通過代碼映射到結果數據。我們就必須用合理的數據結構把這些比特數據組合起來,形成數量更少的單元。

      這些單元,就是對象。對象同時也包括了對它進行操作的方法。這樣,我們完成了一次封裝,就變成了:

      程序 = 基于對象操作的算法 + 以對象為最小單位的數據結構

      封裝總是為了減少操作粒度,數據結構上的封裝導致了數據數據的減少,自然減少了問題求解的復雜度;對代碼的封裝使得代碼得以復用,減少了代碼的體積,同樣使問題簡化。

      接下來來看 基于對象操作的算法。這種算法必須將操作對象看成是同樣的東西。在沒有對象的層次上,算法操作的都是字節,是同類。但是到了對象的層次,就不一定相同了。這個時候,算法操作的是一個抽象概念的集合。

      在面向對象的程序設計中,我們便少不了容器。容器就用來存放一類有共同抽象概念的東西。這里說有共同概念的東西,而沒有說對象。是因為對于算法作用于的集合,里面放的并不是對象實體,而是一個對實體的引用。這個引用表達的是,算法可以對引用的那一頭的東西做些什么,而并不要求那一頭是什么。

     

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/

    TAG: 面向對象 軟件測試 思考


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>