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

正文內(nèi)容

第四章面向?qū)ο蟪绦蛟O(shè)計語言-全文預(yù)覽

2025-09-27 08:15 上一頁面

下一頁面
  

【正文】 看作是原有基類的對象,可以當(dāng)作基類的對象使用(子類就是子類型,Liskov 代換原理, 2020 年圖靈獎) ? 類定義了對象的狀態(tài)成分(數(shù)據(jù)成員)和一組相關(guān)操作(稱為方法) ? 方法調(diào)用總是針對某個對象進行的,將方法調(diào)用看作是給相應(yīng)對象送一個消息,對象通過執(zhí)行相應(yīng)操作的方式對消息做出響應(yīng) ? 對一個消息執(zhí)行什么方法,由接收消息的對象的類型確定(根據(jù)該對象所屬的類確定,這就是動態(tài)約束) ? 計算,就是一組對象相互通訊的整體效果(對計算的另一種看法) OO 發(fā)展史 Smalltalk 還有一些獨特的東西: ? 變量采用引用模型,變量無類型,可以引用任何對象 ? 語言里的一切都是對象: – 界面與實現(xiàn) – 類的概念源自 Simula,其設(shè)計中提出用類定義把一組操作與一組數(shù)據(jù)包裝起來。 OO 并不是從模塊化程序設(shè)計發(fā)展出來的,它有自己的發(fā)展歷程 – 模塊可能是過去的遺產(chǎn),源代碼已經(jīng)丟失或部分缺失 模塊和程序組織 ? 常規(guī)的程序單元缺乏彈性,定義好的子程序 /模塊都是固定功能的實體,難以提供 “定制 ”的方式部分地改變功能以滿足實際需要的變化 ? 通過模塊定義的抽象數(shù)據(jù)類型是相互獨立的,不同模塊之間無任何關(guān)系 – 而實際情況中,常常需要定義和使用一些相互有關(guān)的類型,可能需要把它們送給同一個函數(shù) /過程去處理,以同樣方式存儲 – 變體和聯(lián)合機制就是為了迎合這方面的需要,但它們沒有類型安全性,且未能提供解決類似問題的統(tǒng)一框架,難用于應(yīng)付更復(fù)雜的情況 – 支持相關(guān)類型,可能給程序的結(jié)構(gòu)組織帶來新的可能性 ? 如何在抽象數(shù)據(jù)類型的框架中提供這一類功能,也是需要解決的問題 ? 面向?qū)ο蟮母拍钤谶@些方面都能發(fā)揮很大的作用 ? 面向?qū)ο螅?ObjectOriented)的方法和程序技術(shù),為基于模塊(一個類也可以看作一個模塊)的重用問題提供了一條解決途徑。 模塊是更合適的重用單元,因為模塊可以包裝任何功能,更靈活 ? ? 重用中有一種常見情況:軟件開發(fā)中遇到的新問題常與解決過的問題(可以重用的庫提供的功能)類似,但又不完全相同 – 指令部分 send 39。 ← 39。 39。push 39。send 壓棧解釋執(zhí)行39。 Smalltalk的對象 、 類 、 方法的實現(xiàn) 類的存儲 8長度所屬分類類名超類名實例變量類方法實例方法實例變量數(shù)Boxclass空白隔開的串 串 串 push 中間代碼39。. Smalltalk程序設(shè)計系統(tǒng) 在 Smalltalk中 , 系統(tǒng)支持程序也是作為類掛在 Object之下 , 包括算術(shù)運算 、 數(shù)據(jù)和控制結(jié)構(gòu)的實現(xiàn) 、 輸入 /出 、 隨機數(shù)生成器等 。. HouseholdFinances spend: for: 39。. HouseholdFinances receive: 820 from: 39。 ” expenditures at: reason put: (self totalSpentFor: reason) + amount. cashOnHand← cashOnHand amount. expenditures changed CashOnHand| | “ 回答當(dāng)前手頭現(xiàn)金 ” ↑ cashOnHand expenditures | | “ 回答支出細目 ” ↑ expenditures ines | | “ 回答收入細目 ” ↑ ines totalReceiveFrom: source | | “ 回答自 source收錢總數(shù) ” (ines includesKey: source) ifTrue: [↑ines at : source] ifFalse: [↑0] totalSpentFor: reason | | “ 回答在 reason項上總支出 ” (expenditures includesKey: reason) ifTrue:[↑expenditures at : reason] ifFalse: [↑0] private SetlnitialBalance: amount| | “ 實例變量初始化 ” cashOnHand←amount. ines←Dictionary new. expenditures←Dictionary new Smalltalk at: HouseholdFinances put: nil. HouseholdFinances←FinancealHistory initialBalance: 1560 HouseholdFinances spend: 700 for: 39。caseOnHand ines expenditures39。 ↑ f ―返回 f中的值 ” . 這個程序一共四句。 一個簡單的 Smalltalk程序 統(tǒng)計字母出現(xiàn)頻率 | s f| “ 定義了兩個臨時變量 ” s←Prompter prompt: ‘ enter line‘ default: ‘’ . ―s是 Prompter的實例 , 將關(guān)鍵字表達式的結(jié)果束定于 s‖ ―意即輸入一行字符串 , 若不輸入 , S為空串 ” f←Bag new. ―f是 Bag的實例 ” s do: [:c| c isLetter ifTure: [f add: c asLowerCase]] ―s在 Prompter中找方法 do:的模式 , 若找不到 , 找 prompter的 ” “ 父類直到 Object. C是塊變量 , 意從 S中拿出某字符 , isLetter‖ ―是消息模式 , 判 C是否字符 , 若為真執(zhí)行內(nèi)塊 ” 。存儲管理器 displayAt: 500 500]. Display white. aBlock value (6) 控制結(jié)構(gòu) 條件選擇一般形式是 : 布爾子表達式 ifTrue: [?真 ’ 塊執(zhí)行 ] ifFalse: [?假 ’ 塊執(zhí)行 ] ―可以不出現(xiàn) ” 如: number0 ifTrue: [absValue←number negated] ifFalse: [absValue←number] 條件重復(fù)一般形式是 : [布爾塊表達式 ] whileTrue:| wlieFalse:[重復(fù)塊 ] 如: [indexlistSize] whileFalse:[list at:index put: 0。 foo ← array at:4。 100 50 消息 ‘ ‘帶參數(shù) 50發(fā)向?qū)ο?100, 得 (100, 50) (sum/count) * reserve amount 雙目 , 括號優(yōu)先 單目優(yōu)先 雙目 $ ( ) , ; : | :=或 ← ↑ [ ] ( ) {} (4) 變量 實例變量 / 類變量 / 臨時變量 / 全局變量 / 匯聚變量 / 參數(shù) (5) 消息表達式與語句 消息表達式的一般格式是 : 對象 選擇子 參數(shù) Smalltalk的消息表達式有三種 : 程序設(shè)計系統(tǒng) 該項目的硬件是 Star(個人機的前驅(qū) )軟件是 Smalltalk。 Smalltalk語言 對象的思想最早源于人工智能研究, 60年代末描述智能對象的框架(frame)即封裝了許多槽 (slot),槽既可以是屬性 (數(shù)據(jù) )也可以是行為 (操作 )和 (約束 )。 60年代挪威的 Dahl和 Nyard為模擬系統(tǒng)研制了 SIMULA67語言,首先提出封裝的類和動態(tài)生成實例對象的概念。但最早見諸文獻是 sketchpad提到的 OO圖形學(xué) (1963)。 1972年 Dan Ingalls完成 Smalltalk72第一個實用版,以后又經(jīng)過 7680兩次改進, Smalltalk80成為向外發(fā)行的正式版本。 60年代末,美國猶他大學(xué) Alan Kay到 Xerox公司 PaloAlto研究中心參加了 Dynabook項目。語言核心 (Kernel) System Browser 類類類類類 CLASS CATEGORIES MENU 類類類類類類類 MESSAGE SELECTORS MENU 類類類類類類 MESSAGE CATEGORIES MENU 類類類類 CLASSNAMES MENUInstance Class正文 TEXT 語言核心 (1) 保留字 只有五個 nil, true, false, self, super (2) 字面量 字符字面量 /數(shù)字面量 / 符號字面量 / 數(shù)組字面量 (3) 限定符和特殊符號 39。 雙目的 3+4 消息 ‘ +‘帶參數(shù) 4發(fā)向?qū)ο?3, 得對象 7。賦值 變量在不同時間可賦以不同對象,任何表達式加上賦值前綴‘ ←’ quantity← 19. name← ?chapter 1‘。This is a String39。 由于 Smalltalk是交互式的,被編譯的方法在執(zhí)行期間出了問題要反應(yīng)到源程序,則要對映象文件施行反編譯(depliation) Smalltalk的虛機是一個新軟件,它有三個功能部分 : 每個對象當(dāng)接受某消息并執(zhí)行其方法的消息表達式時都是在自向其它對象發(fā)消息。 它返回是 “ 第 k個 ” 小寫字母 , add:把它發(fā)送到對象 f的第 k個位置上并與原數(shù)相加 。objectd 重設(shè)計c 直用di1ci1ai2a i1di2ci3ci2Smalltalk 程序A 派生 a 一個完整的 Smalltalk程序 家庭財務(wù)帳目 建立全部流水帳類 , 直接掛在 Object上 class name FinancialHistory superclass Object instance variable names 39。 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)金減少 。food39。interest39。food39。 還有將方法和向其發(fā)消息的對象聯(lián)結(jié)起來的對象 .這些對象統(tǒng)稱環(huán)境 (contexts)類似其他語言實現(xiàn)中的堆棧幀和活動
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1