<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>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ## 7.4 面向對象設計* 理解了面 向 對象的基 本 概念之后 , 就可以應 用 這些概念 來 進行面向 對 象 設 計(object-oriented design,簡稱 OOD)。 傳統的程序設計方法是結構化的自頂向下設計,其思想是將軟件系統分解為若干個功能, 每個功能都是對數據的一個操作過程。功能又可以劃分為若干個子功能,如此反復分解下去, 直至每個功能所對應的操作過程顯而易見為止。在分解功能的同時,還要考慮各功能之間的 接口。這種方法是以過程(函數)為中心的,每個函數都是一個黑盒子,函數調用者只需了 解函數的功能,無需知道實現功能的細節。 面向對象設計是以數據為中心來展開的。對于某種客觀實體的數據,考慮可能施加在數 據上的各種操作,然后將數據和操作封裝成一個黑盒子——對象。對象通過界面向外界提供 數據操作服務,服務的使用者只需了解服務接口,不必關心服務的實現細節。即使改動了對 象內部的實現細節,只要服務接口不變,所有使用該服務的程序代碼就不需要改變。同樣地, 對象作為服務提供者,也不需要考慮它的服務將被使用者如何使用,只需確保其服務能正確 處理數據即可。 因此,OOD 的中心任務就是設計各種對象,將對象的數據和行為用類定義出來。OOD 將一個復雜問題分解成一組相互協作的類,以類為設計單位可以大大減小設計的復雜性。 下面是 OOD 的一些指導準則。 描述問題 面向對象技術專家 G. Booch 提出了一種基于詞性分析的設計方法,該方法要求設計人員 從目標系統的描述出發,通過問題描述中的名詞和動詞,來發現候選對象及對象方法。因此, OOD 的第一步是要建立待解決問題的準確、無二義性的描述。問題描述應該是自然、客觀的, 不要加入人工的、主觀的因素,這是因為面向對象思想的宗旨就是按客觀世界的本來面目來 建模并開發應用系統。 找出候選對象 我們的目標是找出有助于解決問題的對象。從問題描述入手,找出問題描述中的名詞, 然后逐個考察這些名詞,看看是否合適作為對象。對象一般都包含一組相關數據項,如學生(包含學號、姓名、年齡等數據項)、課程(包含課程名、學分、教材等數據項)。而能用單 一數據表示的,或者只有單一行為的實體,一般不適合作為對象,如人數、姓名等。 注意,由于人類可以同時考慮和理解的問題數目受到大腦記憶和處理能力的制約,因此 認定的對象數目不宜過多。合適的對象通常是問題中自然出現的而非人工生硬構造的實體, 而且對象應該向外界提供足夠復雜的服務。 確定對象的數據屬性 對于認定的對象,接下來就該確定對象的數據。能確定為對象數據的信息一般都具有普遍性,即所有同類對象都擁有的數據,例如學生的學號和姓名。另外,對象數據必須對解決 問題有用,例如,學生的學號、姓名都是信息管理應用中必需的信息,而學生的發型可能就 與應用無關。注意,對象的數據可能是學號、姓名這樣的基本數據類型值,也有可能是復雜 類型的值,甚至可能是另一種對象。例如,學生選修的課程也是屬于學生對象的數據,課程 本身也是對象。 確定對象的行為屬性 認定了對象及其數據之后,接著考慮對象需要什么操作。我們從問題描述中找出動詞,它們通常描述了對象的行為。例如,“學生選修課程”中的“選修”就是學生對象的行為。對 象的方法通常使用動詞來命名。 一類常見的方法是對實例變量的讀取和設置方法。假設對象有實例變量 value,則通常應 提供 getValue 和 setValue 方法。這是因為對象數據是隱藏的,外界只能通過對象的方法來操 作對象數據。 對象的方法就是對象向外界提供的界面。界面不完善(如缺少某些方法)會使對象的使 用者無從完成工作,但也不是說向外提供的方法越多越好。對象的界面設計應當遵循恰好夠 用的原則,即在能滿足用戶需要的條件下,界面越簡潔越好。 實現對象的方法 有些方法用寥寥數行代碼就能實現,有些方法則可能需要設計復雜的算法來實現。對于復雜方法,可以利用自頂向下逐步求精方法來設計。 在方法實現過程中,可能發現一個對象與其他對象之間的新的交互,這會提示我們為類增加新方法,或者增加新的類。 迭代設計 對于復雜程序設計,沒有人能夠一次性地順利走過設計全過程。在設計過程中,經常需 要在設計、測試、增加新類或為現有類增加新方法等步驟之間循環往復。 應當多嘗試替代方案,即使一個設計方案看上去不太靈,也可以沿著該方案的方向試著 前行,看看會導致什么結果。好的設計一定是通過大量試錯而得到的,正是因為錯誤的設計 才使我們明白應該設計什么樣的系統。 最后要指出,上述基于名詞動詞分析的 OOD 方法只是一個簡單的策略,真正進行類的 設計時情況往往很復雜。究竟是否應當設計某個類并沒有絕對的設計準則,經常依賴于設計 者的經驗。和任何別的設計一樣,程序設計既是藝術也是經驗,可以通過不斷的實踐來掌握設計方法。 還要指出,對于小程序,OOD 一般起不了什么作用,說不定反而使編程變得麻煩。但當 編寫的程序越來越大,類和對象就能很好地組織程序,減少代碼量。
                  <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>

                              哎呀哎呀视频在线观看