• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            天行健 君子當自強而不息

            【ZT】C++批判(5)


            繼承的本質

            繼承關系是一種耦合度很高的關系,它與組合及一般化(genericity)一樣,提供了OO中的一種基本方法,用以將不同的軟件組件組合起來。一個類的實例同時也是那個類的所有的祖先的實例。為了保證面向對象設計的有效性,我們應該保存下這種關系的一致性。在子類中的每一次重新定義都應該與在其祖先類中的最初定義進行一致性檢查。子類中應該保存下其祖先類的需求。如果存在著不能被保存的需求,就說明了系統(tǒng)的設計有錯誤,或者是在系統(tǒng)中此處使用繼承是不恰當?shù)摹S捎诶^承是面向對象設計的基礎,所以才會要求有一致性檢測。C++中對于非虛擬函數(shù)重載的實現(xiàn), 意味著編譯器將不會為其進行一致性檢測。C++并沒有提供面向對象設計的這方面的保證。

            繼承被分成"語法"繼承和"語義"繼承兩部分。 Saake等人將其描述如下:"語法繼承表示為結構或方法定義的繼承,并且因此與代碼的重復使用(以及重寫被繼承方法的代碼)聯(lián)系起來。語義繼承表示為對對象語義(即對象自己)的繼承,。這種繼承形式可以從語義的數(shù)據(jù)模型中被得知,在此它被用于代表在一個應用程序的若干個角色中出現(xiàn)的一個對象。"[SJE 91]。Saake等人集中研究了繼承的語義形式。通過是行為還是語義的繼承方式的判斷,表示了對象在系統(tǒng)中所扮的角色。
             
            然而, Wegner相信代碼繼承更具有實際的價值。他將語法與語義繼承之間的區(qū)別表示為代碼和行為上的區(qū)別[Weg 91](p43)。他認為這樣的劃分不會引起一方與另一方的兼容,并且還經常與另一方不一致。Wegner同樣也提出這樣的問題:"應該怎樣抑制對繼承屬性的修改?"代碼繼承為模塊化(modularisation)提供一個基礎。行為繼承則依賴于"is-a"關系。這兩種繼承方式在合適處都十分有用。它們都要求進行一致性的檢測,這與實際上的有意義的繼承密不可分。

            看起來在語義保持關系中那些限制最多的形式中,繼承似乎是其中最強的形式;子類應該保存祖先類中的所有假設。

            Meyer [Meyer 96a and 96b]也對繼承技術進行了分類。在他的分類法中,他指出了繼承的12種用法。這些分析也給我們怎么使用繼承提供了一個很好的判斷標準,如:什么時候應該使用繼承,什么時候不應該它。

            軟件組件就象七巧板一樣。當我們組裝七巧板時,每一塊板的形狀必須要合適,但更重要地是,最終拼出的圖像必須要有意義,能夠被說得通。而將軟件組件組合起來就更困難了。七巧板只是需要將原本是完整的一幅圖像重新組合起來。而對軟件組件的組合會得到什么樣的結果,是我們不可能預見到的。更糟的是,七巧板的每一塊通常是由不同的程序員產生的,這樣當整個的系統(tǒng)被組合起來時,對于它們的吻合程度的要求就更高了。

            C++中的繼承像是一塊七巧板,所有的板塊都能夠組合在一起,但是編譯器卻沒有辦法檢測最終的結果是否有意義。換句話說,C++僅為類和繼承提供了語法,而非語義。可重用的C++函數(shù)庫的緩慢出現(xiàn),暗示了C++可能會盡可能地不支持可重用性。相反的是,Java,Eiffel和Object Pascal都與函數(shù)庫包裝在一起出現(xiàn)。Object Pascal與MacApp應用軟件框架聯(lián)系非常緊密。Java也從與Java API的耦合中解脫出來,取而代之的是一個包容廣泛的函數(shù)庫。Eiffel也同樣是與一個極其全面的函數(shù)庫集成在一起,該函數(shù)庫甚至比Java的還要大。事實上函數(shù)庫的概念已經成為一個優(yōu)先于Eiffel語言本身的工程,用以對所有在計算機科學中通用的結構進行重新分類,得到一個常用的分類法。 [Meyer 94].

            posted on 2007-09-27 13:27 lovedday 閱讀(506) 評論(0)  編輯 收藏 引用 所屬分類: ▲ C++ Program

            公告

            導航

            統(tǒng)計

            常用鏈接

            隨筆分類(178)

            3D游戲編程相關鏈接

            搜索

            最新評論

            久久无码AV一区二区三区| 77777亚洲午夜久久多喷| 2021少妇久久久久久久久久| 精品久久久久久久无码| 久久国产免费观看精品| 久久精品国产福利国产琪琪| 亚洲欧洲日产国码无码久久99| 国产激情久久久久久熟女老人| 久久99精品国产一区二区三区| 国产成人久久精品二区三区| 国产99久久久国产精品小说| 国产精品99久久免费观看| 亚洲国产成人久久一区久久| 久久婷婷综合中文字幕| 日韩精品久久无码人妻中文字幕| 久久国产免费观看精品| 色婷婷综合久久久久中文一区二区| 亚洲一区中文字幕久久| 久久综合国产乱子伦精品免费| 久久精品国产WWW456C0M| 久久精品aⅴ无码中文字字幕重口 久久精品a亚洲国产v高清不卡 | 亚洲精品无码久久久久去q| 久久99精品久久久久久秒播| 久久久久亚洲AV无码网站| 久久精品中文无码资源站| 狠狠综合久久综合中文88| 99久久免费国产精品热| 国产精品无码久久综合 | 久久久无码精品亚洲日韩蜜臀浪潮| 97精品国产97久久久久久免费| 伊人色综合久久天天人手人婷| 少妇人妻综合久久中文字幕| 久久亚洲国产午夜精品理论片| 久久综合综合久久综合| 久久人人爽人人爽人人片AV麻烦| 青青青青久久精品国产h久久精品五福影院1421 | 婷婷久久久亚洲欧洲日产国码AV| 人妻无码久久精品| 热综合一本伊人久久精品| 麻豆久久久9性大片| 久久久高清免费视频|