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

正文內(nèi)容

第四章面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言-文庫(kù)吧

2025-07-29 08:15 本頁(yè)面


【正文】 END ] END; ]. FOR i:=1 To 26 DO ↑f Write(f[i], ‘’ ) END. 類協(xié)議 類 名超 類 名實(shí)例變量名類變量名匯集變量名 標(biāo)識(shí)符 標(biāo)識(shí)符 標(biāo)識(shí)符表 標(biāo)識(shí)符表 標(biāo)識(shí)符類方法: 方法 1 方法 2 . . 方法 n 實(shí)例方法 : 方法 1 方法 2 . . 方法 n單繼承,只一個(gè)用于實(shí)例對(duì)象用于類對(duì)象充作若干類共享的匯聚字典用于創(chuàng)建實(shí)例,并初始化如上例 Arr ay 中的方法 n ew:刻畫實(shí)例對(duì)象行為如上例中 a sLo w erC a se ,at:put :, isL e tte r 是對(duì)象s,f,c 的方法。objectd 重設(shè)計(jì)c 直用di1ci1ai2a i1di2ci3ci2Smalltalk 程序A 派生 a 一個(gè)完整的 Smalltalk程序 家庭財(cái)務(wù)帳目 建立全部流水帳類 , 直接掛在 Object上 class name FinancialHistory superclass Object instance variable names 39。caseOnHand ines expenditures39。 category 39。Financial Tools39。 class method initialBalance:amount| | “ 建立流水帳本初始為 amount( 元 ) ” ↑ super new setinitialBalance: amounT new | | “ 建立流水帳本初始為 0( 元 ) ” ↑ super new setinitialBalance:0 instance method receive: amount from: source | | ines at: source put: lself total ReceivedFrom:source)+amount. ―從來源 source接收到的錢數(shù) , 因而手頭現(xiàn)金增加 ” . cashOnHand←cashOnHand + amount. ines changed spend: amount for: reason | | “ 為事由 reason支付的錢數(shù) , 因而手頭現(xiàn)金減少 。 ” 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。rent39。. NouseholdFinances spend: for : 39。food39。. HouseholdFinances receive: 820 from: 39。pay39。. HouseholdFinances receive: from: 39。interest39。. HouseholdFinances spend: for: 39。utilities39。. HouseholdFinances spend: for: 39。food39。. Smalltalk程序設(shè)計(jì)系統(tǒng) 在 Smalltalk中 , 系統(tǒng)支持程序也是作為類掛在 Object之下 , 包括算術(shù)運(yùn)算 、 數(shù)據(jù)和控制結(jié)構(gòu)的實(shí)現(xiàn) 、 輸入 /出 、 隨機(jī)數(shù)生成器等 。 有一些類是輔助程序設(shè)計(jì)過程的,語(yǔ)法分析器、編譯器、解釋器、反編譯器這些對(duì)象的方法都有源代碼,目標(biāo)碼兩種形式。 還有一些對(duì)象表示類和方法的結(jié)構(gòu),以便程序員追蹤系統(tǒng)。 還有將方法和向其發(fā)消息的對(duì)象聯(lián)結(jié)起來的對(duì)象 .這些對(duì)象統(tǒng)稱環(huán)境 (contexts)類似其他語(yǔ)言實(shí)現(xiàn)中的堆棧幀和活動(dòng)記錄。 Smalltalk的對(duì)象 、 類 、 方法的實(shí)現(xiàn) 類的存儲(chǔ) 8長(zhǎng)度所屬分類類名超類名實(shí)例變量類方法實(shí)例方法實(shí)例變量數(shù)Boxclass空白隔開的串 串 串 push 中間代碼39。self39。 39。39。send 壓棧解釋執(zhí)行39。erase39。,0push39。size39。push 39。size39。push 39。amount39。 39。send 39。+39。,1send 39。 ← 39。,1poppush 39。self39。 39。send 39。show 39。,0return? grow : amount?self erase.size ← size+ amountself show? grow :? 消息模式 方法體 源代碼消息字典4實(shí)例對(duì)象的存儲(chǔ) 實(shí)例對(duì)象只存放數(shù)據(jù),其存儲(chǔ)格式如下圖 : 分類 loc tilt size scribe 長(zhǎng)度 6b1實(shí)例變量名Box類類類10045500@600 分類 loc tilt size scribe 長(zhǎng)度 6 x y 長(zhǎng)度 4500200Pointb2類類活動(dòng)記錄 環(huán)境部分 指令部分 發(fā)送者部分 臨時(shí)變量中間結(jié)果靜態(tài)鏈方法頭指針指令位移動(dòng)態(tài)鏈參數(shù)非局部發(fā)送者部類類類類類lennamesuperclasslennamesuperclasslenclassvarclassvarinstanvar..活動(dòng)記錄實(shí)例類 超類指向消息發(fā)送者類類類 面向?qū)ο蟮陌l(fā)展與概念 ? 為什么需要面向?qū)ο螅? ? OO 語(yǔ)言的發(fā)展 ? 面向?qū)ο蟮幕靖拍? 重用的問題 ? 實(shí)踐中人們認(rèn)識(shí)到重用已有開發(fā)結(jié)果的重要性,提出了軟件重用的概念 – 最早的重用單元是子程序,如 Fortran 的子程序庫(kù) – 子程序是純粹的過程抽象,基于子程序的重用有很大局限性 – 模塊是更合適的重用單元,因?yàn)槟K可以包裝任何功能,更靈活 ? ? 重用中有一種常見情況:軟件開發(fā)中遇到的新問題常與解決過的問題(可以重用的庫(kù)提供的功能)類似,但又不完全相同 – 已有模塊的功能與需要有差異,無法以其 “ 現(xiàn)有 ” 形式直接使用 – 如果模塊功能的改變只能通過修改源代碼的方式進(jìn)行,程序員就只能拷貝這個(gè)模塊的源代碼,深入研究后再設(shè)法修改,以滿足新需求 ? 但問題是有沒有可以使用的源代碼?常常沒有: – 模塊可能是購(gòu)入的,提供商不提供源代碼 – 模塊可能是過去的遺產(chǎn),源代碼已經(jīng)丟失或部分缺失 模塊和程序組織 ? 常規(guī)的程序單元缺乏彈性,定義好的子程序 /模塊都是固定功能的實(shí)體,難以提供 “定制 ”的方式部分地改變功能以滿足實(shí)際需要的變化 ? 通過模塊定義的抽象數(shù)據(jù)類型是相互獨(dú)立的,不同模塊之間無任何關(guān)系 – 而實(shí)際情況中,常常需要定義和使用一些相互有關(guān)的類型,可能需要把它們送給同一個(gè)函數(shù) /過程去處理,以同樣方式存儲(chǔ) – 變體和聯(lián)合機(jī)制就是為了迎合這方面的需要,但它們沒有類型安全性,且未能提供解決類似問題的統(tǒng)一框架,難用于應(yīng)付更復(fù)雜的情況 – 支持相關(guān)類型,可能給程序的結(jié)構(gòu)組織帶來新的可能性 ? 如何在抽象數(shù)據(jù)類型的框架中提供這一類功能,也是需要解決的問題 ? 面向?qū)ο蟮母拍钤谶@些方面都能發(fā)揮很大的作用 ? 面向?qū)ο螅?ObjectOriented)的方法和程序技術(shù),為基于模塊(一個(gè)類也可以看作一個(gè)模塊)的重用問題提供了一條解決途徑。 OO 發(fā)展史 ? OO 技術(shù)和思想中的一個(gè)基本方面是數(shù)據(jù)和操作的封裝 – 這方面的基本想法:一組數(shù)據(jù)與關(guān)聯(lián)之上相關(guān)的操作形成一個(gè)對(duì)象。其內(nèi)部數(shù)據(jù)構(gòu)成對(duì)象的狀態(tài),操作確定對(duì)象與外界交互的方式 – OO 并不是從模塊化程序設(shè)計(jì)發(fā)展出來的,它有自己的發(fā)展歷程 – OO 的思想與模塊化的思想是并行發(fā)展,一直相互影響、相互借鑒 ? Simula 67 是 OO 概念的鼻祖,其設(shè)計(jì)目標(biāo)是擴(kuò)充 Algol 60,以更好地支持計(jì)算機(jī)在模擬方面的應(yīng)用。 1960 年代在挪威計(jì)算中心設(shè)計(jì)和實(shí)現(xiàn),主持其工作的 OleJohan Dahl 和 Kristen Nygaard 獲得 2020 年圖靈獎(jiǎng) – OO 的三個(gè)基本要素:封裝、繼承和動(dòng)態(tài)方法約束都源于 Simula – 類的概念源自 Simula,其設(shè)計(jì)中提出用類定義把一組操作與一組數(shù)據(jù)包裝起來。Simula 的這些重要想法是模塊概念和 OO 的起源 – Simula 只提供了基本封裝,并沒有對(duì)封裝的保護(hù),也沒有信息隱藏 OO 發(fā)展史 軟件實(shí)踐也需要 OO 的思想,并逐漸開發(fā)了 相關(guān)的支撐技術(shù),包括: ? 封裝的思想在面向模塊的語(yǔ)言里發(fā)展,提出了許多重要概念和想法,如 – 作用域規(guī)則,開的或者閉的作用域 – 界面與實(shí)現(xiàn) – 透明類型與隱晦類型,訪問控制,等等 ? 數(shù)據(jù)驅(qū)動(dòng)的程序設(shè)計(jì)技術(shù): – 將計(jì)算功能(子程序)約束于程序里處理的數(shù)據(jù)(結(jié)構(gòu)),使我們?cè)诔绦蚶锟梢詮臄?shù)據(jù)對(duì)象出發(fā)去啟動(dòng)相應(yīng)的計(jì)算過程 – 在一些非常規(guī)的語(yǔ)言(如函數(shù)式語(yǔ)言)里,可以通過引用的概念提供函數(shù) /過程與數(shù)據(jù)之間的約束 – 常規(guī)語(yǔ)言(如 C)引進(jìn)了指向函數(shù)的指針,在實(shí)現(xiàn)數(shù)據(jù)驅(qū)動(dòng)程序設(shè)計(jì)的過程中起到了重要作用,也成為面向?qū)ο笳Z(yǔ)言實(shí)現(xiàn)的技術(shù)基礎(chǔ) OO 發(fā)展史 繼承和動(dòng)態(tài)約束等被 Smalltalk 發(fā)展,形成目前 OO 的基本概念框架 ? 程序里以類的方式定義各種數(shù)據(jù)抽象 ? 類可以通過繼承的方式擴(kuò)充新功能,這樣定義的新類(子類,派生類)自動(dòng)繼承已有類(基類,超類,父類)的功能 ? 對(duì)象是類的實(shí)例,是程序運(yùn)行時(shí)的基本數(shù)據(jù)單元
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1