【正文】
Reference: [Damp。這樣,面向?qū)ο蟮挠嬎隳P途脱葑兂闪嗽S多小的計算機器的合作計算模型。在各種編程語言中,賦值可以給出兩種不同的語義解釋:復(fù)制語義和指針語義。相信說到這里,大家應(yīng)該開始慢慢明白了。我們知道繼承是一種擴(kuò)展接口與實現(xiàn)的方式,那么我們就很難保證 man 類型不對 people 類型做擴(kuò)展,而一旦做出擴(kuò)展,我們?nèi)绾文苡么鎯?people 對象的空間去存儲 man類型的對象值呢 ? people a; man b=new man(); a=b; 這樣的代碼將首先把 b對象進(jìn)行切割,然后再存儲到 a對象空間去。而替換原則發(fā)生作用的情況就隱含的描敘了兩種不同類型所具有的關(guān)聯(lián) 類型繼承。 多態(tài),替換原則,對象切割 多態(tài)作為 OO中的核心機制之一擁有著豐富的內(nèi)涵。類型主要是用來指導(dǎo)編譯器的類型檢查的謂詞,類是創(chuàng)建現(xiàn)實對象的模板,接口是 OO設(shè)計中的關(guān)鍵概念。也就是說,在現(xiàn)實世界中的概念必須有一種手段映射到 OO范型中去,而 OO范型中的概念也應(yīng)該在編譯器實現(xiàn)中有相同的概念對應(yīng)。 類 (class),類型 (type),接口 (interface) 這三個概念是在 OOP 中出現(xiàn)頻率最多,也最容易混淆的。廣義的類型一般被定義為一種約束,也就是一種邏輯公式。而這樣的觀點也會帶來一些矛盾,比較典型的就是在繼承體系下,子集 (子類 )對象和父集 (父類 )對象之間的行為相融性可能很難達(dá)到,這也就是 OOP中常被引 用的 子類型 (subtype)不等于子類 (subclass)[Budd 2021]。在對象模型中,產(chǎn)生新對象,舊對象銷毀,發(fā)送消息,響應(yīng)消息就構(gòu)成 OOP 計算模型的根本。在這里 OOP 最終和 POP(ProcedureOriented Programming)相融合。對 象之間相互合作完成程序的計算任務(wù)。故把自己的一些 OO學(xué)習(xí)心得寫下來做為一個系列文章 (一共三篇,第一篇描敘 OOP 的一些基本但容易被誤解的理論,第二篇主要說明各種 OOPL 演化 和發(fā)展以及對于 OOP理論的支持,第三篇主要是說模式和組件在 OOP中的地位以及展望 OOP 的未來 ),由于文章描敘的只是自己對于 OOP/OOPL 的理解,錯誤以及淺薄之處在所難免,只是希望對大家能起到拋磚引玉的作用。如果把 Unix 系統(tǒng)看成是國外在系統(tǒng)軟件方面的文化根基,那么 Smalltalk 語言無疑在 OOPL 領(lǐng)域和 Unix 持有相同地位。而 Booch 也給出了他心目中關(guān)于 OO領(lǐng)域內(nèi)的狹義抽象定義: 抽象表示一個對象與其他所有對象相區(qū)別的基本特征,因此提供了同觀察者角度有關(guān)的清晰定義的概念界限。在這個抽象級別上的典型代表就是對象之間的消息機制 (Message Passing)。由此,導(dǎo)致了一個自然的話題,那就是 OOP 到底是什么 ?[Damp。而原型 委托也是 OOP 中的對象抽象,代碼共享機制中的一種。是的,我們經(jīng)常接觸的 C++,Java 都是使用基于類的對象模型,但除此之外還有很多我們所沒有接觸的 OOPL 采用了完全不一樣的對象模型,他們是在用另外一種觀點詮釋 OOP 的內(nèi)涵。同時在此基礎(chǔ)上二階λ演算已經(jīng)被用于繼承和模板所支持的模型。s interface may be characterized by one type,and other parts by other objects of the same type need only share parts of their can contain other interface as say that atype is asubtype of another if its interface contain the interface of its we speak of asubtype inheriting the interface of its supertype[Gamma 1995] 在其中,一共出現(xiàn)了四個概念:類 (class),類型 (type),接口 (interface)以及契約 (contract)。可以這樣說,類是現(xiàn)實世界中存在的客觀概念,是唯物的。編譯器所能理解的全部都是類型,而程序員的工作是把現(xiàn)實中的類概念轉(zhuǎn)化為設(shè)計中的接口概念,而編譯器對應(yīng)于上兩種概念都有直接的支持,那就是一個類聲明或者接口聲明在編譯器的理解來看就是一個類型聲明。在這里,我們重點要考量的是對象變量多態(tài)。同時,我們創(chuàng)建 people 的子類 man,由于 man IS Apeople。 3,只分配用于保存一個