程式應用的多樣化催生了各種類型的程式語言。在本文中,我們將探索什麼是物件導向程式設計以及有哪些類型的物件導向程式語言。歡迎拓展您的知識!

面向對象編程
一般來說,編程需要了解負責向計算機傳輸命令的語言,以及轉換為程序的算法,但什麼是編程?
程式設計是一系列操作,最終目的是編寫能夠實現預期目標的程式碼。原始碼則是程式或軟體的內部表示,而程式則是一組控制電腦運作的指令。
基本上,一個程序經曆三個階段:用合適的語言編輯程序,將源代碼轉換為機器指令,以及目標代碼和函數庫之間的鏈接,最後產生什麼它被稱為可執行代碼。
程序必須用用戶可以理解的編程語言編寫。 為此,程序員必須採用許多現有的編程範式中的一種,這些範式決定了願景,因此,決定了在構建願景時要遵循的方法的選擇。
編程範式
編程和技術的進步催生了各種編程方法或範式。 反過來,這些又導致了不同風格的編程和不同形式的問題解決。 以下是現有的範式:
命令式範式
它指出程序是從上到下的嚴格指令序列,只有在其中某處包含子程序時才會中斷。
結構化範式
它強制執行按過程和函數塊分組的代碼結構。 代碼以循環的形式複制,由邏輯原因主導。
聲明式範式
它沒有規定在執行解決問題所需的行動時應遵循的順序。 在其中,區分了兩種類型:功能範式,其中問題和解決方案被描述為功能,以及基於邏輯謂詞的邏輯範式。
事件編程範式
它基於無限迭代來檢測問題並確定如何解決它。
並行、分佈式和並發範式
程序的實現需要幾個計算單元。 這些例程在其他計算單元上獨立運行。
面向對象範式

