物件導向程式設計的基本概念
物件導向程式設計(Object Oriented Programming,OOP,物件導向程式設計) 的主要想法是把構成問題的各個事務分解成各個對象,建立物件的目的不是為了完成一個步驟,而是為了描敘一個事物在整個解決問題的步驟中的行為。
面向過程就是分析出解決問題所需的步驟,然後用函數逐步實現,再依序呼叫就可以了。
物件導向與過程導向是兩種不同的程式設計思想,沒有哪一種方式絕對完美,需要根據程具體項目來設定。例如,開發一個小的軟體或網頁,工程量小,短時間內就可完成,完全可以採用流程導向的開發方式,使用物件導向,反而會增加程式碼量,減緩運作效率。
以過程為導向的程式語言(如C語言)無法建立類別和對象,不能用物件導向的方式來開發程式;物件導向的程式語言(如Java、C++、PHP)保留了過程導向的關鍵字和語句,可以採用流程導向的方式來開發程式。
物件導向程式設計是在過程導向程式設計以後提出的。
大家不必追求概念上的理解,很多有經驗的程式設計師甚至也不能完全解釋物件導向和流程導向的區別,要重在實踐,深入揣摩程式語言的思想。
類別和物件的基本概念
為了方便說明,我們將從現實生活中的例子入手。
我們知道,工業上所使用的鑄件(家裡煮飯用的鍋子、汽車的地盤、引擎的機身等)都是由模子鑄造出來的,一個模子可以鑄造出許多相同的鑄件,不使用的模子可以鑄造出不同的鑄件。 這裡的模子就是我們所說的“類”,鑄件就是我們所說的“物件”。
類,是創建對象的模板,一個類可以創建多個相同的對象;對象,是類的實例,是按照類的規則創建的。
屬性與方法
由模子鑄造出來的鑄件(物件),有許多參數(長度、寬度、高度等),能完成不同的操作(煮飯、承重、保護內部零件等)。這裡的參數就是物件的“屬性”,完成的操作就是物件的“方法”。
屬性是一個變量,用來表示一個物件的特徵,如顏色、大小、重量等;方法是一個函數,用來表示物件的操作,如奔跑、呼吸、跳躍等。
物件的屬性和方法統稱為物件的成員。
類別的繼承
一個類別可以繼承另一個類別的特徵,如同兒子繼承父親的DNA、性格和財產等,與現實生活中的繼承類似。