1. 程式人生 > >面向物件程式

面向物件程式

面向物件程式設計

面向物件程式設計(Object Oriented Programming) 簡稱OOP,是一種程式思想.OOP把物件作為程式的基本單元,一個物件包含了資料和操作資料的函式.

 

面向過程的程式設計

    把計算機程式視為一系列的命令集合,即一組函式的順序執行. 為了簡化程式設計,面向過程把函式繼續切分為子函式,即把大塊函式用過切割成小塊函式來降低系統的複雜度.

面向物件的程式設計

    把計算機程式視為一組物件的集合,而每個物件都可以接收其他物件發過來的訊息,並處理這些訊息,計算機程式的執行就行一系列訊息在各個物件之間傳遞.

 

在Python中,所以資料型別都可以視為物件(一切皆物件), 也可以自定義物件.

自定義的物件資料型別就是面向物件中類Class的概念.

 

說明面向過程和麵向物件再程式流程上有什麼不同之處

# 假設要處理學生的成績表,為了表示一個學生的成績

# 面向過程的程式可以用一個dict表示
stu1 = {'name': 'kp', 'score': 99}
stu2 = {'name': 'koo', 'score': 90}


# 而處理學生成績可以通過函式實現,比如列印學生的成績
def print_score(std):
    print('%s: %s' % (std['name'], std['score']))


# 如果採用面向物件的程式設計思想,我們首選思考的不是程式的執行流程,而是Student這種資料型別應該被視為一個物件,
# 這個物件擁有name個score這兩個屬性.如果要列印一個學生的成績,首先必須創建出這個學生對應的物件, # 然後給物件發一個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)) # 面向物件的程式: bart = Student('
Bart Simpson', 59) lisa = Student('Lisa Simpson', 87) bart.print_score() lisa.print_score()

 

面向物件的設計思想是從自然界中來的, 因為在自然界中, 類Class和例項Instance的概念是很自然的.

Class是一種抽象概念,而Instance則是一個個具體的失誤

所以, 面向物件的設計思想 是抽象出Class , 再根據Clas建立Instance

 

小結:

面向物件的三大特點:

  資料封裝

  繼承

  多型