程式設計正規化:程式設計時程式設計師用特定的語法+資料結構+演算法組成的**在計算機上執行任務的過程。實現乙個任務有不同的方式,對這些不同的程式設計方式的特點進行歸納總結得出的程式設計方式類別,即為程式設計正規化。不同的程式設計正規化本質上代表對各種型別的任務採取的不同的解決問題的思路,兩種最重要的程式設計正規化是面向過程程式設計和物件導向程式設計。
面向過程程式設計:程式從上到下一步步執行,一步步從上到下,從頭到尾的解決問題。基本的設計思路就是程式一開始要著手解決乙個大的問題,然後把乙個大的問題分解成多個很小的問題的子過程,而這些自古城在執行的過程再繼續分解,直到小問題足夠簡單,可以在乙個曉得步驟範圍內解決。
物件導向程式設計(object oriented programmin),簡稱oop。是一種程式設計思想。oop版物件作為程式的基本單元,乙個物件包含了資料和運算元據的函式。物件導向的程式設計把電腦程式視為一組物件的集合,而每個物件都可以接受其他物件發過來的訊息,並處理這些訊息,電腦程式的執行是一系列訊息在各個物件之間的傳遞。oop程式設計是利用「類」和「物件」來建立各種模型來實現真實世界的描述,使用物件導向程式設計的原因一方面是因為他可以使程式的維護和擴充套件變得更加簡單,並且大大提高程式開發的效率,另外,基於物件導向的程式可以使他人更加容易理解**的邏輯,從而使土堆開發變得更加從容。
在python中,所有資料型別都可以視為物件,也可以自定義物件。自定義物件資料型別就是面性物件中的類的概念。
舉例說明物件導向和面向過程在程式流程上的不同之處:
處理學生的成績表,為了表示乙個學生的成績,面向過程的程式可以用乙個dict表示:
std1 =
std2 =
物件導向:首相我們考慮的不是程式的執行流程,而是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):乙個類是對一類有共同屬性的物件的抽象,藍圖,原型。類中定義了這些物件的都具備的屬性和共同的方法。
物件(object):乙個物件就是乙個類的例項化後例項,乙個類必須經過例項化後才可以在程式中呼叫,乙個類可以例項化多個物件,每個物件也可以有不同的屬性,例如:人類指的是所有的人,每乙個人就是具體的物件,人與人之間有共性也有不同。
物件導向的三大屬性:封裝,繼承,多型
封裝(encapsulation):在類中對資料的賦值,內部呼叫對外部使用者是透明的,這是類變成乙個容器或者膠囊,裡面包含這類的資料和方法。
繼承(inheritance):乙個類可以派生出子類,在父類中定義的屬性,方法自動被子類繼承。
多型(polymorhism):多型是物件導向的重要特性,簡單點說:「乙個介面,多種實現」,指乙個基類中派生出了不同的子類,且每個子類在繼承了同樣的方法名的同時又對父類的方法做了不同的實現,這就是同一種事物表現出的多種形態。
程式設計其實就是乙個將具體世界進行抽象化的過程,多型就是抽象化的一種體現,把一系列具體事物的共同點抽象出來, 再通過這個抽象的事物, 與不同的具體事物進行對話。
對不同類的物件發出相同的訊息將會有不同的行為。比如,你的老闆讓所有員工在九點鐘開始工作, 他只要在九點鐘的時候說:「開始工作」即可,而不需要對銷售人員說:「開始銷售工作」,對技術人員說:「開始技術工作」, 因為「員工」是乙個抽象的事物, 只要是員工就可以開始工作,他知道這一點就行了。至於每個員工,當然會各司其職,做各自的工作。
多型允許將子類的物件當作父類的物件使用,某父型別的引用指向其子型別的物件,呼叫的方法是該子型別的方法。這裡引用和呼叫方法的**編譯前就已經決定了,而引用所指向的物件可以在執行期間動態繫結。
python 物件導向程式設計
新式類 class mynewobjecttype bases define mynewobjecttype class class suite經典類 沒有指定乙個父類,或者子類化的基本類沒有父類,就建立了乙個經典類 class mynewobjecttype define mynewobjectt...
Python物件導向程式設計
class mynewobjecttype bases define mynewobjecttype class class suite例項化 myfirstobject mynewobjecttype class mydatawithmethod object defprintfoo self p...
python 物件導向程式設計
宣告 class colleague object pass 建立物件 lisi colleague class colleague object def init self,name,age,self 永遠是第乙個引數,也是必須的 self 表示例項本身,呼叫時不需要傳入 var 表示 var是該...