OO的一些概念

2021-05-27 09:48:59 字數 1609 閱讀 9135

物件與模型

有兩種型別的模型:現實模型與抽象模型。現實模型與物理世界具有很強的對應性,抽象模型則是在現實模型的基礎上,根據相似度、組合關係等對現實模型地進一步處理後獲得的模型。

現實模型的獲取可以通過er模型或者物件模型建模得到。

在現實模型的基礎上,通過分析物件間相似的成分,可以構造出更抽象的抽象模型。抽象模型中的物件可以通過繼承、組合等方式生成為現實模型中的物件。如果說,現實模型是對物理世界的抽象,則抽象模型則是對現實模型的抽象。現實模型可以直接反應物理世界,抽象模型可以直接反應現實模型,而抽象模型卻無法直接反應物理世界,只能通過顯示模型這個關卡間接反應物理世界。

設計模式就是試圖告訴我們要如何做出乙個好的抽象模型。

物件的職能與規模

整個物理世界是乙個大的系統,從人的觀念上來看,系統是有一系列的物件組成。物件之間各司其職,通過組合構成乙個更大的子系統,通過通訊進行子系統間地相互協作,由此,構成了系統的執行。物件是有不同的職能的,有的物件負責對整個子系統的訊息進行中轉,有些物件負責具體底層工作,不一而足。

設計模式就是試圖闡明如何更好地設定物件的只能及設定物件的規模。

型構/介面/型別/型別繼承

現實模型中有一些物件具有相同的屬性、方法,對訊息的響應方式是一樣的。但是,客戶端對這些物件的呼叫時機是不同的。具備相同的屬性、方法、介面的物件稱為具備相同的型構,也成為具備相同的型別。顯然,型別是對物件的一種抽象,這種抽象機制使得,允許一種型別對應於多個物件。通過型別定義的物件稱之為型別的乙個例項,建立過程稱之為例項化。

型別是可以進一步抽象的,即可以通過增減方式,改變型別,常見的增減方式就是組合以及繼承。通過對乙個型別進行增操作,獲得的乙個新的型別的過程,稱之為型別繼承。

在抽象模型部分,通過型別間的運算,可以構成一系列新的型別的類,而這些新類又可以例項化很多的物件,其中,有很多可能無法與物理世界相對應的,但是,必須滿足現實模型要求的物件。

介面與實現

物件的介面與實現相分離。這樣,同樣的介面將對應著不同的實現。介面要求保持相對穩定,而實現則可以靈活變動。介面與實現的關係,引申出oo當中的很多問題,包括動態繫結與多型,抽象類等等。

設計模式要求我們,對介面程式設計而不是對實現程式設計。

類繼承與介面繼承

類繼承是通過型別運算實現的,實行了派生類與原生類的資料共享及方法共享,屬於一種共享機制。

介面繼承也是通過型別運算實現的,不過,就功能而言,介面繼承主要提供了對於同樣乙個介面,擁有對不同物件的選擇及替代機制。

繼承與組合

繼承與組合都是一種**復用機制。但是,組合比繼承要靈活。**是組合是組合的一種形式,可以實現與繼承同樣的功能。

設計模式建議盡可能多使用組合,而不是繼承。

ct/rt

ct是編譯時的縮寫,rt是執行時的縮寫。ct表示了物件的靜態結構,而rt則表示了物件的動態結構。很多在ct很相似的物件,在rt中卻呈現出很大的不同,聚合與相識就是其中乙個例子。在ct,聚合與相識均為乙個物件,但在rt,聚合表現出更強的耦合性,表現為乙個物件對另乙個物件的生死操作,而相識的耦合性則很弱,表現為可能僅僅只是一次訊息通知操作。

X Window System的一些概念

linux unix系統下的顯示模式都是採用x的架構,這裡說明一下,其實我們常說的x其實不是現實裝置,而是現實協議,xserver和xclient通過x協議進行互動,由xserver對目標裝置進行顯示,然後xserver把中間的資訊和使用者反饋的資訊傳送給xclient。可以這樣形容 xserver...

鎖的一些概念

作業需要乙個目標之前分配目標,這樣在用目標是不用再等,可保證完成所需功能,這叫目標的分配。可用alcobj命令預先分配目標,用dlcobj解除分配 目標是根據要他們做什麼來分配的 讀或者修改 和他們是否可以共享。檔案和成員總是以 shrrd來分配。而資料用規定所狀態來分配鎖的級別。鎖狀態標誌使用的目...

Wolfram Language的一些概念和原理

老師讓調研一下wolfram language,我就順便練練自己的翻譯水平好了.譯自我翻譯水平很爛。基於知識的程式設計 建立在盡可能多的知識之上 與其他程式語言不同,wolfram language的哲學是將與演算法和整個世界有關的知識盡可能多地嵌入語言當中。目前為止集合了最大範圍的演算法網路。包含...