從物件導向到面向切面

2021-08-25 20:17:18 字數 991 閱讀 1363

1. c語言抽象出了軟體所在的領域(domain): 由變數v1,v2,...和函式f1,f2,...組成的空間

2. 物件導向(oop)指出,在這一領域上可以建立分組(group)結構:一組相關的變數和函式構成乙個集合,我們稱之為物件(object)。同時在分組結構上可以定義乙個運算(推理)關係:  d > b, 派生類d從基類b繼承(inheritance),相應的派生物件符合基類物件所滿足的所有約束。推理是有價值的,因為根據 d > b, b > a 可以自動推導出 d > a,所有針對a的斷言在理論上對d都成立(這也就是我們常說的「派生物件 is a 基類物件」)。編譯器也能有點智慧型了。

乙個有趣的地方是,d > b意味著在d和b之間存在著某種差異,但是我們卻無法把它顯式的表達出來!也就是說在**層面上我們無法明確表達 d - b是什麼。為了把更多的資訊不斷的匯入到原有系統中,物件導向內建提供的方法是建立不斷擴充套件的型別樹,型別樹每增長一層,就可以多容納一些新的資訊。這是一種金字塔式的結構,只不過是一種倒立的金字塔,最終基點會被不斷增長的結構壓力所壓垮。

3. 元件技術(component)本質上是在提倡面向介面(inte***ce),然後通過介面之間的組合(composition)而不是物件之間的繼承(inheritance)來構造系統。基於組合的觀念相當於是定義了運算關係:d = b + c。終於,我們勉強可以在概念層面上做加法了。

元件允許我們隨意的組合,按照由簡單到複雜的方向構造系統,但是元件構成的成品之間仍然無法自由的建立關係。這意味著元件組裝得到的成品只是某種孤立的,偶然的產物。

f = a + b + c  ? g = a + d + c。

4. 在數學上,配備了加法運算的集合構成半群,如果要成為群(group),則必須定義相應的逆運算:減法。 群結構使得大粒度的結構變換成為可能。

f = a + b + c = a + d - d + b + c = (a + d + c) - d + b = g - d + b

在不破壞原有**的情況下,對原有系統功能進行增刪,這就是面向切面(aop)技術的全部價值。

從方法到物件導向

乙個星期結束了,從方法到物件導向,寫乙個總結。方法,方法的過載,遞迴等等,遞迴是乙個比較吃力不討好的程式設計技巧,迴圈出來以後就很少用了。之後便是陣列,一組相同型別資料的有序集合。它的特點是每個陣列元素可通過乙個下標來訪問,長度確定,且不可更改,而且元素必須是相同型別。宣告方式有靜態和動態兩種,有乙...

從物件導向到設計模式

設計物件導向軟體比較困難,但是設計可復用的物件導向軟體就更加困難了.隨著物件導向技術的發展,最早的物件導向思想已經落伍了.我們知道物件導向主要內容就是 封裝 繼承 多型 這個沒有錯.主要是對這三個主要內容的看法,現在和過去已經不同了,下面就我看的一些書從中得到感悟共享給大家.有異意的朋友,歡迎pk....

vue面向切面 感受面向切面程式設計

什麼是面向切面 初聽面向切面程式設計時,一頭霧水,什麼是面向切面,只聽說過物件導向 oop 面向過程 po 函式式程式設計 fp 面向切面 面向的難道是某乙個面?面向搜尋引擎後才了解到,面向切面是一種程式設計正規化 aspect oriented programming 簡寫 aop,特點是與原有邏...