面向過程編程
面向過程編程是一種以過程為中心的編程思想,分析出解決問題的步驟,然後用函數把這些步驟一步一步實現。面向過程編程,資料和對資料的操作是分離的。 物件導向編程 物件導向編程是將事物對象化,通過對象通訊來解決問題。物件導向編程,資料和對資料的操作是綁定在一起的。
物件導向的三大基本特徵:
封裝:把客觀事物封裝成抽象的類,隱藏屬性和方法的實現細節,僅對外公開介面。
繼承:子類可以使用父類的所有功能,並且對這些功能進行擴充。繼承的過程,就是從一般到特殊的過程。
多態:介面的多種不同的實現方式即為多態。同一操作作用於不同的對象,產生不同的執行結果。在運行時,通過指向基類的指標或引用來調用衍生類別中的虛函數來實現多態。
封裝可以隱藏實現細節,使得代碼模組化;繼承可以擴充已存在的類。它們的目的都是為了---代碼重用。
而多態則是為了實現另一個目的---介面重用。
物件導向的代碼更加支援重用,能降低軟體開發和維護的成本,提高軟體的品質。
掌握物件導向的困難之處在于思路的轉換。我們通常習慣於考慮解決問題的方法,而不是考慮將問題抽象成對象再去解決它。
從兩個簡單的例子來理解兩者的區別
第一個簡單的例子:編寫一個駕駛汽車的方法
面向過程的程式設計:
編寫一個方法,void drivecar();
物件導向的程式設計:
將一輛汽車看成一個對象,將所有汽車對象的共性抽取出來,設計一個類Car,類中有一個方法void drive(),用Car這個類執行個體化一個具體的對象car,調用:car.drive()。
第二個簡單的例子:求一個長方形的周長和面積。
面向過程的程式設計方式:
1、確定長方形周長和面積的演算法。
2、編寫兩個方法(函數)分別計算長方形的周長和面積。
3、求周長的方法(函數)和求面積的方法(函數)需要兩個參數,分別是長方形的長和寬。
物件導向的程式設計方式:
1、一個長方形可以看成一個長方形對象。
2、一個長方形對象有兩個狀態(長和寬)和兩個行為(求周長和求面積)。
3、將所有長方形的共性抽取出來,設計一個長方形類。
4、通過長方形對象的行為,就可以求出某個具體的長方形對象的周長和面積。