這種類型的編程基於三個基本原則:數據封裝、對象抽象和根據類層次結構進行類型檢查。
值得注意的是,程式語言通常並非只遵循一種範式,而是多種範式融合的產物。不過,我們將專注於詳細闡述物件導向程式設計的定義,並概述現有的各種物件導向程式語言。
氣質
它是當今最普遍的範式,因為它允許以合理的成本更好地管理複雜性。 通過它,提出了分部構建的可能性,即基於組件劃分工作,從而產生健壯、可移植和可重用的應用程序,並具有長期利益。
與其他類型的編程不同,面向對象的編程在實體中尋找來自問題域的部分,而不是問題解決方案本身。 主要要求是每個組件都以預期的方式運行,這樣我們的開發就不會受到它實現方式的影響,並且我們可以先驗地知道每個組件提供的條件以及連接方式。這。
從另一個角度來看,我們可以提到面向對象編程與知識理論有關,該理論指出,人根據預定的方案存儲信息,這是他作為人的經驗的產物。 通過這種方式,這種類型的編程可以通過個人的思維模式,利用存儲在信息單元中的先前知識,以啟發式或理論的方式表示知識。
起源
https://youtu.be/aESIbDclIzw?t=5
面向對象編程是 1960 年代發展起來的一種技術、風格或方法,是由於無法更改或修改複雜程序而產生的危機的結果。 由於缺乏願意對程序進行維護的專業人員,情況變得越來越糟。
這場危機的暫時解決方案掌握在結構化編程的手中,它包括將程序分解成單獨的程序,這些程序將分別執行特定的任務。 這帶來了其他缺點,主要是因為在參與項目的許多開發人員之間實現協調有多困難,因為所涉及的任務數量越多,程序員的數量也就越多。
毫無疑問,這種編程的主要缺點是需要在概念上將數據與代碼分開。 由於程序的規模和復雜性而直接惡化的情況。
於是,為了降低程序的複雜性,面向對象的編程誕生了。 它的主要優點是可以使用更簡單的對象構建複雜的程序。 這些對象構成了在這種方法下面向軟件的實體。 從現有應用程序繼承數據和代碼的能力提高了開發人員的工作效率。 同樣,它可以輕鬆地在其他應用程序中擴展和重用類,而無需大量修改原始代碼。
特點
面向對象編程具有多種品質,以下是主要品質:
- 面向對象編程的基礎是類,而不是算法。 這些構成了邏輯構建塊。
- 每個對像都是一個類的實例。
- 程序被視為通過一組相互反應的對象來發送和接收消息的手段。
- 每個對像都必須尋求最佳方式來響應收到的每條消息。
- 每個對象可能以不同的方式響應消息。
- 由於組件可以互換,因此可以輕鬆更改軟件。
- 部分和內部更改不會影響系統其餘部分的行為。
- 如果遵循面向對象編程的基本原則,則構建系統的成本將低於部件相互依賴的情況。
- 從其他類派生的類有可能繼承了其前輩的知識和技能。 通過繼承,類之間相互關聯,工作方式被利用而無需重寫代碼。
- 一個類的方法可以做不同的事情,即使它們保持相同的名稱。 也就是說,通過多態,程序員可以實現相同方法的多種形式,這取決於實現的類。 這意味著可以通過相同的名稱或訪問介質訪問多個方法。
區別:結構化編程與結構化編程面向對象編程
正如我們已經提到的,面向對象編程代表了結構化編程的演變,這並不意味著它比它更好,因為根據將要開發的系統類型,每一種都有其實用性。 兩者之間存在的基本差異如下:
結構化編程解決算法問題,從引入一些數據開始,產生一個輸出。 面向對象編程是基於對象建模的,在Web應用程序的開發中非常有用。
第一個側重於數據結構,而第二個基於對象,具有自己的狀態和行為。
結構化編程中的信息流經結構和函數調用,在面向對象編程中,它是它們之間通過發送和接收消息進行交互的結果。
基本原則
作為面向對象編程概念的結果,該範式的三個基本原則出現了。 這些是:
數據封裝
正如我們已經提到的,對象應該知道如何響應它們收到的消息,表現出特定的行為。 然而,我們不希望發送消息的人知道他們是如何做的。 這個目標的實現就是所謂的數據封裝。 換句話說,您想要的是程序的每個部分只知道它感興趣的內容,從而避免與其他對象相關的附帶影響。
簡而言之,通過數據的封裝,訪問對象的組件是不可能的,也就是說,這些組件在單個定義良好的編程單元中受到保護,因為它們每個都有設計規範,使它們彼此獨立。
我們可能希望客戶端對像不知道實現方式的主要原因是,一般來說,同一個操作可以有多種選擇。 此外,將來,我們可以決定從一種替代方案更改為另一種替代方案,而客戶不知道或看到服務的提供受到影響。
對象抽象
面向對象編程的一個基本特徵是它試圖分部分解決問題。 這樣,它做的第一件事就是找到對象,然後確定它們應該如何交互,最後實現它們的行為。 因此,我們認為我們找到的對象將幫助我們解決問題。
抽象涉及構成心理圖式的兩種知識、數據或變量,以及將圖式與其他預定圖式相關聯的方法、功能或程序。 也就是說,由於數據抽象,可以定義數據的域和結構,以及可以建立訪問它們的方法。 最後,抽象成為程序員定義的一種新型數據,由應用於前者的屬性和方法組成。
由於同一問題存在多種思維模式,每個程序員可以根據自己的感知以不同的方式組織類。 他的意思是對象抽像是程序設計中創建用戶定義數據的能力。
根據類層次結構類型檢查
這是您選擇語言進行類型檢查的時候。 有些語言在編譯期間決定這樣做,而其他語言則在執行期間決定這樣做。 其他語言甚至不編譯,這不會讓您有機會進行任何類型的檢查,直到運行時。
當檢查在運行時完成時,稱為動態檢查。 相反,當在編譯時完成時,它被稱為靜態檢查。
由於在靜態檢查中錯誤從一開始就出現,沒有到達執行的那一刻,因此通常說這種類型的檢查更安全。 但是,動態測試允許部分實現,而無需重複重寫代碼。
它是如何工作的呢?
在這種範式下解決問題的第一步是找到問題域的對像或實體。 然後有必要找到這些實體如何交互以解決問題的方式,建立對象發送的消息,它們以什麼順序和在什麼條件下發送。 最後,您必須實現對象的行為,參考它們對消息給出的響應。
總之,當程序在面向對象編程範式下執行時,會發生三件事:根據需要創建對象,消息從一個對象流向另一個對象與程序的信息處理並行,以及當不再需要對象時,它們被刪除以釋放系統中的內存。
關鍵概念
為了更好地理解物件導向編程,我們需要提及以下基本概念:
- 對象:它是指可以作為消息接收者的實體,同時它可以響應消息並向其他對象發送消息。 它是具有行為的實體。
- 身份:它是區分一個對象與另一個對象的方面。
- 消息:這是請求服務的實體與提供服務的另一個實體之間產生的交互。
- 客戶端對象:它是發送消息的人。
- Receiver 對象:它是接收消息的對象。
- 委託:指從一個對象向其他對象發送消息。 當一個對象需要其他人的協作才能響應消息時。
- 行為:它們是對接收對象接收到的消息的響應。
- 狀態:指每個對象的當前狀態。
- 責任:它是對象的狀態和行為之間的交互作用。
- 方法:是指對像對接收到的消息給出的響應的實現。
- 多態性:這是一些對像以幾種不同的方式響應相同消息的能力。
- 類:它們是一組行為相同的對象。 它們可以由程序員定義。 它們是允許抽像對象並確定彼此關聯方式的心理方案。
- 屬性:它指的是為存儲其部分狀態而創建的對象的內部變量。
- 契約:指的是對每個組件提供什麼以及與它連接的方式的了解。
基於面向對象編程的故障排除
一旦確定了問題並提出了可能的解決方案,就需要將其轉錄成編程語言,以便通過使用程序由計算機執行。 在面向對象編程的方法論下,定義了以下階段:
- 程序的定義:它以清晰、易於理解和定義明確的方式處理問題的示意圖描述。 它涉及要處理的數據的來源和方面的識別,以及結果的描述和它們將呈現的方式。
- 面向對象的分析與設計:指對問題域中的對象進行識別和描述。 之後,建立要遵循的屬性、關係和方法,這是為了定義將在特定編程語言中實現的類。
- 編程:基本上是指程序的轉錄,包括用編程語言正確編寫代碼,使用能夠保證產品質量的開發風格,從而正確解決問題。 此階段涉及算法的構建、流程圖的詳細說明和最終編程,通過桌面測試、程序的編碼、編譯和執行。
- 文檔:它涉及對解決問題所需的步驟順序的描述。 它涉及合併註釋行,以澄清或解釋可能令人困惑的代碼行的含義,尤其是那些引用標識符和聲明的數據結構、控制結構和方法及其參數的代碼行。 這個階段對於最終產品的成功至關重要,因為如果文檔失敗,程序很難閱讀和調試,更重要的是,它們的修改和維護幾乎變得不可能。
另一方面,我們可以說編程語言的功能多年來一直在增加,這主要是由於出現了新的和多樣化的應用領域。 雖然一開始這些語言確實是用來處理大量數據和進行某些數值計算的。
現在編程語言幾乎用於社會的任何領域,包括數據庫管理、圖像生成甚至人工智能等許多方面。
主要是新軟件工程技術的誕生導致了我們將在下面看到的編程語言的興起。
面向對象的編程語言
它們是旨在將數據和小程序集成到類中的語言。 這些可以繼承其他轉換代碼的屬性並產生新的特性,這也導致了一種新的編程方法。
分類
正如我們稍後將看到的,有多種編程語言響應面向對象範式。 根據其實現方式,它們分為:
- 當他們實現行為時:它涵蓋了基於類和原型或示例的語言。
- 當它們實現對象創建時:它們基於動態內存區域中的執行時間或堆棧的編譯時間。
- 根據類型檢查: 指編譯時驗證或運行時驗證。
在主要的面向對象語言中,我們有:
短暫聊天
它只能在面向對象編程的範式下進行編程。 它是一種基於類的語言,它在運行時在動態內存區域中設計對象。 它只在運行時進行類型檢查,也就是說,它是一種動態檢查語言。
Java的
它是當今最常用的語言之一,它完全面向對象,語法類似於 C 和 C++。 它是平台獨立的。
和 Smalltalk 一樣,它是一種基於類的語言,它在運行時在動態內存區域中創建對象,但在運行時不做類型檢查,而是在編譯時,不同的是它創建了一個中間的不可執行代碼,來自預編譯。 這使它成為一種靜態檢查語言。
物件導向的Java程式設計運行在專門用於這種語言的虛擬機器上,該虛擬機器像電腦一樣運行,因此無需修改即可執行程式碼。這種機器被稱為解釋器。
JavaScript的
與 Smalltalk 和 Java 不同,它是一種依賴原型或示例的語言。 它被解釋並且沒有類型,也就是說,它在運行時或編譯時都不執行類型檢查。 在運行時在動態內存區域中創建對象。 由於它缺乏編譯,它成為一種動態檢查的語言。
由於其可移植性和集成性以及標準和簡單的編程技術,它是一種強大的語言。 換句話說,JavaScript 是嵌入在網頁中的代碼,其目的是提高該網頁的動態性。
C + +中
它吸收了傳統 C 語言的優點並合併了對對象的支持,從而構成了對傳統 C 語言的補充。 儘管它包含了三種不同的編程範式,例如:結構化編程、泛型編程和麵向對象編程,但正是他引領了從結構化範式到面向對象範式的轉變。
它是一種通用語言,在 Windows 和 GNU Linux 中的應用程序程序員中使用非常頻繁。 在運行時在動態內存中創建對象。 它主要關注性能、可移植性和抽象。 它的主要缺點是編譯時會生成一個可執行文件,其代碼僅對編譯所在的平台有效。 另一方面,作為一種可執行語言,它不是平台獨立的。
C#
它是一種在運行時運行並包含在 .NET 平台中的編程語言,它允許您共享和識別您的庫。 它是完全面向對象的,允許創建各種應用程序。
它構成了 C 和 C++ 語言的演變,消除了後者的複雜性,因為它更易於使用,並且由於接受了預編譯而減少了其操作過程中的誤差幅度。
蟒蛇
它是一種多平台語言,主要面向對象,但包含其他範式,例如命令式編程、函數式編程和麵向方面的編程。
其簡潔的語法,非常接近自然語言,有利於閱讀其代碼。 強烈建議從編程世界開始。
它是通過一個中間程序,即通過一個解釋器來執行的。 因為它是一種半解釋型語言,所以靈活且可移植。 它是動態類型的,這意味著數據類型是在運行時確定的。
帕斯卡爾
目前,它是編程教學中使用的卓越語言。 它具有簡單的語法,具有高度結構化的語言,便於程序的閱讀和解釋。 它的編譯可以在任何有 Pascal 編譯器的機器上完成。
儘管是一種結構化語言,但它允許通過其 Turbo Pascal 版本進行面向對象編程。 它有一個集成環境,可以從中編寫程序和測試它們。 歸根結底,Pascal 是一種通用語言。
如果您感興趣的話題與編程有關,我邀請您閱讀編程中的算法是什麼?





