freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

面向對象程序設計的基本概念-閱讀頁

2025-05-27 20:46本頁面
  

【正文】 計中的關鍵概念。有了上面的理解,我們看看下面最常見的 Java 語句: people a=new man(); 這代表了什么 ?程序員向編譯器聲明了一個 people 類型 (type)的對象變量a,而對象變量 a本身卻指向了一個 man 類 (class)的實體 (而在編譯器中理解是對象變量 a 指向了一個類型為 man 的實體 )。也就是說。但是反過來卻不一定成立。 多態(tài),替換原則,對象切割 多態(tài)作為 OO中的核心機制之一擁有著豐富的內涵。其主要有三種形式:函數(shù)多態(tài),對象變量多態(tài),泛型多態(tài)。泛型多態(tài)(genericity)主要是提供了一種創(chuàng)建通用工具的方法,可以在特定的場合將其特化。在理解對象變量多態(tài)之前,我們首先了解一下 OO核心機制之一的替換原則。而替換原則發(fā)生作用的情況就隱含的描敘了兩種不同類型所具有的關聯(lián) 類型繼承。可以說繼承與替換原則的引入影響了幾乎所有的 OOPL,包括類型系統(tǒng),值語義 /引用語義,對象內存空間分配等等。 首先考慮 ,people a;這樣的代碼在編譯器中將如何實現(xiàn) ?可以肯定是首先將把類型 people 綁定到對象 a 上,然后必須為對象 a分配空間。根據(jù)多態(tài)以及替換原則,我們當然可以讓對象 a保存一個 man類型的值 (這就是替換原則的表現(xiàn) )。我們知道繼承是一種擴展接口與實現(xiàn)的方式,那么我們就很難保證 man 類型不對 people 類型做擴展,而一旦做出擴展,我們如何能用存儲 people 對象的空間去存儲 man類型的對象值呢 ? people a; man b=new man(); a=b; 這樣的代碼將首先把 b對象進行切割,然后再存儲到 a對象空間去。那么,為了支持 OOP 的繼承,多態(tài),替換原則,但卻需要避免對象切割的發(fā)生,面對對象 a我們將采用何種分配空間模型呢 ?常用的有下面三種方式: 1,只為 a分配基類 people 的存儲 空間,不支持對象多態(tài)以及替換原則。 2,分配繼承樹中的最大類對象所需要空間 (在這里是 man 類的對象值空間 ),這樣的模型簡單,同時可以實現(xiàn)多態(tài)和替換原則而避免對象切割問題,但是十分浪費內存空間十分明顯。 (也就是說 a只是一個對象的引用,而不是真實的對象,真實對象的生成必須靠程序員顯式的聲明 )。相信說到這里,大家應該開始慢慢明白了。這里,我們終于可以揭開第一層迷霧了,很多人都知道在 C++中只有指針和引用才能支持對象的多態(tài)行為,但是為什么會如此 ?上面做出了最好的解釋。這也是 Java語言必須采用虛擬機的原因所在。這也就揭開 了第二層迷霧,當我們在對比 C++和 Java 語言的時候總是為虛擬機是否有其價值而爭論不休,但當你拋開所謂的好與不好的簡單討論,進入到其語言本身的內在對象存儲本質的時候,也許對于各種聲音才會有一個屬于自己的清醒認識。在各種編程語言中,賦值可以給出兩種不同的語義解釋:復制語義和指針語義。而在 Java中采用的是后者。 面向對象的計算模型和可計算性 編程就是用計算所需要的指令構成一種運算裝置,無論我們的程序設計思想以及程序設計語言如何發(fā)展和提高,最終我們所使用的底層計算數(shù)學模型并沒有改變。 Smalltalk 語言引入的對象計算模型從根本上改變了以前的傳統(tǒng)計算模型,以前的計算模型 突出的是順序計算過程中的機器狀態(tài),而現(xiàn)在的對象計算模型突出的對象之間的協(xié)作其計算結果由參加計算的所有的對象的狀態(tài)總體構成。這樣,面向對象的計算模型就演變成了許多小的計算機器的合作計算模型。計算模型清楚的界定了可計算性的范圍,也就界定了哪些問題是可求解,哪些問題是不可求解的。所以我們不能期望 OOP能幫助我們解決更多的問題,或者減少運算的復雜度。 結束 這篇文章做為這個系列的第一篇,對于 OOP中的許多核心概念和機制進行了有益的討論,作者衷心的希望通過這篇文章能夠讓大家對于 OOP有更深入的理解,同時明白 OOP 作為已經(jīng)發(fā)展將近三十年的程序設計思想,其自身豐富的理論內涵不是單單學習幾門 OOPL 就可以領悟。 Reference: [Damp。W 1985]On understanding types,data abstraction,and polymorphism by and on ACM Computing Surveys Dec 1985 [ 1991]What isObjectOriented programming?(1991 revised version)by Bjarne Stroustrup ATamp。
點擊復制文檔內容
畢業(yè)設計相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1