面向對象程式設計

用手机看条目

出自 MBA智库百科(https://wiki.mbalib.com/)

面向對象程式設計(Object-oriented programming,OOP)

目錄

什麼是面對對象程式設計

  面向對象程式設計是種具有對象概念的程式編程範型,同時也是一種程式開發的方法。它可能包含數據、屬性、代碼與方法。對象則指的是類的實例。它將對象作為程式的基本單元,將程式和數據封裝其中,以提高軟體的重用性、靈活性和擴展性,對象里的程式可以訪問及經常修改對象相關連的數據。在面向對象程式編程里,電腦程式會被設計成彼此相關的對象。

  面向對象程式設計可以看作一種在程式中包含各種獨立而又互相調用的對象的思想,這與傳統的思想剛好相反:傳統的程式設計主張將程式看作一系列函數的集合,或者直接就是一系列對電腦下達的指令。面向對象程式設計中的每一個對象都應該能夠接受數據、處理數據並將數據傳達給其它對象,因此它們都可以被看作一個小型的“機器”,即對象。目前已經被證實的是,面向對象程式設計推廣了程式的靈活性和可維護性,並且在大型項目設計中廣為應用。

  此外,支持者聲稱面向對象程式設計要比以往的做法更加便於學習,因為它能夠讓人們更簡單地設計並維護程式,使得程式更加便於分析、設計、理解。反對者在某些領域對此予以否認。當我們提到面向對象的時候,它不僅指一種程式設計方法。它更多意義上是一種程式開發方式。在這一方面,我們必須瞭解更多關於面向對象系統分析和麵向對象設計(Object Oriented Design,簡稱OOD)方面的知識。許多流行的編程語言是面向對象的,它們的風格就是會透由對象來創出實例。

  重要的面向對象編程語言包含Common Lisp、PythonC++、Objective-C、Smalltalk、DelphiJava、Swift、C#、PerlRuby 與 PHP等。

面對對象程式設計的特征

  面向對象程式編程的定義是使用“對象”來做設計,但並非所有的編程語言都直接支持“面向對象程式編程”相關技術與結構。對於OOP的準確定義及其本意存在著不少爭論。通常,OOP被理解為一種將程式分解為封裝數據及相關操作的模塊而進行的編程方式。有別於其它編程方式,OOP中的與某數據類型相關的一系列操作都被有機地封裝到該數據類型當中,而非散放於其外,因而OOP中的數據類型不僅有著狀態,還有著相關的行為。

  OOP理論,及與之同名的OOP實踐相結合創造出了新的一個編程架構;OOP思想被廣泛認為是非常有用的,以致一套新的編程範型被創造了出來。(其它的編程範型例如函數式編程或過程式編程專註於程式運行的過程,而邏輯編程專註於引發程式代碼執行的斷言)。對面向模擬系統的語言(如:SIMULA 67)的研究及對高可靠性系統架構(如:高性能操作系統和CPU的架構)的研究最終導致了OOP的誕生。其中由Deborah J. Armstrong進行的長達40年之久的電腦著作調查中,顯示出了一系列面向對象程式設計的基本理論。面向對象程式特征被條列如下:

分享非面向對象程式前身語言

  面向對象程式設計通常共用高級編程語言的低級功能。可用於建構一個程式的基本工具包括:

  • 變數 能存儲一些內置類型的信息如整數與字元,也有些是數據結構像是字元串、串列與|散列表等包含內置或複合的變數如指針。
  • 程式:也稱為函數、方法或常式,是指輸入數據產生輸出結果,現代語言還包含結構化編程結構如程式迴圈與條件。

動態配置與消息傳遞機制

  定義上動態配置是指方法會隨著實例動態的改變。而消息傳遞機制(Message Passing)是指一個對象通過接受消息、處理消息、傳出消息或使用其他類的方法來實現一定功能。如:萊絲可以通過吠叫引起人的註意,從而導致一系列的事發生。

封裝性

  具備封裝性(Encapsulation)的面向對象程式設計隱藏了某一方法的具體運行步驟,取而代之的是通過消息傳遞機制發送消息給它。封裝是通過限制只有特定類的對象可以訪問這一特定類的成員,而它們通常利用介面實現消息的傳入傳出。舉個例子,介面能確保幼犬這一特征只能被賦予狗這一類。通常來說,成員會依它們的訪問許可權被分為3種:公有成員、私有成員以及保護成員。有些語言更進一步:Java可以限制同一包內不同類的訪問;C#和VB.NET保留了為類的成員聚集準備的關鍵字:internal(C#)和Friend(VB.NET);Eiffel語言則可以讓用戶指定哪個類可以訪問所有成員。

  具備封裝性(Encapsulation)的面向對象程式設計隱藏了某一方法的具體執行步驟,取而代之的是通過消息傳遞機制傳送消息給它。因此,舉例來說,“狗”這個類有“吠叫()”的方法,這一方法定義了狗具體該通過什麼方法吠叫。但是,萊絲的朋友並不知道它到底是如何吠叫的。

繼承

  繼承性(Inheritance)是指,在某種情況下,一個類會有“子類”。子類比原本的類(稱為父類)要更加具體化。例如,“狗”這個類可能會有它的子類“牧羊犬”和“吉娃娃犬”。在這種情況下,“萊絲”可能就是牧羊犬的一個實例。子類會繼承父類的屬性和行為,並且也可包含它們自己的。我們假設“狗”這個類有一個方法(行為)叫做“吠叫()”和一個屬性叫做“毛皮顏色”。它的子類(前例中的牧羊犬和吉娃娃犬)會繼承這些成員。這意味著程式員只需要將相同的代碼寫一次。

本條目對我有幫助4
MBA智库APP

扫一扫,下载MBA智库APP

分享到:
  如果您認為本條目還有待完善,需要補充新內容或修改錯誤內容,請編輯條目

本条目由以下用户参与贡献

苏青荇.

評論(共0條)

提示:評論內容為網友針對條目"面向對象程式設計"展開的討論,與本站觀點立場無關。

發表評論請文明上網,理性發言並遵守有關規定。

MBA智库
打开APP

以上内容根据网友推荐自动排序生成