1.3 認識程序設計
1.3.3 面向對象程序設計
1. 什麼是“面向對象程序設計”
“面向對象程序設計”(Object-Oriented Programming)的主要設計思想:將存在於日常生活中隨處可見的對象(object)概念應用在軟件開發模式中。OOP讓我們以一種更生活化、可讀性更高的設計思路來進行程序的開發和設計,並且開發出來的程序也更容易擴充、修改及維護。
2. 面嚮對象語言特性
- 封裝性(Encapsulation)
- 繼承性(Inheritance)
- 多態性(Polymorphism)
1)封裝
封裝:用“類”來實現“抽象數據類型”(ADT)。
類:一種具體描述對象狀態與行爲的數據類型。
對象:按照“類”這個模型或藍圖產生的實例。
舉例來說,
汽車類 -》 汽車實體對象
2)繼承
繼承:允許代碼重複使用,同時可以表達樹形結構中,父代與子代的遺傳現象。
舉例來說,
“汽車類”就是“交通工具類”的子類,“汽車類”可以繼承“交通工具類”。
3)多態
多態:讓具有繼承關係的不同類別對象可以調用相同名稱的成員函數。
1.4 算法性能
這一小節主要談兩個概念
- “時間複雜度”(Time Complexity)
- “空間複雜度”(Space Complexity)
1)空間複雜度
空間複雜度:估算一個算法在運行過程中臨時佔用內存空間的大小,是一種漸進表示法。
2)時間複雜度
時間複雜度:用某一個算法執行步驟技術來衡量運行時間的標準,也是一種漸進表示法。
由於涉及變量存儲類型與表達式的複雜度,因此沒有必要精確計算時間的長短。使用“估算”的辦法衡量時間更爲恰當,詳細定義如下:
- 在一個完全理想狀態下,定義T(n)來表示程序執行所要花費的時間,其中n代表數據輸入量。最大運行時間用Big-Oh表示。
- 分析算法的時間複雜度必須考慮它的成長比率,往往是一個函數。
1.4.1 Big-Oh
:某算法在計算機中所需運行時間不會超過某一常數倍數的。
這一部分的重點是:學會計算時間複雜度。
例1.4.1 計算的時間複雜度
答:因爲多項式的最高項次數是3,所以時間複雜度爲
1.4.2
也是一種時間複雜度的漸進表示法。如果說Big-Oh表示運行時間估算的最壞情況,則就是運行時間估算的最好情況。
1.4.3
是一種比Big-Oh與更精確的時間複雜度的漸進表示法。