版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、TCL編程高級(jí)教程測(cè)試平臺(tái)開(kāi)發(fā)部 周健明 04245培訓(xùn)內(nèi)容 命名空間 腳本庫(kù)和程序包 ITCL命名空間 命名空間的基本概念命名空間概念定義命名空間示例限定命名名稱解析輸入命令輸出命令命名空間的命令參考命名空間 命名空間的基本概念 命名空間是一個(gè)命令與變量的集合。命名空間把命令和變量封裝起來(lái)以確保它們不會(huì)干擾別的命名空間中的命令和變量。 TCL已經(jīng)有一個(gè)這樣的集合,就是我們指的全局命名空間全局命名空間。全局命名空間將所有的全局變量和命令放在一起。 命名空間也叫做名稱空間、名稱域、命名域 等。命名空間 命名空間創(chuàng)建: 用 namespace eval 命令創(chuàng)建一個(gè)新的命名空間 命名空間查詢 如果
2、要在命名空間XXX之外查詢命名空間內(nèi)部變量的值xxx,可以用如下語(yǔ)句: set : XXX:xxx 命名空間 命名空間示例1:用 namespace eval 命令創(chuàng)建一個(gè)新的命名空間: namespace eval Counter namespace export bump variable num 0 proc bump variable num incr num set :Counter:num :Counter:bump 命名空間 命名空間示例2:命名空間是動(dòng)態(tài)的。你可以在任何時(shí)候添加、刪除命令和變量 : namespace eval Counter variable num 0 pr
3、oc bump variable num return incr num 命名空間 命名空間示例2:命名空間是動(dòng)態(tài)的。你可以在任何時(shí)候添加、刪除命令和變量 : namespace eval Counter proc test args return $args namespace eval Counter rename test test過(guò)程先被加到Counter命名空間中,稍后又被rename命令移除了 命名空間 命名空間示例3:命名空間里面可以擁有其它的命名空間形成一個(gè)嵌套的分層目錄結(jié)構(gòu)。 namespace eval Foo variable fooVar 0 . namespace e
4、val Counter namespace export bump variable num 0 proc bump variable num incr num 命名空間 命名空間示例3:現(xiàn)在如果在Foo之外訪問(wèn)num就要把Foo也加入到限定命名中: set :Foo:Counter:num 而在Foo內(nèi)部訪問(wèn)num就只需要用: set Counter:num set :Foo:Counter:num 命名空間 限定命名 限定命名又叫限定名稱、資格命名或資格名稱,英文原名為qualified names 每一個(gè)命名空間有一個(gè)原始的名稱諸如histroy或:safe:interp。由于命名空間可
5、能嵌套,限定命名被用來(lái)表示命令、變量、子命名空間。限定命名跟Unix的路徑或TK部件(widgets)的分層目錄結(jié)構(gòu)類(lèi)似,只是命名空間的限定命名使用:作為分隔符而不是 / 或 . 而已。 最頂層或全局的命名空間的名稱是空(如:空字符串),在形式上與 : 同義。 如果你想訪問(wèn)另一個(gè)命名空間中的命令和變量,你必須使用額外的語(yǔ)法結(jié)構(gòu),使用命名空間的限定命名。 命名空間 限定命名 除了全局命名空間外,命名空間的命名都不為空。除了作為命名空間的分隔符外,:也不被簡(jiǎn)單的命令、變量、命名空間命名接受。在限定命名尾部的:表示該命名空間變量或命令的命名是,因此在限定命名空間名稱尾部的 : 會(huì)被忽略。另外,在限定
6、命名中單個(gè)的 : 將被看作單個(gè)的字符,而2個(gè)或更多的單個(gè) : 將被當(dāng)作一個(gè)命名空間分隔符看待。例如: namespace eval :aa:bb:cc set x 100 ;#定義命名空間:aa:bb:cc中的變量x set :aa:bb:cc:x ;#查詢x的值,將返回100 set :aa:bb:cc:x ;#也返回100,b與c之間的3個(gè):,c與x之間的4個(gè):都被當(dāng)作一個(gè):看待 set :aa:bb:c:x ;#將出錯(cuò),因?yàn)閎與c之間的1個(gè):被當(dāng)作普通的字符看待,但并沒(méi)有定義 :a:bb這樣的命名空間,所以要小心!:aa:bb表示的是命名空間aa下的命名空間bb ,而:aa:bb表示的是
7、命名空間aa:bb 。 命名空間 名稱解析 一般來(lái)說(shuō),所有的TCL命令都支持變量和命令的限定命名。也就是說(shuō)你可以在 set 、proc、rename、interp alias 等命令中使用限定命名。如果你提供以:開(kāi)頭的完整限定命名,則可以精確地找到你指的命令、變量或命名空間。命名空間 名稱解析 如果命名不是以 : 開(kāi)頭的,則意味著相對(duì)路徑的命名,TCL提供如下的名稱解析策略:首先在當(dāng)前命名空間中查找,如果沒(méi)有才在全局命名空間查找。 如果在當(dāng)前命名空間和全局命名空間都沒(méi)找到,則該命名尚未定義。 例1: set traceLevel 0 namespace eval Debug printTrac
8、e $traceLevel TCL首先在命名空間Debug中查找traceLevel,然后是全局命名空間。命名空間 名稱解析 例2: set traceLevel 0 namespace eval Foo variable traceLevel 3 namespace eval Debug printTrace $traceLevel TCL首先在命名空間 Foo:Debug 中查找 traceLevel ,因?yàn)闆](méi)找到,所以就到全局命名空間中查找。在命名空間Foo中定義的變量 Foo:traceLevel 既不是當(dāng)前命名空間Foo:Debug中的變量,也不是全局命名空間中的變量,因此在名稱解析
9、的過(guò)程中被完全忽略了。 命名空間 輸入命令和輸出命令 命名空間常常用來(lái)描述庫(kù),需要頻繁使用命名空間前綴,用輸入命令和輸出命令可以省略命令前面的命名空間前綴。 輸入命令: namespace import 輸出命令: namespace export命名空間 輸入命令 namespace import 命令只輸入命名空間中用namespace export命令輸出的命令 如果不再需要使用已經(jīng)輸入的命令,可以使用namespace forget 示例: namespace import Blt:graph Blt:table 就只輸入graph和table命令到當(dāng)前上下文中。 用namespace
10、 forget命令來(lái)移除: namespace forget Blt:* 。 當(dāng)你在輸出命名空間中刪除一個(gè)命令時(shí)(如:rename Blt:graph ),該命令也自動(dòng)從所有輸入它的命名空間中移除。 命名空間 輸出命令 在命令空間中輸出命令,用namespace export命令聲明要輸出的命令: namespace export xxx namespace export 命令指明了哪些命令可以被其他命名空間輸入。namespace import 命令只輸入那些在命名空間中明確定義為輸出的命令。如果namespace import命令指定了一個(gè)沒(méi)有輸出的命令,該命令不會(huì)被輸入 。 命名空間 命
11、名空間的命令參考: namespace命令 :命令與變量的上下文創(chuàng)建和維護(hù)是通過(guò)namespace命令來(lái)進(jìn)行的 命名空間的創(chuàng)建和刪除 命名空間的環(huán)境抓取和腳本執(zhí)行 命名空間的輸入和輸出 命名空間信息查詢 限定命名操作命名空間 命名空間的其他相關(guān)命令: variable命令 :variable命令用于創(chuàng)建和初始化一個(gè)命名空間的變量 glob-style (glob樣式) :glob本身是使用通配符查找符合特定pattern的文件名的命令,而glob-style(樣式)的就是指使用與glob語(yǔ)法相同的通配符進(jìn)行模糊查找的匹配方式。 培訓(xùn)內(nèi)容 命名空間 腳本庫(kù)和程序包 ITCL腳本庫(kù)和程序包 腳本庫(kù)
12、 什么是腳本庫(kù)創(chuàng)建和調(diào)用腳本庫(kù) 腳本庫(kù)的優(yōu)缺點(diǎn) 程序包 什么是程序包創(chuàng)建程序包索引文件pkgIndex.tcl 使用程序包 與腳本庫(kù)和程序包相關(guān)的全局變量和過(guò)程 腳本庫(kù)和程序包 腳本庫(kù) Q:什么是腳本庫(kù)?A:TCL中提供了Library來(lái)存放一些有用的TCL過(guò)程的集合,就是腳本庫(kù)。 使用腳本庫(kù)的好處是應(yīng)用程序可以由一個(gè)較短的主程序、一個(gè)或多個(gè)支持庫(kù)組成,這樣應(yīng)用程序加載時(shí)只加載主程序,而支持庫(kù)中的過(guò)程會(huì)在使用時(shí)才加載,可以縮短整個(gè)應(yīng)用程序的加載時(shí)間。 腳本庫(kù)的另一個(gè)好處是可以供多個(gè)應(yīng)用程序使用,這樣也可以提高程序的共享和復(fù)用。 另外,腳本庫(kù)還提供自動(dòng)加載機(jī)制。腳本庫(kù)和程序包 創(chuàng)建腳本庫(kù):STE
13、P:創(chuàng)建腳本庫(kù)只需以下兩步: 第一,創(chuàng)建腳本文件。 第二步,為自動(dòng)加載創(chuàng)建索引文件。 在TCL解釋器(如tclsh或wish)中,執(zhí)行命令: auto_mkindex . 腳本庫(kù)和程序包 調(diào)用腳本庫(kù): 在腳本庫(kù)及其tclIndex文件被創(chuàng)建后,只需要把腳本庫(kù)的路徑添加到TCL的全局變量 auto_path 中即可,以后就可以自由引用腳本庫(kù)中的過(guò)程。 TCL會(huì)自動(dòng)搜索 auto_path 每個(gè)路徑下的 tclIndex 文件來(lái)確定要調(diào)用的過(guò)程在哪里。 一般使用 lappend 命令將路徑添加到 auto_path 中, 例如: % lappend auto_path c:/tcllib/lib1
14、 C:/DEVELOP/TCL/lib/tcl8.3 C:/DEVELOP/TCL/lib C:/DEVELOP/TCL/lib/tk8.3 c:/tcllib/lib1 如果一個(gè)函數(shù)在幾個(gè)腳本庫(kù)中都有定義的話,TCL會(huì)按照搜索順序自動(dòng)加載在 auto_path 中位置靠前的那個(gè)庫(kù)。因此,如果加載的腳本庫(kù)要先被搜索的話,可以使用 linsert 命令將其插入到 auto_path 中靠前的位置中, 例如: % set auto_path linsert $auto_path 0 c:/tcllib/lib1 c:/tcllib/lib1 C:/DEVELOP/TCL/lib/tcl8.3 C:
15、/DEVELOP/TCL/lib C:/DEVELOP/TCL/lib/tk8.3 腳本庫(kù)和程序包 腳本庫(kù)的優(yōu)缺點(diǎn)優(yōu)點(diǎn):腳本庫(kù)的方法從TCL 的最早版本開(kāi)始就支持,不存在兼容性問(wèn)題,很多現(xiàn)有的公共腳本就是使用腳本庫(kù)創(chuàng)建的。由于通過(guò)把路徑添加到 auto_path 變量中來(lái)實(shí)現(xiàn)對(duì)腳本庫(kù)的定位,因此腳本庫(kù)可以存放在任何位置,沒(méi)有路徑限制。 缺點(diǎn):不支持版本號(hào),不便于腳本庫(kù)的更新和維護(hù)。由于腳本庫(kù)只能用TCL語(yǔ)言編寫(xiě),能夠?qū)崿F(xiàn)的功能有限。另外,每個(gè)腳本庫(kù)的路徑都要添加到 auto_path 變量中也比較煩瑣。 為解決上述問(wèn)題和進(jìn)一步提高TCL 的擴(kuò)展能力,較新版本的TCL提供了更好的程序包機(jī)制。 腳
16、本庫(kù)和程序包 程序包Q:什么是程序包?A:由于腳本庫(kù)的局限性,TCL提供了更好的 package 機(jī)制來(lái)實(shí)現(xiàn)對(duì)TCL的共用和擴(kuò)展,也就是程序包 。 腳本庫(kù)和程序包 創(chuàng)建TCL程序包: 把你想包含在某個(gè)包中的所有自定義過(guò)程放到一個(gè)TCL腳本文件中,然后在文件的開(kāi)頭使用 package provide 命令指明這個(gè)包的名字和版本即可。 腳本庫(kù)和程序包 創(chuàng)建二進(jìn)制程序包 : 用TCL編寫(xiě)的程序包,功能仍然有限,因此TCL還特別支持二進(jìn)制程序包。這樣,就可以用C/C+語(yǔ)言編寫(xiě)TCL擴(kuò)展命令了,充分利用Windows或UNIX系統(tǒng)提供的強(qiáng)大 API 功能。 二進(jìn)制程序包實(shí)際上就是由系統(tǒng)平臺(tái)所支持的編譯后
17、的可執(zhí)行代碼共享庫(kù)。根據(jù)當(dāng)前系統(tǒng)平臺(tái)的不同,二進(jìn)制程序包的文件后綴也不一樣。在 UNIX 上二進(jìn)制程序包的后綴是 .so ,在 Macintosh 上是 .shlib ,而在 Windows 上就是我們所熟悉的動(dòng)態(tài)連接庫(kù) .dll 。 腳本庫(kù)和程序包 索引文件 pkgIndex.tcl生成索引文件 pkgIndex.tcl 自動(dòng)生成 pkgIndex.tcl 文件的命令: pkg_mkIndex 。 pkg_mkIndex -lazy -load -verbose . 腳本庫(kù)和程序包 如何使用程序包如何使用程序包: 使用某一個(gè)程序包時(shí),可以調(diào)用 package require 命令,該命令對(duì)T
18、CL和二進(jìn)制的程序包都適用。 命令格式: package require -exact 參數(shù) name 是程序包的名字,也就是在 TCL中用 package provide 命令、在 DLL 中用 Tcl_PkgProvide 函數(shù)指定的名稱。 參數(shù) version 是版本號(hào),格式為 major.minor ,其中major 是主版本號(hào),minor是次版本號(hào),兩者用小數(shù)點(diǎn)隔開(kāi)。 如果省略version ,則加載當(dāng)前能找到了名稱叫 name 的程序包中版本最高的那一個(gè),否則加載相同 major 版本的最高 minor 版本;如果使用 -exact 選項(xiàng)。 在書(shū)寫(xiě)名稱時(shí)要注意與程序包中的聲明一致,
19、尤其是字母大小寫(xiě)。 腳本庫(kù)和程序包 與腳本庫(kù)和程序包相關(guān)的全局變量和過(guò)程與腳本庫(kù)和程序包相關(guān)的全局變量和過(guò)程 auto_path變量 :保存Tcl 腳本庫(kù)/程序包的搜索路徑 。 tcl_library變量 :存放著默認(rèn)的庫(kù)目錄 。 auto_index數(shù)組:auto_index是一個(gè)TCL數(shù)組(array),指明哪個(gè)命令在哪個(gè)tcl腳本里的對(duì)應(yīng)關(guān)系 。 tclPkgUnknown過(guò)程:對(duì)于auto_index里沒(méi)有指明的命令,TCL會(huì)調(diào)用tclPkgUnknown過(guò)程來(lái)查找 。 unknown過(guò)程:對(duì)于auto_index里沒(méi)有指明的命令,TCL會(huì)調(diào)用tclPkgUnknown過(guò)程來(lái)查找 。
20、init.tcl 文件:Tcl控制臺(tái)外殼利用init.tcl初始化它自身 。 培訓(xùn)內(nèi)容 命名空間 腳本庫(kù)和程序包 ITCLITCL ITCL簡(jiǎn)介 類(lèi)和對(duì)象變量和方法接口和實(shí)現(xiàn)的分離public、protected、private通用變量和過(guò)程重用:繼承重用:合成類(lèi)的固有(build-in)方法 ITCL和C擴(kuò)展ITCL ITCL簡(jiǎn)介ITCL是INCR TCL的縮寫(xiě),也稱TCL+,是TCL的一個(gè)重要擴(kuò)展,并和TCL完全兼容。ITCL支持面向?qū)ο蟮某绦蛟O(shè)計(jì)。 面向?qū)ο蟮木幊炭梢蕴岣哕浖赜玫某潭群托?,改善程序結(jié)構(gòu),這也是我們引入ITCL的原因。ITCL 類(lèi)和對(duì)象變量和方法在ITCL中,使用cla
21、ss命令可以定義一個(gè)新類(lèi),類(lèi)里面可以定義變量和方法,這里的變量和方法對(duì)應(yīng)于C+中類(lèi)的成員變量和成員函數(shù)。定義變量使用variable命令,這和名字空間中一樣。定義方法使用method命令。ITCL實(shí)例一:ITCL中定義的一個(gè)類(lèi)MyRand,其中的黑體字是關(guān)鍵字。class MyRand variable seed clock secondsvariable min 0variable max 100constructor low high puts The constructor of MyRand is called ,create object $thisset min $lowset m
22、ax $highdestructor puts The destructor of MyRand is called ,delete object $thismethod srand set seed clock secondsITCLmethod rand srand return expr $min+$seed%($max-$min)method setrange min max set min $minset max $maxmethod getrange options switch - $options -min return $min -max return $max error
23、bad option$optionsITCL 類(lèi)和對(duì)象變量和方法constructor和destructor命令用于生成類(lèi)的構(gòu)造函數(shù)和析構(gòu)函數(shù),和C+一樣,構(gòu)造函數(shù)在生成對(duì)象時(shí)自動(dòng)調(diào)用,析構(gòu)函數(shù)在銷(xiāo)毀對(duì)象時(shí)自動(dòng)調(diào)用,和C+一樣,ITCL的類(lèi)的構(gòu)造函數(shù)和析構(gòu)函數(shù)是可以缺省的。ITCL 類(lèi)和對(duì)象接口和實(shí)現(xiàn)的分離在ITCL中,方法的聲明和方法的實(shí)現(xiàn)是可以分離的,方法體不必寫(xiě)在ITCL的類(lèi)的聲明中使用body命令可以在類(lèi)的外部定義方法體,因?yàn)槭窃陬?lèi)的定義的外部,所以需要使用限定名,由于構(gòu)造函數(shù)和析構(gòu)函數(shù)的定義和別的方法不一樣,它們的函數(shù)體必須在類(lèi)的定義中,不過(guò)你可以在類(lèi)的定義中定義一個(gè)空體,然后利用b
24、ody命令在外面重新定義函數(shù)體。類(lèi)的聲明和實(shí)現(xiàn)分離,有助于實(shí)現(xiàn)交互式開(kāi)發(fā)ITCL實(shí)例二:class MyRand variable seed clock secondsvariable min 0variable max 100constructor low high puts The constructor of MyRand is called ,create object $thisset min $lowset max $highdestructor puts The destructor of MyRand is called ,delete object $thismethod s
25、rand method rand method setrange min max method getrange options ITCL實(shí)例二:body MyRand:srand set seed clock secondsbody MyRand:rand srand return expr $min+$seed%($max-$min)body MyRand:setrange min max set min $minset max $maxbody MyRand:getrange options switch - $options -min return $min -max return $
26、max error bad option$optionsITCL 類(lèi)和對(duì)象public、protected、privatepublic類(lèi)型的變量和方法可以在類(lèi)的外部被訪問(wèn),并且可以被子類(lèi)繼承;private和protected類(lèi)型的變量和方法則只能在類(lèi)內(nèi)部被訪問(wèn),protected類(lèi)型的變量和方法與private類(lèi)型的變量和方法的區(qū)別在于:前者可以被子類(lèi)繼承,后者則不能。缺省情況下,類(lèi)中的變量為private,方法為publicITCL中的每個(gè)類(lèi)都有兩個(gè)build-in方法:configure和cget,configure方法用來(lái)設(shè)置對(duì)象的屬性,而cget則用來(lái)獲取對(duì)象的屬性。ITCL 類(lèi)和對(duì)
27、象通用變量和過(guò)程在C+中,有一類(lèi)成員變量,它不屬于任何一個(gè)特定對(duì)象,但是卻被類(lèi)的所有對(duì)象共享,這種變量被稱為靜態(tài)數(shù)據(jù)成員靜態(tài)數(shù)據(jù)成員。在ITCL中,也提供類(lèi)似的變量,不過(guò)被稱為通用變量(common variable)。在C+中,有一類(lèi)成員函數(shù)屬于整個(gè)類(lèi),可以脫離類(lèi)的實(shí)例而存在,被稱為靜態(tài)成員函數(shù)靜態(tài)成員函數(shù)。ITCL中提供了類(lèi)似的功能,不過(guò)被稱為過(guò)程(procedure),可以用proc命令來(lái)聲明,一個(gè)過(guò)程屬于整個(gè)類(lèi),它可以在生成類(lèi)的實(shí)例之前使用。ITCL實(shí)例三:class MyRand private variable seed clock secondspublic variable m
28、in 0public variable max 100private common counter constructor args puts The constructor of MyRand is called ,create object $thisif !info exists counter set counter 0eval configure $argsincr counterdestructor puts The destructor of MyRand is called ,delete object $thisincr counter -1private method sr
29、and public method rand proc getcounter ITCL實(shí)例三:body MyRand:srand set seed clock secondsbody MyRand:rand srand return expr $min+$seed%($max-$min)body MyRand:getcounter return $counter對(duì)于通用變量和過(guò)程,可以直接使用限定名或完全限定名引用:% set MyRand:counter 00% MyRand:getcounter0ITCL 類(lèi)和對(duì)象重用:繼承單重繼承: public和protected類(lèi)型的變量和方法可以被子類(lèi)繼承;private類(lèi)型的變量和方法則不能被子類(lèi)繼承,父類(lèi)中方法可以在子類(lèi)中進(jìn)行重載。多重繼承: ITCL也提供多重繼承的機(jī)制 每個(gè)類(lèi)只能有一個(gè)inherit語(yǔ)句,不過(guò)可以聲明多個(gè)基類(lèi)。注意基類(lèi)必須按重要程度的先后排列,因?yàn)槿绻麅蓚€(gè)基類(lèi)具有相同名字的方法的話,在inherit中排在前面的類(lèi)的方法將被優(yōu)先繼承。ITCL繼承只需要在派生類(lèi)中用inh
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年超市季節(jié)性促銷(xiāo)員勞動(dòng)合同3篇
- 二零二五版智能家居砌墻裝修承包合同范本2篇
- 二零二五版3海上貨物運(yùn)輸合同-海上貨物運(yùn)輸事故處理及賠償協(xié)議2篇
- 二零二五版綜合性博士后研究人員聘用合同書(shū)3篇
- 二零二五版物聯(lián)網(wǎng)技術(shù)培訓(xùn)服務(wù)合同樣本2篇
- 二零二五年度版權(quán)買(mǎi)賣(mài)合同(圖書(shū))5篇
- 二零二五版勞動(dòng)合同法下社保購(gòu)買(mǎi)期限及權(quán)益保障協(xié)議3篇
- 二零二五年度餐廳線上線下融合推廣承包合同2篇
- 二零二五年網(wǎng)絡(luò)廣告投放合同封面素材2篇
- 二零二五版電影IP授權(quán)與贊助合同3篇
- 稅前工資反算表模板
- 廣東省深圳市2023年中考英語(yǔ)試題(含答案與解析)
- MOOC 電工學(xué)(電氣工程學(xué)概論)-天津大學(xué) 中國(guó)大學(xué)慕課答案
- 2019級(jí)水電站動(dòng)力設(shè)備專業(yè)三年制人才培養(yǎng)方案
- 室內(nèi)裝飾裝修施工組織設(shè)計(jì)方案
- 洗浴中心活動(dòng)方案
- 送電線路工程施工流程及組織措施
- 肝素誘導(dǎo)的血小板減少癥培訓(xùn)課件
- 韓國(guó)文化特征課件
- 抖音認(rèn)證承諾函
- 清潔劑知識(shí)培訓(xùn)課件
評(píng)論
0/150
提交評(píng)論