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

正文內(nèi)容

第四章面向?qū)ο蟪绦蛟O(shè)計語言-免費(fèi)閱讀

2025-10-02 08:15 上一頁面

下一頁面
  

【正文】 它按相結(jié)合的 Rc的具體類型出票 … end Process_Reservation; 這個程序在編譯時 Make是沒有也無法束定到某 make函數(shù) 體上,只有在 運(yùn)行中(動態(tài))束定,束定時按 Rc對應(yīng)的實(shí)參的標(biāo)簽 tag值派送,編譯時只要 做出派送表 ?擴(kuò)充程序包機(jī)制實(shí)現(xiàn)繼承的類體系 Ada 95增設(shè)了子輩單元( child unit)和私有子輩單元。 package Object is type Object is tagged 此類型的數(shù)據(jù)即對象的屬性 record 無 tagged即一般的 ADT, 有它是為了類繼承 X_Coord: Float: =0; Y_Coord: Float: =0 初值為缺省時用 end record; function Distance ( O: Object) return Float; Object對象的行為 function Area( O: Object) return Float; end Object with Object, use Object; package Shapes is 這個包封裝了三個子類(型) type Point is new Object with null record; 只繼承不擴(kuò)充的子類 type Circle is new Object with 繼承并擴(kuò)充此屬性 record Radius: Float; end record; function Area( C: Circle) return Float; 覆蓋 Object中的 Area type Triangle is new Object with –繼承并 record A, B, C: Float; 擴(kuò)充三個屬性 end record; function Area ( T: Triangle) return Float; 覆蓋 end Shape; 這些類(型)包外可見(可輸出),在主子程序中聲明實(shí)例,如同類型聲明變量,以初值表達(dá)式作值構(gòu)造子: 子類的實(shí)例 也是父類的實(shí)例 O: Object: P: Point; 聲明實(shí)例對象 P:( O with null record); C: Cirele: =( , , ); C: =( O with ); T; Triangle: =( , , ); T: =( O with , , ); 如果動態(tài)生成實(shí)例,可將此聲明放在類的方法(過程 /函數(shù))中,調(diào)用時生成 。 (bar*) 對指針是 “非變換轉(zhuǎn)換 ”,導(dǎo)致把 foo 指針當(dāng)做 bar 指針 – 每個類里的動態(tài)約束方法的個數(shù)和順序都靜態(tài)確定 優(yōu)化實(shí)現(xiàn)的效果: – 如果所采用的對象模型在動態(tài)特性方面有所限制,就可能開發(fā)出效率更高的方法 動態(tài)約束的實(shí)現(xiàn):受限模型 ? 早期 OO 語言(包括 Smalltalk)都采用功能強(qiáng)大靈活的對象模型 – 如果語言允許靜態(tài)約束的方法,采用靜態(tài)約束可以提高效率。 x 是一個指向或者引用對象的變量 – 數(shù)據(jù)成員本身也可能是某個類的對象,在執(zhí)行整體對象的構(gòu)造函數(shù)的過程中,就需要執(zhí)行這些對象成員的構(gòu)造函數(shù) – 提供模塊的內(nèi)部狀態(tài),可以通過所提供的方法修改狀態(tài) – 類的靜態(tài)數(shù)據(jù)成員可以在靜態(tài)區(qū)實(shí)現(xiàn),在程序運(yùn)行之前靜態(tài)分配,在程序的整個執(zhí)行期間保持其存儲 – 作為 “閉模塊 ”(凡是沒有明確聲明可訪問的都不可訪問) 對基本封裝機(jī)制的擴(kuò)充是引進(jìn)進(jìn)一步的控制 ? C++ 引進(jìn)成員的 public、 protected 和 private 屬性,提供細(xì)致的訪問控制 ? C++ 還允許定義派生類的不同繼承方式,控制對基類成員的訪問: – 可能定義繼承關(guān)系的性質(zhì)(如 C++ 里的類繼承有 public、 protected 和 private 三種方式) ? 與對象交互的機(jī)制(方法調(diào)用,消息傳遞) ? 初始化新對象的機(jī)制(最好能自動進(jìn)行,避免未初始化就使用的錯誤) ? 類類型對象的動態(tài)轉(zhuǎn)換機(jī)制(轉(zhuǎn)換對一個具體對象的觀點(diǎn)) ? 控制類成員的訪問權(quán)限的機(jī)制 ? 對象銷毀前的臨終處理機(jī)制(最好能自動進(jìn)行) ? 對象的存儲管理機(jī)制 可能還有其他機(jī)制: ? 運(yùn)行中判斷對象的類屬關(guān)系的機(jī)制、自反等等 面向?qū)ο笳Z言的基本特征與實(shí)現(xiàn) OO語言的發(fā)展 , 給出以下圖示澄清了概念 : 封裝 → 對象 (數(shù)據(jù)和操作 ) 局部性 、 可維護(hù)性 抽象 → + 類 概括描述 、 簡單性 繼承 → + 類體系 可重用性 多態(tài) → 重載 、 類屬 可擴(kuò)充性 動態(tài)束定 → 面向?qū)ο? 可交互性 基于對象的語言 基于類的語言 面向?qū)ο笳Z言 Ada 83, Actor CLU Smalltalk、 Eiffel simula 67 C++, Ada 95, Java OO 程序 ? 先看一點(diǎn) OO 程序,復(fù)習(xí)一下基本 OO 程序的特征 ? 這里看一段定義了幾個類的 C++ 代碼 定義 list_node 類,用于實(shí)現(xiàn)帶頭結(jié)點(diǎn)的雙向循環(huán)鏈接表 每個結(jié)點(diǎn)里有一個域指向表頭結(jié)點(diǎn) OO 程序 定義 list_node 類,用于實(shí)現(xiàn)帶頭結(jié)點(diǎn)的雙向循環(huán)鏈接表 每個結(jié)點(diǎn)里有一個域指向表頭結(jié)點(diǎn) OO 程序 定義一個 list類 注意: header 是個 list_node 定義的是有頭結(jié)點(diǎn)的循環(huán)鏈表 OO 程序 通過繼承定義 queue 類。其中沒有類的概念,只有對象。 C++ 是例外,其設(shè)計目標(biāo)之一是盡可能避免對自動存儲回收的依賴,以支持系統(tǒng)程序設(shè)計,提高效率,減少運(yùn)行時間上的不確定性 面向?qū)ο蟮恼Z言 ? 是否所有方法都采用動態(tài)約束? – C++ 采用值模型,可以創(chuàng)建靜態(tài)對象或棧對象,但只有通過對象引用或指向?qū)ο蟮闹羔槻拍軐?shí)現(xiàn)面向?qū)ο蟮膭討B(tài)約束行為 – 動態(tài)約束是實(shí)現(xiàn)面向?qū)ο笮袨榈年P(guān)鍵 – C++ 在 OO 概念的廣泛接受和應(yīng)用方面功不可沒(具體理由見后面討論)。 作用域規(guī)則,開的或者閉的作用域 – 其內(nèi)部數(shù)據(jù)構(gòu)成對象的狀態(tài),操作確定對象與外界交互的方式 – 子程序是純粹的過程抽象,基于子程序的重用有很大局限性 – 39。amount39。39。food39。food39。objectd 重設(shè)計c 直用di1ci1ai2a i1di2ci3ci2Smalltalk 程序A 派生 a 一個完整的 Smalltalk程序 家庭財務(wù)帳目 建立全部流水帳類 , 直接掛在 Object上 class name FinancialHistory superclass Object instance variable names 39。每個對象當(dāng)接受某消息并執(zhí)行其方法的消息表達(dá)式時都是在自向其它對象發(fā)消息。This is a String39。 雙目的 3+4 消息 ‘ +‘帶參數(shù) 4發(fā)向?qū)ο?3, 得對象 7。語言核心 (Kernel) 1972年 Dan Ingalls完成 Smalltalk72第一個實(shí)用版,以后又經(jīng)過 7680兩次改進(jìn), Smalltalk80成為向外發(fā)行的正式版本。 60年代挪威的 Dahl和 Nyard為模擬系統(tǒng)研制了 SIMULA67語言,首先提出封裝的類和動態(tài)生成實(shí)例對象的概念。該項(xiàng)目的硬件是 Star(個人機(jī)的前驅(qū) )軟件是 Smalltalk。 $ ( ) , ; : | :=或 ← ↑ [ ] ( ) {} (4) 變量 實(shí)例變量 / 類變量 / 臨時變量 / 全局變量 / 匯聚變量 / 參數(shù) (5) 消息表達(dá)式與語句 消息表達(dá)式的一般格式是 : 對象 選擇子 參數(shù) Smalltalk的消息表達(dá)式有三種 : foo ← array at:4。存儲管理器 ↑ f ―返回 f中的值 ” . 這個程序一共四句。 ” expenditures at: reason put: (self totalSpentFor: reason) + amount. cashOnHand← cashOnHand amount. expenditures changed CashOnHand| | “ 回答當(dāng)前手頭現(xiàn)金 ” ↑ cashOnHand expenditures | | “ 回答支出細(xì)目 ” ↑ expenditures ines | | “ 回答收入細(xì)目 ” ↑ ines totalReceiveFrom: source | | “ 回答自 source收錢總數(shù) ” (ines includesKey: source) ifTrue: [↑ines at : source] ifFalse: [↑0] totalSpentFor: reason | | “ 回答在 reason項(xiàng)上總支出 ” (expenditures includesKey: reason) ifTrue:[↑expenditures at : reason] ifFalse: [↑0] private SetlnitialBalance: amount| | “ 實(shí)例變量初始化 ” cashOnHand←amount. ines←Dictionary new. expenditures←Dictionary new Smalltalk at: HouseholdFinances put: nil. HouseholdFinances←FinancealHistory initialBalance: 1560 HouseholdFinances spend: 700 for: 39。. HouseholdFinances spend: for: 39。 Smalltalk的對象 、 類 、 方法的實(shí)現(xiàn) 類的存儲 8長度所屬分類類名超類名實(shí)例變量類方法實(shí)例方法實(shí)例變量數(shù)Boxclass空白隔開的串 串 串 push 中間代碼39。push 39。 ← 39。指令部分 模塊可能是過去的遺產(chǎn),源代碼已經(jīng)丟失或部分缺失 模塊和程序組織 ? 常規(guī)的程序單元缺乏彈性,定義好的子程序 /模塊都是固定功能的實(shí)體,難以提供 “定制 ”的方式部分地改變功能以滿足實(shí)際需要的變化 ? 通過模塊定義的抽象數(shù)據(jù)類型是相互獨(dú)立的,不同模塊之間無任何關(guān)系 – 而實(shí)際情況中,常常需要定義和使用
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1