物件導向程式設計(object oriented programming--opp),是一種程式設計思想。
oop把物件作為程式的基本單元,乙個物件包含了資料和運算元據的函式。
面向過程的程式設計:把電腦程式視為一系列命令集合(一組函式順序執行)。為簡化程式設計,
面向過程把函式繼續切分為子函式(大塊函式通過切割成小函式來降低系統複雜度)。
物件導向的程式設計:把電腦程式視為一組物件的集合,每個物件可接收其他物件發來的訊息,
並處理這些訊息,電腦程式的執行就是一系列訊息在各個物件間傳遞。
python中,所有資料型別都可視為物件,也可自定義物件(其資料型別就是物件導向中的類(class)的概念。
面向過程和物件導向在程式流程上的不同,以處理學生成績表為例,為表示乙個學生成績:
1)面向過程的程式:可用乙個dict表示:
std1 =
std2 =
處理學生成績可通過函式實現,如列印學生成績:
def print_score(std):
print('%s: %s' % (std['name'], std['score']))
2) 物件導向程式設計思想:首先考慮不是執行流程
是student這種資料型別應視為乙個物件(擁有name和score兩個屬性(property))
若想列印乙個學生的成績,先建立此學生對應的物件;再,給物件發print_score訊息,讓物件自己把自己的資料列印出來。
class student(object):
def __init__(self, name, score):
self.name = name
self.score = score
def print_score(self):
print('%s: %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。
物件導向的抽象程度比函式高(既包含資料,又包含操作函式的方法。)
物件導向(OOP)和面向過程 POP
我對物件導向和面向過程的理解 面向過程就是分析出解決問題所需要的步驟,然後用函式把這些步驟一步一步實現,使用的時候乙個乙個依次呼叫就可以了。在早期計算機配置低 記憶體小為了節省記憶體空間,大都採用面向過程程式設計 以時間換空間 物件導向的理解 物件導向是一種程式設計正規化,滿足物件導向程式設計的語言...
面向過程程式設計和物件導向程式設計
面向過程程式設計和物件導向程式設計 面向過程程式設計是一種以 過程為中心 的程式設計思想 分析出解決問題的步驟,然後用函式把這些步驟一步一步實現 面向過程程式設計,資料和對資料的操作是分離的。物件導向程式設計 物件導向程式設計是 將事物物件化,通過物件通訊來解決問題 物件導向程式設計,資料和對資料的...
面向過程程式設計和物件導向程式設計
面向過程程式設計和物件導向程式設計 一 面向過程程式設計 面向過程程式設計將程式分成了 資料 和 處理函式 兩部分,程式以 處理函式 為核心,如果要執行什麼操作,就將 資料 傳給相應的 處理函式 返回我們需要的結果 面向過程的思路很好掌握,上手容易,但它存在三方面的問題 1 資料和處理函式沒有直接的...