<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ### 7.2.5 類與模塊化 我們在第 4 章討論過模塊化編程的思想。對于復雜程序,通常需要用分解的方法將程序 劃分成若干模塊,使每個模塊僅針對有限的數據執行有限的操作。模塊化能夠使復雜程序的 設計更加可控。 對復雜程序一般有兩種分解方法:功能分解和數據分解。功能分解是面向過程編程的基 礎,依賴于子程序(如函數)概念,以過程為中心來建立功能模塊;數據分解則是面向對象 編程的基礎,依賴于類的概念,以數據為中心來建立數據模塊。 功能模塊不太適合復雜數據的處理。以處理“學生”數據的程序為例,如果按功能分解, 需要建立課程注冊模塊、修改學生信息模塊、成績登錄模塊等等。每一個模塊(函數)的編 寫,都需要知道“學生”數據的各種細節。 而數據模塊則可以避免功能模塊的不足。通過對“學生”的數據和操作的抽象,創建學 生類 S,對學生數據能夠執行的操作構成 S 的對外界面,而操作的實現細節則隱藏在 S 內部, 從而使 S 的使用者無需了解“學生”數據的細節就能執行所需操作。 兩種模塊化方法具有類似的優點,如代碼重用、易維護、支持團隊開發等,但他們導致 的程序具有完全不同的執行方式。面向對象程序是由很多對象組成的,對象之間通過交互(發 送、接收消息)、協作完成計算任務,而傳統程序則是由一系列預定的過程組成的,通過按順序執行這些過程而完成計算任務。 模塊化設計體現了信息隱藏的思想,即程序模塊應當對模塊用戶盡可能隱藏內部細節,只保留必要的訪問界面。對功能模塊(函數),以 math 庫中的函數 sqrt()為例,我們作為調用 者,并不知道該函數的內部實現細節,如數值的表示細節和求平方根的算法細節,而只需要 知道該函數能夠對給定的數值求平方根即可。對數據模塊(類)同樣如此,以程序 7.6 定義 的 Projectile 類為例,該類的使用者無需了解炮彈究竟用什么數據來表示以及如何計算其飛 行,只需要了解該類的使用界面(update、getX、getY)就能編寫炮彈模擬程序。 既然類是一種具有獨立性的程序模塊,就可以單獨存儲在模塊文件中,無需與使用類的 代碼(主程序)存儲在一個程序文件中。這樣做的好處是類模塊可以重用,任何想使用這個 類的程序都可以導入類模塊。例如,我們可以將 Projectile 類定義單獨保存在模塊 proj.py 中, 任何希望使用 Projectile 類的程序只需導入它,導入后即可創建對象、執行對象方法。就像下 面這樣: ``` from proj import Projectile def main(): angle, vel, h0, time = getInputs() cball = Projectile(angle, vel, h0) while cball.getY() >= 0: cball.update(time) print "射程: %0.1f 米." % (cball.getX()) ``` 我們當然可以讓每個類單獨構成一個模塊,但這樣一來,當類的數目很多時會導致模塊 數目過多,反而增加程序的復雜性。實際上我們通常是將若干個相關的類存儲在一個模塊文 件中,例如 5.4.2 節介紹的 graphics.py 模塊中就包含了所有圖形類。不過,使用類的程序一 般都放在與類模塊不同的模塊中。 很多面向對象編程語言都以“類庫”的形式提供具有各種實用功能的類模塊給程序員使 用,就像過去面向過程編程語言提供“函數庫”一樣。OOP 往往能非常簡單地解決復雜問題, 因為專業的程序員已經開發了大量可重用的代碼。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看