物件導向程式設計——object oriented programming,簡稱oop,是一種程式設計思想。
oop把物件作為程式的基本單元,乙個物件包含了資料和運算元據的函式。
面向過程的程式設計把電腦程式視為一系列的命令集合,即一組函式的順序執行。
為了簡化程式設計,面向過程把函式切分為子函式,即把大塊函式通過切割成小塊函式來降低系統的複雜度。
而物件導向的程式設計把程式視為一組物件的集合,而每個物件都可以接受其它物件發過來的訊息,
並處理這些訊息,電腦程式的執行就是一些列訊息在各個物件之間傳遞。
在python中,所有資料型別都可以視為物件,當然也可以自定義物件。自定義物件的資料型別就是物件導向中的類(class)概念。
我們以乙個例子來說明面向過程和物件導向在程式流程上的不同之處。
假設我們要處理學生的成績表,為了表示乙個學生的成績,面向過程的程式可以用乙個dict表示:
std1 =std2 =
而處理學生成績可以通過函式實現,比如列印學生的成績:
defprint_score(std):
print('
%s:%s
'%(std['
name
'],std['
score
']))
如果採用物件導向的程式設計思想,我們首先思考的不是程式的執行流程,
而是student這種資料型別應該被視為乙個物件,這個物件擁有name和score這兩個屬性(property)。
如果要列印乙個學生的成績,首先必須建立出這個學生對應的物件,然後,給物件發乙個print_score訊息,讓物件自己把自己的資料列印出來。
classstudent(object):
def__init__
(self,name,score):
self.name =name
self.score =score
defprint_score(self):
print('
%:%s
'%(self.name,self.score))
給物件發訊息實際上就是呼叫物件對應的關聯函式,我們稱之為物件的方法(method)。物件導向的程式寫出來就像這樣:
bart = student('bart simpson
',59)
lisa = student('
lisa simpson
',87)
bart.print_score()
lisa.print_score()
物件導向的設計思想是從自然界中來的,因為在自然界中,類(class)和例項(instance)的概念是很自然的。
class是一種抽象概念。比如我們定義的class——student,是指學生這個概念。
而例項(instance)則是乙個個具體的student,比如,bart simpson和lisa simpson是兩個具體的student。
所以,物件導向的設計思想是抽象出class,根據class建立instance。
物件導向的抽象程度又比函式要高,因為乙個class既包含資料,又包含運算元據的方法。
物件導向程式設計概論
物件導向程式設計基於三個基本概念 資料抽象 繼承和動態繫結。繼承和動態繫結對程式的編寫有兩方面的影響 一是我們可以更容易地定義與其他類相似但不完全相同的新類 二是在使用這些彼此相似的類編寫程式時,我們可以在一定程度上忽略掉它們的區別。繼承 通過繼承聯絡在一起的類構成一種層次關係。通常在層次關係的根部...
物件導向程式設計(一)
1 什麼是物件導向 面向將系統看成通過互動作用來萬恆特定功能的物件的集合。每個物件用自己的方法來管理資料。也就是說只有物件內部的 能夠操作物件內部的資料 2 物件導向的優點 通過,繼承 封裝 多型降低程式的耦合度,並結合設計模式讓程式更容易修改和擴充套件,並且易於復用。3 物件導向的特點 封裝 維護...
物件導向程式設計(一)
var book function id,bookname,price var book function function book newid,newname,newprice this.getname function this.getprice function this.setname f...