如何理解POP,OOP,AOP之間的關係

2021-09-25 22:06:54 字數 1717 閱讀 2336

1)pop–面向過程程式設計(process-oriented programming):

面向過程程式設計是以功能為中心來進行思考和組織的一種程式設計方法,它強調的是系統的資料被加工和處理的過程,在程式設計中主要以函式或者過程為程式的基本組織方式,系統功能是由一組相關的過程和函式序列構成。

面向過程強調的是功能(加工),資料僅僅作為輸入和輸出存在。這種過程化的思想是一種很樸素和普遍的思想和方法,人類很多活動都是這種組織模式,比如工廠生產,企業服務等。面向過程以資料的加工處理過程為主線,忽略了過程的所屬、邊界和環境,混淆了服務功能和自我功能(比如人可以砍樹,這就是一種服務功能,有輸入也有輸出;它可以提供給外部,而行走,則是自我功能,沒有輸入也沒有輸出),外部環境和內部組織,以及環境資料和原料性資料之間的區別。從思維上來講,面向過程更強調細節,忽視了整體性和邊界性,但這與現實世界有很大的出入,因為現實世界中,這種過程都不是孤立存在的,而是從屬於某個物件,因此,面向過程雖然反映了現實世界的而乙個方面(功能),但無法更加形象的模擬或者表示現實世界。

2)oop–物件導向程式設計(object oriented programming):

世界是由乙個個物件組成的,因此物件導向的思維方式更加接近現實世界,物件導向程式設計的組織方式也更加貼近現實世界。物件導向以物件為中心,將物件的內部組織與外部環境區分開來,將表徵物件的內部屬性資料與外部隔離開來,其行為與屬性構成乙個整體,而系統功能則表現為一系列物件之間的相互作用的序列,能更加形象的模擬或表達現實世界。在程式設計組織中,物件的屬性與方法不再像面向過程那樣分開存放,而是視為乙個整體(程式的最終實現其實還是分離的,但這僅僅是物理實現上的,不影響將物件的這兩個部分視為乙個整體),因此具有更好的封裝性和安全性(表徵內部的屬性資料需要通過物件的提供的方法來訪問)。物件導向強調的是整體性,因此物件導向與面向過程在很多方面是可以互補的。同時由於物件繼承和多型技術的引入,使得物件導向具有更強、更簡潔的對現實世界的表達能力。從而增強了程式設計的組織性,重用性和靈活性。

物件導向依然保留著面向過程的特性,面向過程中的功能變成了物件的方法,加工處理功能變成了物件的服務性方法,而這部分方法依然需要外界的輸入,同時也對外界進行輸出,只是輸入和輸出也變成了物件。在物件導向程式設計中,大多時候,我們並不需要關心乙個物件物件的方方面面,有些物件在整個系統中都是充當「原料」和「成品」的角色,其本身的行為並不在我們關心的範圍,而另外有些物件處於一種加工廠地位,我們也僅關心這些物件的服務性功能,不需要太多關注物件內部屬性和自我行為,針對這些物件關注點的不同會對物件進行分類,比如前面提到的兩類物件,就是從在系統中所處的角色不同而分類,前者叫實體物件,後者稱為操作物件。

從方**來講,我們可以將面向過程與物件導向看做是事物的兩個方面–區域性與整體(注意:區域性與整體是相對的),在實際應用中,兩者方法都同樣重要。

面向過程和物件導向是程式設計方法中最基本的兩種方法,處於程式設計方法體系的底層。

3)aop–面向方面

面向方面應該屬於物件導向的範疇,從物件組織角度來講,我們一般採用的分類方法都是使用類似生物學分類的方法,以「繼承」關係為主線,我們稱之為縱向。但事實上,物件之間除了這種縱向分類之外,我們同樣可以從橫向的角度去觀察這些物件,這就是面向方面(切面)程式設計的基本出發點。

原來要解決這類問題,我們一般是採用介面來完成,但這有兩個問題,一是物件設計的時候一般都是縱向思維,如果這個時候需要就需要考慮這些不同類的物件的這些共性,不僅會增加設計的難度和複雜性,還會造成類的介面過多而難以維護,二是需要對現有的物件動態增加這種行為或者責任的時候非常困難。現在很多程式的都是以中間語言存在,執行的時候是解釋執行或者即時編譯執行,這也為增加這種切面行為或者責任提供了比較好的切入口。

如何理解POP,OOP,AOP之間的關係

面向過程程式設計 prcedure oriented programming,簡稱pop 是一種以過程為中心的程式設計思想,它考慮的是實際的實現,是一種從上而下,步步求精的過程。對於面向過程而言,講究的是事件執行的順序,只需要按照程式的流程,乙個個實現就行了。比如 把大象塞入冰箱需要三步 開啟冰箱門...

如何理解POP,OOP,AOP之間的關係

以 怎麼做 為中心,完成任務的具體細節。即將任務分成小步驟,用小函式來實現小步驟,然後用主函式呼叫這些小函式。比如 走路這個任務 就可能有人走路,貓走路,狗走路等等 按照面向過程的方法 每個函式裡面都含有乙個走路的方法。以 誰來做 為中心,完成任務的物件。針對上面的例子 可以看出它們都有乙個共同特性...

如何理解POP OOP AOP之間的關係

oop object oriented programming aop aspect oriented programming oop與pop之間的關係 oop與aop之間的關係 pop即面向過程,是一種程式設計思想,顧名思義這種程式設計思想以過程為中心,強調的是功能。我們將 要解決的問題進行分析,...