天天看點

程式設計原理

程式設計原理

一、問題求解

1、問題求解(Problem Solving):指描述問題,以及開發計算機程式來解決問題的整個過程。

這個過程經曆多個階段,包括了解待解決問題、設計概念化解決方案,以及用計算機程式實作解決方案。

2、解決方案(solution)通常由“算法”和“資料存儲方式”兩部分組成。

“算法”是對于在有限時間内問題求解方法的分布描述。算法常執行的操作是在資料集合上進行的。

3、在建構解決方案時,必須組織資料集合,進而按算法要求的方式簡單地操作資料。

二、軟體的生命周期

軟體生命周期(software's life cycles):該過程以初始規劃起,經曆程式編寫和調試,最後修改和增強。

描述-->設計-->風險分析-->驗證-->編碼-->測試-->完善-->生産-->維護

以“文檔記錄”為核心。

三、優秀解決方案的定義

要評估一個好的解決方案,必須考慮開發解決方案的各階段,以及在編寫出實作解決方案的原始程式後的各階段。

這些階段都需要考慮成本。解決方案的總成本必須考慮開發、完善、編碼、調試和測試人員的時間價值,以及維護、修改和擴充軟體的成本。

如果一個解決方案在生命周期所有階段引發的總成本最低,則這個方案就是一個“好”的解決方案。

時代的發展摒棄了“效率最高的解決方案一定最優”的觀念。

解決方案的成本應看作是多元成本。

四、子產品化設計

1、抽象和資訊隐藏

“抽象”分離子產品的功能和實作;子產品化和抽象相輔相成。

子產品化将解決方案分解為若幹各子產品;抽象在用程式設計語言實作子產品前明确指定各個子產品。

資訊隐藏限制了處理方法和資料所需要的方式。

2、面向對象的設計

1)封裝:對象組合資料和操作;

2)繼承:累可從其它類繼承屬性;

3)多态:對象可在執行時确定适當操作。

3、自上而下的設計(top-down design,TDD):在逐級下降的明細級别完成任務。

4、一般設計原則

1)同時使用OOD和TDD,生成子產品化的解決方案;

2)為主要設計資料的問題使用OOD;

3)使用TDD,為對象操作設計算法;

4)使用TDD,為強調算法的問題設計解決方案;

5)在設計ADT和算法時,側重“做什麼”,而不是“如何做”;

6)考慮将前面編寫的軟體組合包含到設計方案中。

五、關鍵程式設計問題

有六點:

1)子產品化;

2)可修改;

3)易用;

4)防故障程式設計;

5)風格;

6)調試。

六、總結

1)循環不變式是一個算法屬性,在循環每次疊代前後為true。

2)在評估解決方案品質時,必須考慮各組因素:解決方案的正确性、效率、進入開發的時間、易用性及修改和擴充成本。

3)面向對象與自上而下設計技術相輔相成,互相促進,生成了子產品化解決方案。

4)要謹慎設計,盡量提高最終解決方案的可修改性。

5)方法要盡可能獨立,并執行一個意義明确的任務。

6)方法一定要包含初始注釋,聲明方法的作用、初始條件和結束條件。

7)程式應盡可能預防故障的發生。

8)已有診斷工具的有效使用是調試的一個關鍵。

9)為便于在調試時分析數組和其它更複雜資料結構的内容,應編寫轉儲方法來顯示資料結構的内容。

繼續閱讀