北航研究生課程程序語言設(shè)計(jì)原理教程第10章.ppt
《北航研究生課程程序語言設(shè)計(jì)原理教程第10章.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《北航研究生課程程序語言設(shè)計(jì)原理教程第10章.ppt(60頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
第10章面向?qū)ο蟪绦蛟O(shè)計(jì)語言 當(dāng)今席卷軟件界的面向?qū)ο蠹夹g(shù) 近因是xerox公司1980年推出的Smalltalk 80語言 10 1Smalltalk語言對(duì)象的思想最早源于人工智能研究 60年代末描述智能對(duì)象的框架 frame 即封裝了許多槽 slot 槽既可以是屬性 數(shù)據(jù) 也可以是行為 操作 和 約束 但最早見諸文獻(xiàn)是sketchpad提到的OO圖形學(xué) 1963 60年代挪威的Dahl和Nyard為模擬系統(tǒng)研制了SIMULA 67語言 首先提出封裝的類和動(dòng)態(tài)生成實(shí)例對(duì)象的概念 60年代末 美國(guó)猶他大學(xué)AlanKay到Xerox公司PaloAlto研究中心參加了Dynabook項(xiàng)目 該項(xiàng)目的硬件是Star 個(gè)人機(jī)的前驅(qū) 軟件是Smalltalk 1972年DanIngalls完成Smalltalk 72第一個(gè)實(shí)用版 以后又經(jīng)過 76 80兩次改進(jìn) Smalltalk 80成為向外發(fā)行的正式版本 10 1 1Smalltalk系統(tǒng) 語言核心 Kernel 程序設(shè)計(jì)系統(tǒng) 程序設(shè)計(jì)范型 Paradigm 用戶界面模型 UserInterfaceModel 10 1 2用戶界面模型 系統(tǒng)工作空間 SystemWorkSpace 工作空間 WorkSpace 系統(tǒng)副本 SystemTranscript 項(xiàng)目 Project 兩種圖形編輯窗 Form和Bit 系統(tǒng)瀏覽器 SystemBrowser 窗 用戶就是按瀏覽窗中顯示的模板填寫程序 10 1 3語言核心 1 保留字只有五個(gè)nil true false self super 2 字面量字符字面量 數(shù)字面量 符號(hào)字面量 數(shù)組字面量 3 限定符和特殊符號(hào) 或 4 變量實(shí)例變量 類變量 臨時(shí)變量 全局變量 匯聚變量 參數(shù) 5 消息表達(dá)式與語句 消息表達(dá)式的一般格式是 對(duì)象選擇子參數(shù)Smalltalk的消息表達(dá)式有三種 單目的不帶參數(shù)treeclass消息class發(fā)向tree 得到tree的類 0 3sin消息sin發(fā)向0 3 得sin 0 3 Arraynew消息new發(fā)向Array 創(chuàng)建 Array的實(shí)例 對(duì)象 選擇子 參數(shù) 雙目的3 4消息 帶參數(shù)4發(fā)向?qū)ο? 得對(duì)象7 100 50消息 帶參數(shù)50發(fā)向?qū)ο?00 得 100 50 sum count reserveamount雙目 括號(hào)優(yōu)先單目?jī)?yōu)先雙目 關(guān)鍵字消息表達(dá)式用關(guān)鍵字 帶有 的選擇子 描述的雙目表達(dá)式 也是自左至右釋義 anArrayat 3put 100financestotalSpentOn food 賦值變量在不同時(shí)間可賦以不同對(duì)象 任何表達(dá)式加上賦值前綴 quantity 19 name chapter1 foo arrayat 4 數(shù)組第4元素與 foo 同名 塊表達(dá)式 x y BicPengoto x y x y BicPengoto x y value 100value 250BicPengoto100 250 aBlock aBlock ThisisaString displayAt 500 500 Displaywhite aBlockvalue 6 控制結(jié)構(gòu)條件選擇一般形式是 布爾子表達(dá)式ifTrue 真 塊執(zhí)行 ifFalse 假 塊執(zhí)行 可以不出現(xiàn) 如 numberlistSize whileFalse listat indexput 0 index index 1 7 消息 方法消息模式 臨時(shí)變量 語句組nawAt initialLocation newBox newBox selfnew newBoxsetLoc initiaPLocationtilt 0size 100scribe pennew newBoxshow setLoc newLoctilt newTiltsize newSizeseribe newScribe Loc newLoc titl newTilt size newSize scribe newScribe Smalltalk是編譯 解釋執(zhí)行的 Smalltalk源程序經(jīng)編譯器得到虛映象 Virtualimage 虛映象由字節(jié)代碼中間語言編寫 由Smalltalk虛機(jī)解釋執(zhí)行 相應(yīng)的文件系統(tǒng)管理三種文件 源文件 變更文件 映象文件 由于Smalltalk是交互式的 被編譯的方法在執(zhí)行期間出了問題要反應(yīng)到源程序 則要對(duì)映象文件施行反編譯 decompliation Smalltalk的虛機(jī)是一個(gè)新軟件 它有三個(gè)功能部分 存儲(chǔ)管理器 虛映象解釋器 基本例程用匯編碼寫出的底層方法實(shí)現(xiàn) 10 1 4Smalltalk文件系統(tǒng)與虛機(jī) 10 1 5Smalltalk程序設(shè)計(jì)范型 程序設(shè)計(jì)在類的層次上進(jìn)行 由類靜態(tài) 于工作空間指明向類發(fā)出消息 或動(dòng)態(tài) 方法運(yùn)行時(shí) 生成實(shí)例對(duì)象 每個(gè)對(duì)象當(dāng)接受某消息并執(zhí)行其方法的消息表達(dá)式時(shí)都是在自向其它對(duì)象發(fā)消息 10 1 5 1一個(gè)簡(jiǎn)單的Smalltalk程序 統(tǒng)計(jì)字母出現(xiàn)頻率 sf 定義了兩個(gè)臨時(shí)變量 s Prompterprompt enterline default s是Prompter的實(shí)例 將關(guān)鍵字表達(dá)式的結(jié)果束定于s 意即輸入一行字符串 若不輸入 S為空串 f Bagnew f是Bag的實(shí)例 sdo c cisLetterifTure fadd casLowerCase s在Prompter中找方法do 的模式 若找不到 找prompter的 父類直到Object C是塊變量 意從S中拿出某字符 isLetter 是消息模式 判C是否字符 若為真執(zhí)行內(nèi)塊 內(nèi)塊中f找add 消息模式 從Bag直至上層父類 找到先執(zhí) 行右邊子表達(dá)式 casLowerCase是單目表達(dá)式 同樣要在Prompter中找asLowerCase匹配 也是不成向上找 它返回是 第k個(gè) 小寫字母 add 把它發(fā)送到對(duì)象f的第k個(gè)位置上并與原數(shù)相加 f 返回f中的值 這個(gè)程序一共四句 如果掀鼠標(biāo)使菜單項(xiàng) doit 工作并輸入 SmalltalkisaprogrammingLanguagefordevelopingsoluionstobothsimpleandcomplexproblem 則輸出的f值是 71124151517447336321abcdefghiklmnoprstuv 例字頻統(tǒng)計(jì)對(duì)比程序PascalSmalltalkPROGRAMFrequency 無消息模式方法 宜寫算法 CONSTSize 80 VARs string size scfk k i Integer 定義了四個(gè)臨時(shí)變量 c Char f ARRAY 1 26 OFInteger f Arraynew 26 BEGIN f是Arrey實(shí)例長(zhǎng)度26 Writeln enterline s PrompterReadIn s prompt enterline FORi 1TO26DOdefault f i 0 S是Prompter的實(shí)例 裝輸入字串 FORi 1TosizeDO1to 26do I fat Iput 0 BEGIN1to sizedo I c aslowerCase s i c sat i asLowerCase ifisLetter c THENcisLetterifTrue BEGINk casciiValuek ord c ord a 1 aasciiValue 1 f k f k 1fat kput fat k 1END END FORi 1To26DO fWrite f i END 10 1 5 2類協(xié)議 10 1 5 3一個(gè)完整的Smalltalk程序 家庭財(cái)務(wù)帳目建立全部流水帳類 直接掛在Object上classnameFinancialHistorysuperclassObjectinstancevariablenames caseOnHandincomesexpenditures category FinancialTools classmethodinitialBalance amount 建立流水帳本初始為amount 元 supernewsetinitialBalance amounTnew 建立流水帳本初始為0 元 supernewsetinitialBalance 0instancemethodreceive amountfrom source incomesat sourceput lselftotalReceivedFrom source amount 從來源source接收到的錢數(shù) 因而手頭現(xiàn)金增加 cashOnHand cashOnHand amount incomeschangedspend amountfor reason 為事由reason支付的錢數(shù) 因而手頭現(xiàn)金減少 expendituresat reasonput selftotalSpentFor reason amount cashOnHand cashOnHand amount expenditureschangedCashOnHand 回答當(dāng)前手頭現(xiàn)金 cashOnHandexpenditures 回答支出細(xì)目 expendituresincomes 回答收入細(xì)目 incomestotalReceiveFrom source 回答自source收錢總數(shù) incomesincludesKey source ifTrue incomesat source ifFalse 0 totalSpentFor reason 回答在reason項(xiàng)上總支出 expendituresincludesKey reason ifTrue expendituresat reason ifFalse 0 privateSetlnitialBalance amount 實(shí)例變量初始化 cashOnHand amount incomes Dictionarynew expenditures Dictionarynew Smalltalkat HouseholdFinancesput nil HouseholdFinances FinancealHistoryinitialBalance 1560HouseholdFinancesspend 700for rent NouseholdFinancesspend 78 53for food HouseholdFinancesreceive 820from pay HouseholdFinancesreceive 22 15from interest HouseholdFinancesspend 135 65for utilities HouseholdFinancesspend 146 14for food 10 1 6Smalltalk程序設(shè)計(jì)系統(tǒng) 在Smalltalk中 系統(tǒng)支持程序也是作為類掛在Object之下 包括算術(shù)運(yùn)算 數(shù)據(jù)和控制結(jié)構(gòu)的實(shí)現(xiàn) 輸入 出 隨機(jī)數(shù)生成器等 有一些類是輔助程序設(shè)計(jì)過程的 語法分析器 編譯器 解釋器 反編譯器這些對(duì)象的方法都有源代碼 目標(biāo)碼兩種形式 還有一些對(duì)象表示類和方法的結(jié)構(gòu) 以便程序員追蹤系統(tǒng) 還有將方法和向其發(fā)消息的對(duì)象聯(lián)結(jié)起來的對(duì)象 這些對(duì)象統(tǒng)稱環(huán)境 contexts 類似其他語言實(shí)現(xiàn)中的堆棧幀和活動(dòng)記錄 10 2Smalltalk的對(duì)象 類 方法的實(shí)現(xiàn)類的存儲(chǔ) 實(shí)例對(duì)象的存儲(chǔ)實(shí)例對(duì)象只存放數(shù)據(jù) 其存儲(chǔ)格式如下圖 活動(dòng)記錄 環(huán)境部分 指令部分 發(fā)送者部分 10 3面對(duì)象的基本特征 P Wegner總結(jié)了OO語言的發(fā)展 給出以下圖示澄清了概念 封裝 對(duì)象 數(shù)據(jù)和操作 局部性 可維護(hù)性抽象 類概括描述 簡(jiǎn)單性繼承 類體系可重用性多態(tài) 重載 類屬可擴(kuò)充性動(dòng)態(tài)束定 面向?qū)ο罂山换バ曰趯?duì)象的語言基于類的語言面向?qū)ο笳Z言Ada83 ActorCLUSmalltalk Eiffelsimula67C Ada95 Java 傳統(tǒng)老語言紛紛轉(zhuǎn)向OO 這里面分三種情況 以老語言模擬Smalltalk 下層則可利用老語言的資源 代表是Objective C 改造老語言 在原有風(fēng)格基礎(chǔ)上增加對(duì)象 類機(jī)制 盡可能全面反映上述五大特征 代表是C Ada95以及ObjectCOBOL ObjectPaseal ObjectFORTH 這是多范型語言之路 按上述五大特征設(shè)計(jì)全部的強(qiáng)類型面向?qū)ο笳Z言 典型的是Eiffel 它雖然純正 但脫離了原有環(huán)境資源支持 推廣需要時(shí)日 封裝與繼承帶來的問題 訪問權(quán)限C 類繼承方式子類公有Public公有公有Private私有保護(hù)Public私有 仍受保護(hù) 保護(hù)Private不繼承私有Public不繼承私有Private不繼承 對(duì)象初始化次序derived derived inti intj intk basel i base2 j d k 第一基類構(gòu)造函數(shù) 第二基類構(gòu)造函數(shù)缺省構(gòu)造函數(shù)是先基后派對(duì)缺省的析構(gòu)子其調(diào)用次序相反 先派后基 強(qiáng)類型語言的動(dòng)態(tài)多態(tài)問題C 的無法執(zhí)行的多態(tài)函數(shù)設(shè)父類ellipse子類eircle均有求周長(zhǎng)求面積area 函數(shù) 有以下主程序 main ellipse pe e 8 0 4 0 eirclec 5 0 pe 實(shí)現(xiàn)辦法是建立一個(gè)虛函數(shù)表記下本函數(shù)在各子類中的位移 當(dāng)pe代表不同子類對(duì)象時(shí) 可以準(zhǔn)確找到要計(jì)算的函數(shù) 計(jì)算并打印職工工資表設(shè)經(jīng)理 專業(yè)人員 行政人員領(lǐng)年薪 其它雇員領(lǐng)計(jì)時(shí)工資 其類繼承體系是 若前此已設(shè)計(jì)card pay data類 部分程序是 classemployee charname soc sec 13 dept code job codepublic employee Link employee int 構(gòu)造函數(shù) 變?cè)敲謧€(gè)數(shù)voidprint paycheck virtualpay datacompute pay virtualvoidprint list voidemployee print empl cout Name name n t soc sec tDept dept code tJob job code n classsalaried publicemployee intannual salary vocation used public pay datacomput pay voidtake vacation classmanager salaried employee staff public voidadd employee voidprint list voiddo payroll manager 構(gòu)造函數(shù) classhourly publicemployee floatpay rate hours worked overtime intvacation used public pay datacompute pay voidrecord time card card hourly 構(gòu)造函數(shù) classofficer salaried classprofessional salaried 其中employee print list 定義為虛函數(shù) manager print list 也是虛函數(shù) 它們的各自定義是 voidemployee print list employee scan for scan link scan NULL scan scan link voidmanager print list cout n nManager print empl cout nEmployeesSupervised n employee print list 10 4Ada的面向?qū)ο髾C(jī)制 定義類和實(shí)例對(duì)象Ada95以抽象數(shù)據(jù)類型實(shí)現(xiàn)類 類的封裝性由包實(shí)現(xiàn) 類的繼承性則擴(kuò)充了標(biāo)簽 tag 類型和抽象類型 標(biāo)簽類型只限記錄類型 類的繼承性利用了Ada8的類型派生機(jī)制實(shí)現(xiàn)子類 packageObjectistypeObjectistagged 此類型的數(shù)據(jù)即對(duì)象的屬性record 無tagged即一般的ADT 有它是為了類繼承X Coord Float 0 Y Coord Float 0 初值為缺省時(shí)用endrecord functionDistance O Object returnFloat Object對(duì)象的行為functionArea O Object returnFloat endObject withObject useObject packageShapesis 這個(gè)包封裝了三個(gè)子類 型 typePointisnewObjectwithnullrecord 只繼承不擴(kuò)充的子類typeCircleisnewObjectwith 繼承并擴(kuò)充此屬性recordRadius Float endrecord functionArea C Circle returnFloat 覆蓋Object中的AreatypeTriangleisnewObjectwith 繼承并recordA B C Float 擴(kuò)充三個(gè)屬性endrecord functionArea T Triangle returnFloat 覆蓋endShape 這些類 型 包外可見 可輸出 在主子程序中聲明實(shí)例 如同類型聲明變量 以初值表達(dá)式作值構(gòu)造子 子類的實(shí)例也是父類的實(shí)例O Object P Point 聲明實(shí)例對(duì)象P Owithnullrecord C Cirele 0 0 0 0 34 7 C Owith34 7 T Triangle 3 0 4 0 5 0 T Owith3 0 4 0 5 0 如果動(dòng)態(tài)生成實(shí)例 可將此聲明放在類的方法 過程 函數(shù) 中 調(diào)用時(shí)生成 以類寬類型實(shí)現(xiàn)多態(tài) Ada95的每個(gè)標(biāo)簽類型都有一個(gè)與之對(duì)應(yīng)的類類型屬性T Class 并把它叫做類寬類型 ClassWideType 設(shè)已聲明T類型 及T Class的變量V 則Y T 一般聲明 正確Y T Class 不可以Y T Class V 可以 T Class束定為V的類型類寬類型的范圍示意如下 procedureProcess Reservation Rc inoutReservation Class is 形參可以是類寬類型 不必最初束定某特定類型begin Make Rc 它按相結(jié)合的Rc的具體類型出票 endProcess Reservation 這個(gè)程序在編譯時(shí)Make是沒有也無法束定到某make函數(shù)體上 只有在運(yùn)行中 動(dòng)態(tài) 束定 束定時(shí)按Rc對(duì)應(yīng)的實(shí)參的標(biāo)簽tag值派送 編譯時(shí)只要做出派送表 擴(kuò)充程序包機(jī)制實(shí)現(xiàn)繼承的類體系 Ada95增設(shè)了子輩單元 childunit 和私有子輩單元 子輩單元packageReservation System Supersonicis 后是子輩單元名typeSupersonic ReservationisnewReservationwithprivate privatetypeSupersonic ReservationisnewReservationwithrecordChampagne Vintage endrecord procedureMake Sr inoutSupersonic Reservation procedureSelect Seat Sr inoutSupersonic Reservation endReservation System Supersonic 私有子輩單元packageOSis 父包OS OS的可見成份typeFile Descriptorisprivate privatetypeFile DescriptorisnewInteger endOS packageOS Exceptionsis OS的子輩程序包File Descriptor Error File Name Error Permission Error exception 所定義異常OS各子輩包均可用endOS Exceptions 公有 但不涉及泄露withOS Exceptions withOS Exceptions packageOS File Manageris OS的子輩程序包typeFile Modeis Read Only Write Only Read Write functionOpen File Name String Mode File Mode returnFile Descriptor procedureClose File inFile Descriptor endOS File Manager 公有 只用私有類型 也無泄露withOS Exceptions procedureOS Interpret Command String 命令解釋過程 等同子包privatepackageOS Internalsis 私有子輩程序包 不用with endOS Internals privatepackageOS Internals Debugis OS的私有子輩程序包 endOS Internals Debug Ada的多繼承withAbstract Sets packageLinked SetsistypeLinked SetisnewAbstruct Setswithprivate 再定義Linked Set的各種操作privatetypeCell typeCell PtrisaccessCell typeCellisrecordE Element next Cell Ptr endrecordfunctionCopy P Cell Ptr returnCell Ptr typelnnerisnewControlledwithrecordThe Set Cell Ptr endrecord procedureAdjuse Obj inoutlnner typeLinked SetisnewAbstract Setswith 繼承Abstraet setsrecordComponent lnner 其擴(kuò)展成分又繼承了Controlledendrecord endLinked Sets 10 5Eiffel的對(duì)象 Eiffel有傳統(tǒng)語言的賦值 變量 控制 三種 函數(shù) 過程 調(diào)用 參數(shù)匹配 類屬 異常等概念和機(jī)制 它在這些概念與機(jī)制之上定義類和對(duì)象 Eiffel把類和類型同等看待 類是抽象數(shù)據(jù)類型的實(shí)現(xiàn)類型分為兩種 一為盡頭 expended 類型 這就是其它語言中的基元類型 引用 referance 類型 有了類型就可以聲明實(shí)體 entity P PERSON 實(shí)體P引用PERSON類 型 Eiffel中的實(shí)例對(duì)象沒有名字 但可借助實(shí)體 并可在執(zhí)行中生成 P雙驚嘆號(hào)即創(chuàng)建指令 創(chuàng)建一PERSON類的實(shí)例對(duì)象 I INTEGER 實(shí)體I就是盡頭類型INTEGER的實(shí)例不用雙驚嘆號(hào) 就是實(shí)例對(duì)象聲明 抽象數(shù)據(jù)類型nameQUEUE I includeLISTSsortI Q B NsignatureCREATEQ N QFRONTOFQ Q IADDTOQ Q I QREMOVEFROMQ Q QISEMPTYQ Q BISFULLQ Q BLENGTHOFQ Q Nsementicsleti I q r Q n N b B pre conditionsCREATEQ n n 0ADDTOQ q i notISFULL q 括號(hào)中逗號(hào)表示分開的輸入FRONTOFQ q notISEMPTY q REMOVEFROMQ q notISEMPTY q ISEMPTYQ q trueISFULLQ q tueLENGTHOFQ q true post conditionsCREATEQ n r r CREATELIST n 括號(hào)中的分號(hào)表示前面是輸入 后面是輸出參數(shù)ADDTOQ q i r r APPEND q i FRONTOFQ q i i HEAD q REMOVEFROMQ q r r TAIL q ISEMPTYQ q b b ISEMPTYLIST q ISFULLQ q b b ISFULLLIST q LENGTHOFQ q n n LENGTH q end Eiffel的類和程序運(yùn)行 classQUEUE ITEM inheritOBJECT 可以多個(gè)父類 3 creationmake 只指明構(gòu)造特征的名字 5 feature NONE 私有特征size INTEGERhead NODE ITEM 引用QUEUE類外的類型NODE 8 tail NODE ITEM 9 feature AN 公有特征 10 make n INTEGER is 構(gòu)造n結(jié)點(diǎn)實(shí)例對(duì)象 只記 n和當(dāng)前長(zhǎng)度dosize nlength 0 當(dāng)前長(zhǎng)度為0 14 end make 15 front ITEMis 取隊(duì)前端數(shù)據(jù)項(xiàng)require 前置條件關(guān)鍵字notis empty 隊(duì)不空doResult head item 20 end front 21 add i ITEM is 在隊(duì)尾處加一項(xiàng)require 23 notis full 24 localnew node NODE ITEM do 27 New node make i 28 ifhead Voidthenhead new nodeelsetail Change next new node endtail new nodelength length 1 35 endsure 后置條件關(guān)鍵字tail new nodelength Old length 1 39 end add 40 removeis 取消隊(duì)頭項(xiàng) 結(jié)點(diǎn) requirenotis emptydohead head nextifhead Voidthentail headendlength lenght 1ensure 后置條件end remove 52 is empty BOOLEANis 查隊(duì)是否空doResult length 0 end is empty 56 is full BOOLEANis 查隊(duì)是否滿doResalt length size end is full 60 length INTEGERend classQUEUE q QUEUEs STRING 63 q make 10 64 fromj 0 循環(huán)初值untilj 10 循環(huán)終值 68 loopj j 1io read lines io last lines io last line 72 q add s 73 end 查找數(shù)組a 索引從1到size 中 v值第一次出現(xiàn)的位置 fromposition 0s a item 1 invariant 不變式0 positionandposition sizevariant 變式size positionuntilposition sizeorelsev a item position loopposition position 1end Eiffel的繼承與多態(tài) 被繼承特征可換名 被繼承特征可改變可見性 被繼承特征可重新定義行為 可以使被繼承特征的行為延遲發(fā)生作用 選擇繼承 被繼承特征不作定義 classHEIRinheritPARENT1 無適配子句全部繼承此父類特征PARENT2renamef1asparent2 f1 將PARENT2中的f1換成后者f2asparent2 f2export 改變輸出 外部可見 狀態(tài) ANY f3 parent2 f1 PARENT2中f3 f1在此類中公有 NONE f4 parent2 f2 PARENT2中f4 f2在此類中私有 ACLASS f5 只許ACLASS使用redefine 內(nèi)容有了修改的關(guān)鍵字parent2 f1 f3undefine 被覆蓋的關(guān)鍵字f4 parent2 f2 select 在同名特征中先定繼承路徑end 繼承來的PARENT2使用5種適配子句PARENT3renameg1asparent3 g1end 只選一種適配子句表示有了修改creation 本類構(gòu)造子feature 本類定義的特征end classHEIR 指定動(dòng)態(tài)類型和動(dòng)態(tài)束定 指定動(dòng)態(tài)類型P PERSON EMPLOYEE p make p的靜態(tài)類型仍然是PERSON 用它創(chuàng)了一個(gè)EMPLOYEE類型的對(duì)象 運(yùn)行中執(zhí)行的是 e EMPLOYEE e MAKE 兩個(gè)make是不同的特征 動(dòng)態(tài)束定Eiffel中可以寫指令 plist item display其中display在各子類 型 中定義同名 但例程不一樣 執(zhí)行時(shí)可按item當(dāng)前類 型 找出它的display特征執(zhí)行 即動(dòng)態(tài)束定- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
14.9 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 北航 研究生課程 程序語言 設(shè)計(jì) 原理 教程 10
鏈接地址:http://www.820124.com/p-6827637.html