面向對象的程序設計
面向對象編程(Object Oriented Programming,OOP,面向對象程序設計) 的主要思想是把構成問題的各個事務分解成各個對象,建立對象的目的不是為了完成一個步驟,而是為了描敘一個事物在整個解決問題的步驟中的行為。
面向過程就是分析出解決問題所需要的步驟,然后用函數逐步實現,再依次調用就可以了。
面向對象和面向過程是兩種不同的編程思想,沒有哪一種絕對完美,要根據具體需求擬定開發方案。例如,開發一個小型軟件或應用程序,工程量小,短時間內即可完成,完全可以采用面向過程的開發方式,使用面向對象,反而會增加代碼量,降低開發效率。
面向過程的編程語言(如C語言)不能創建類和對象,不能用面向對象的思想來開發程序;面向對象的編程語言(如C++、PHP等)保留了面向過程的關鍵字和語句,仍然可以采用面向過程的思想來開發程序。
面向對象是面向過程的補充和完善。
注意,不要“死磕”概念上的理解,很多有經驗的程序員甚至都不能完全解釋清楚面向對象和面向過程的區別,要重在實踐,不斷揣摩編程語言的思想。
類和對象的基本概念
為了方便說明,我們將從現實生活中的實例入手。
我們知道,工業上使用的鑄件(電飯鍋內膽、汽車地盤、發動機機身等)都是由模子鑄造出來的,一個模子可以鑄造出很多相同的鑄件,不用的模子可以鑄造出不同的鑄件。這里的模子就是我們所說的“類”,鑄件就是我們所說的“對象”。
類,是創建對象的模板,一個類可以創建多個相同的對象;對象,是類的實例,是按照類的規則創建的。
屬性和方法
由模子鑄造出來的鑄件(對象),有很多參數(長度、寬度、高度等),能完成不同的操作(煮飯、承重、保護內部零件等)。這里的參數就是對象的“屬性”,完成的操作就是對象的“方法”。
屬性是一個變量,用來表示一個對象的特征,如顏色、大小、重量等;方法是一個函數,用來表示對象的操作,如奔跑、呼吸、跳躍等。
對象的屬性和方法統稱為對象的成員。
類的繼承
一個類(子類)可以繼承另一個類(父類)的特征,如同兒子繼承父親的DNA、性格和財產。
子類可以繼承父類的全部特征,也可以繼承一部分,由程序靈活控制。
C++面向對象程序設計舉例
這里我們將通過幾個簡單的例子來演示如何站在面向對象的角度設計程序,以及使用類的好處。
【例】最簡單的例子。
#include <iostream>using namespace std;class Time //定義Time類{public : //數據成員為公用的 int hour; int minute; int sec;};int main( ){ Time t1;//定義t1為Time類對象 cin>>t1.hour;//輸入設定的時間 cin>>t1.minute; cin>>t1.sec; //輸出時間: cout<<t1.hour<<":"<<t1.minute<<":"<<t1.sec<<endl; return 0;}運行情況如下: