TCL编程高级教程ppt课件.ppt

上传人:飞****2 文档编号:82422530 上传时间:2023-03-25 格式:PPT 页数:55 大小:501KB
返回 下载 相关 举报
TCL编程高级教程ppt课件.ppt_第1页
第1页 / 共55页
TCL编程高级教程ppt课件.ppt_第2页
第2页 / 共55页
点击查看更多>>
资源描述

《TCL编程高级教程ppt课件.ppt》由会员分享,可在线阅读,更多相关《TCL编程高级教程ppt课件.ppt(55页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用TCL编程高级教程测试平台开发部 周健明 04245经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用培训内容命名空间脚本库和程序包ITCL经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用命名空间命名空间的基本概念命名空间概念定义命名空间示例限定命名名称解析输入命令输出命令命名空间的命令参考经营者提供商品或

2、者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用命名空间命名空间的基本概念 命名空间是一个命令与变量的集合。命名空间把命令和变量封装起来以确保它们不会干扰别的命名空间中的命令和变量。TCL已经有一个这样的集合,就是我们指的全局命名空间全局命名空间。全局命名空间将所有的全局变量和命令放在一起。命名空间也叫做名称空间、名称域、命名域 等。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用命名空间命名空间创建:用 namespace eval 命令创建一个

3、新的命名空间命名空间查询 如果要在命名空间XXX之外查询命名空间内部变量的值xxx,可以用如下语句:set:XXX:xxx 经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用命名空间命名空间示例1:用 namespace eval 命令创建一个新的命名空间:namespace eval Counter namespace export bump variable num 0 proc bump variable num incr num set:Counter:num:Counter:bump 经营者提供商品或者服

4、务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用命名空间命名空间示例2:命名空间是动态的。你可以在任何时候添加、删除命令和变量:namespace eval Counter variable num 0 proc bump variable num return incr num 经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用命名空间命名空间示例2:命名空间是动态的。你可以在任何时候添加、删除命令和变量:namespace eval Counter

5、proc test args return$args namespace eval Counter rename test test过程先被加到Counter命名空间中,稍后又被rename命令移除了 经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用命名空间命名空间示例3:命名空间里面可以拥有其它的命名空间形成一个嵌套的分层目录结构。namespace eval Foo variable fooVar 0.namespace eval Counter namespace export bump variable

6、num 0 proc bump variable num incr num 经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用命名空间命名空间示例3:现在如果在Foo之外访问num就要把Foo也加入到限定命名中:set:Foo:Counter:num 而在Foo内部访问num就只需要用:set Counter:num set:Foo:Counter:num 经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用命名空间限定命名 限定命名又叫

7、限定名称、资格命名或资格名称,英文原名为qualified names 每一个命名空间有一个原始的名称诸如histroy或:safe:interp。由于命名空间可能嵌套,限定命名被用来表示命令、变量、子命名空间。限定命名跟Unix的路径或TK部件(widgets)的分层目录结构类似,只是命名空间的限定命名使用:作为分隔符而不是/或.而已。最顶层或全局的命名空间的名称是空(如:空字符串),在形式上与:同义。如果你想访问另一个命名空间中的命令和变量,你必须使用额外的语法结构,使用命名空间的限定命名。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者

8、购买商品的价款或接受服务的费用命名空间限定命名 除了全局命名空间外,命名空间的命名都不为空。除了作为命名空间的分隔符外,:也不被简单的命令、变量、命名空间命名接受。在限定命名尾部的:表示该命名空间变量或命令的命名是,因此在限定命名空间名称尾部的:会被忽略。另外,在限定命名中单个的:将被看作单个的字符,而2个或更多的单个:将被当作一个命名空间分隔符看待。例如: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个:,c与

9、x之间的4个:都被当作一个:看待 set:aa:bb:c:x;#将出错,因为b与c之间的1个:被当作普通的字符看待,但并没有定义:a:bb这样的命名空间,所以要小心!:aa:bb表示的是命名空间aa下的命名空间bb,而:aa:bb表示的是命名空间aa:bb。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用命名空间名称解析 一般来说,所有的TCL命令都支持变量和命令的限定命名。也就是说你可以在 set、proc、rename、interp alias 等命令中使用限定命名。如果你提供以:开头的完整限定命名,则可以精

10、确地找到你指的命令、变量或命名空间。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用命名空间名称解析 如果命名不是以:开头的,则意味着相对路径的命名,TCL提供如下的名称解析策略:首先在当前命名空间中查找,如果没有才在全局命名空间查找。如果在当前命名空间和全局命名空间都没找到,则该命名尚未定义。例1:set traceLevel 0 namespace eval Debug printTrace$traceLevel TCL首先在命名空间Debug中查找traceLevel,然后是全局命名空间。经营者提供商品或者

11、服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用命名空间名称解析 例2:set traceLevel 0 namespace eval Foo variable traceLevel 3 namespace eval Debug printTrace$traceLevel TCL首先在命名空间 Foo:Debug 中查找 traceLevel,因为没找到,所以就到全局命名空间中查找。在命名空间Foo中定义的变量 Foo:traceLevel 既不是当前命名空间Foo:Debug中的变量,也不是全局命名空间中的变量,因此在名称解析的

12、过程中被完全忽略了。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用命名空间输入命令和输出命令 命名空间常常用来描述库,需要频繁使用命名空间前缀,用输入命令和输出命令可以省略命令前面的命名空间前缀。输入命令:namespace import 输出命令:namespace export经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用命名空间输入命令 namespace import 命令只输入命名空间中用namespace expor

13、t命令输出的命令如果不再需要使用已经输入的命令,可以使用namespace forget 示例:namespace import Blt:graph Blt:table 就只输入graph和table命令到当前上下文中。用namespace forget命令来移除:namespace forget Blt:*。当你在输出命名空间中删除一个命令时(如:rename Blt:graph),该命令也自动从所有输入它的命名空间中移除。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用命名空间输出命令 在命令空间中输出命令,

14、用namespace export命令声明要输出的命令:namespace export xxx namespace export 命令指明了哪些命令可以被其他命名空间输入。namespace import 命令只输入那些在命名空间中明确定义为输出的命令。如果namespace import命令指定了一个没有输出的命令,该命令不会被输入。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用命名空间命名空间的命令参考:namespace命令:命令与变量的上下文创建和维护是通过namespace命令来进行的 命名空间的创

15、建和删除 命名空间的环境抓取和脚本执行 命名空间的输入和输出 命名空间信息查询 限定命名操作经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用命名空间命名空间的其他相关命令:variable命令:variable命令用于创建和初始化一个命名空间的变量 glob-style(glob样式):glob本身是使用通配符查找符合特定pattern的文件名的命令,而glob-style(样式)的就是指使用与glob语法相同的通配符进行模糊查找的匹配方式。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的

16、损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用培训内容命名空间脚本库和程序包ITCL经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用脚本库和程序包脚本库 什么是脚本库创建和调用脚本库 脚本库的优缺点 程序包 什么是程序包创建程序包索引文件pkgIndex.tcl 使用程序包 与脚本库和程序包相关的全局变量和过程 经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用脚本库和程序包脚本库 Q:什么是脚本库?A:TCL中提供了Li

17、brary来存放一些有用的TCL过程的集合,就是脚本库。使用脚本库的好处是应用程序可以由一个较短的主程序、一个或多个支持库组成,这样应用程序加载时只加载主程序,而支持库中的过程会在使用时才加载,可以缩短整个应用程序的加载时间。脚本库的另一个好处是可以供多个应用程序使用,这样也可以提高程序的共享和复用。另外,脚本库还提供自动加载机制。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用脚本库和程序包创建脚本库:STEP:创建脚本库只需以下两步:第一,创建脚本文件。第二步,为自动加载创建索引文件。在TCL解释器(如tcl

18、sh或wish)中,执行命令:auto_mkindex .经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用脚本库和程序包调用脚本库:在脚本库及其tclIndex文件被创建后,只需要把脚本库的路径添加到TCL的全局变量 auto_path 中即可,以后就可以自由引用脚本库中的过程。TCL会自动搜索 auto_path 每个路径下的 tclIndex 文件来确定要调用的过程在哪里。一般使用 lappend 命令将路径添加到 auto_path 中,例如:%lappend auto_path c:/tcllib/lib

19、1 C:/DEVELOP/TCL/lib/tcl8.3 C:/DEVELOP/TCL/lib C:/DEVELOP/TCL/lib/tk8.3 c:/tcllib/lib1 如果一个函数在几个脚本库中都有定义的话,TCL会按照搜索顺序自动加载在 auto_path 中位置靠前的那个库。因此,如果加载的脚本库要先被搜索的话,可以使用 linsert 命令将其插入到 auto_path 中靠前的位置中,例如:%set auto_path linsert$auto_path 0 c:/tcllib/lib1 c:/tcllib/lib1 C:/DEVELOP/TCL/lib/tcl8.3 C:/DE

20、VELOP/TCL/lib C:/DEVELOP/TCL/lib/tk8.3 经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用脚本库和程序包脚本库的优缺点优点:脚本库的方法从TCL 的最早版本开始就支持,不存在兼容性问题,很多现有的公共脚本就是使用脚本库创建的。由于通过把路径添加到 auto_path 变量中来实现对脚本库的定位,因此脚本库可以存放在任何位置,没有路径限制。缺点:不支持版本号,不便于脚本库的更新和维护。由于脚本库只能用TCL语言编写,能够实现的功能有限。另外,每个脚本库的路径都要添加到 auto_

21、path 变量中也比较烦琐。为解决上述问题和进一步提高TCL 的扩展能力,较新版本的TCL提供了更好的程序包机制。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用脚本库和程序包程序包Q:什么是程序包?A:由于脚本库的局限性,TCL提供了更好的 package 机制来实现对TCL的共用和扩展,也就是程序包。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用脚本库和程序包创建TCL程序包:把你想包含在某个包中的所有自定义过程放到一个TCL

22、脚本文件中,然后在文件的开头使用 package provide 命令指明这个包的名字和版本即可。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用脚本库和程序包创建二进制程序包:用TCL编写的程序包,功能仍然有限,因此TCL还特别支持二进制程序包。这样,就可以用C/C+语言编写TCL扩展命令了,充分利用Windows或UNIX系统提供的强大 API 功能。二进制程序包实际上就是由系统平台所支持的编译后的可执行代码共享库。根据当前系统平台的不同,二进制程序包的文件后缀也不一样。在 UNIX 上二进制程序包的后缀是.

23、so,在 Macintosh 上是.shlib,而在 Windows 上就是我们所熟悉的动态连接库.dll。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用脚本库和程序包索引文件 pkgIndex.tcl生成索引文件 pkgIndex.tcl自动生成 pkgIndex.tcl 文件的命令:pkg_mkIndex。pkg_mkIndex-lazy-load -verbose .经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用脚本库和程

24、序包如何使用程序包如何使用程序包:使用某一个程序包时,可以调用 package require 命令,该命令对TCL和二进制的程序包都适用。命令格式:package require -exact 参数 name 是程序包的名字,也就是在 TCL中用 package provide 命令、在 DLL 中用 Tcl_PkgProvide 函数指定的名称。参数 version 是版本号,格式为 major.minor,其中major 是主版本号,minor是次版本号,两者用小数点隔开。如果省略version,则加载当前能找到了名称叫 name 的程序包中版本最高的那一个,否则加载相同 major 版

25、本的最高 minor 版本;如果使用-exact 选项。在书写名称时要注意与程序包中的声明一致,尤其是字母大小写。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用脚本库和程序包与脚本库和程序包相关的全局变量和过程与脚本库和程序包相关的全局变量和过程auto_path变量:保存Tcl 脚本库/程序包的搜索路径。tcl_library变量:存放着默认的库目录。auto_index数组:auto_index是一个TCL数组(array),指明哪个命令在哪个tcl脚本里的对应关系。tclPkgUnknown过程:对于au

26、to_index里没有指明的命令,TCL会调用tclPkgUnknown过程来查找。unknown过程:对于auto_index里没有指明的命令,TCL会调用tclPkgUnknown过程来查找。init.tcl 文件:Tcl控制台外壳利用init.tcl初始化它自身。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用培训内容命名空间脚本库和程序包ITCL经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用ITCLITCL简介类和对象变量

27、和方法接口和实现的分离public、protected、private通用变量和过程重用:继承重用:合成类的固有(build-in)方法ITCL和C扩展经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用ITCLITCL简介ITCL是INCR TCL的缩写,也称TCL+,是TCL的一个重要扩展,并和TCL完全兼容。ITCL支持面向对象的程序设计。面向对象的编程可以提高软件重用的程度和效率,改善程序结构,这也是我们引入ITCL的原因。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿

28、的金额为消费者购买商品的价款或接受服务的费用ITCL类和对象变量和方法在ITCL中,使用class命令可以定义一个新类,类里面可以定义变量和方法,这里的变量和方法对应于C+中类的成员变量和成员函数。定义变量使用variable命令,这和名字空间中一样。定义方法使用method命令。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用ITCL实例一:ITCL中定义的一个类MyRand,其中的黑体字是关键字。class MyRand variable seed clock secondsvariable min 0var

29、iable 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 srand set seed clock seconds经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用ITCLmethod rand

30、 srand return expr$min+$seed%($max-$min)method setrange min max set min$minset max$max method getrange options switch-$options-min return$min-max return$max error bad option$options经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用ITCL类和对象变量和方法constructor和destructor命令用于生成类的构造函数和析构函数,和

31、C+一样,构造函数在生成对象时自动调用,析构函数在销毁对象时自动调用,和C+一样,ITCL的类的构造函数和析构函数是可以缺省的。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用ITCL类和对象接口和实现的分离在ITCL中,方法的声明和方法的实现是可以分离的,方法体不必写在ITCL的类的声明中使用body命令可以在类的外部定义方法体,因为是在类的定义的外部,所以需要使用限定名,由于构造函数和析构函数的定义和别的方法不一样,它们的函数体必须在类的定义中,不过你可以在类的定义中定义一个空体,然后利用body命令在外面重

32、新定义函数体。类的声明和实现分离,有助于实现交互式开发经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用ITCL实例二: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 destruc

33、tor of MyRand is called,delete object$thismethod srand method rand method setrange min max method getrange options 经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用ITCL实例二:body MyRand:srand set seed clock secondsbody MyRand:rand srand return expr$min+$seed%($max-$min)body MyRand:setr

34、ange min max set min$minset max$max body MyRand:getrange options switch-$options-min return$min-max return$max error bad option$options经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用ITCL类和对象public、protected、privatepublic类型的变量和方法可以在类的外部被访问,并且可以被子类继承;private和protected类型的变量和方法则只能在类内部被

35、访问,protected类型的变量和方法与private类型的变量和方法的区别在于:前者可以被子类继承,后者则不能。缺省情况下,类中的变量为private,方法为publicITCL中的每个类都有两个build-in方法:configure和cget,configure方法用来设置对象的属性,而cget则用来获取对象的属性。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用ITCL类和对象通用变量和过程在C+中,有一类成员变量,它不属于任何一个特定对象,但是却被类的所有对象共享,这种变量被称为静态数据成员静态数据成

36、员。在ITCL中,也提供类似的变量,不过被称为通用变量(common variable)。在C+中,有一类成员函数属于整个类,可以脱离类的实例而存在,被称为静态成员函数静态成员函数。ITCL中提供了类似的功能,不过被称为过程(procedure),可以用proc命令来声明,一个过程属于整个类,它可以在生成类的实例之前使用。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用ITCL实例三:class MyRand private variable seed clock secondspublic variable m

37、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 srand pu

38、blic method rand proc getcounter 经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用ITCL实例三:body MyRand:srand set seed clock seconds body MyRand:rand srand return expr$min+$seed%($max-$min)body MyRand:getcounter return$counter对于通用变量和过程,可以直接使用限定名或完全限定名引用:%set MyRand:counter 00%MyRand:ge

39、tcounter0经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用ITCL类和对象重用:继承单重继承:public和protected类型的变量和方法可以被子类继承;private类型的变量和方法则不能被子类继承,父类中方法可以在子类中进行重载。多重继承:ITCL也提供多重继承的机制 每个类只能有一个inherit语句,不过可以声明多个基类。注意基类必须按重要程度的先后排列,因为如果两个基类具有相同名字的方法的话,在inherit中排在前面的类的方法将被优先继承。经营者提供商品或者服务有欺诈行为的,应当按照消费者

40、的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用ITCL继承只需要在派生类中用inherit命令声明从哪个类继承就可以了。实例四:class person public variable id protected variable age constructor idvar agevar set id$idvar set age$agevarpublic method live public method energy private method food 经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买

41、商品的价款或接受服务的费用ITCL实例四:body person:live energyputs class person,method live is calledbody person:energy food puts class person,method energy is calledbody person:food puts class person,method food is called经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用ITCL实例四:class robot inherit per

42、sonpublic variable owner constructor idvar agevar args person:constructor$idvar$agevar eval configure$argspublic method energy private method eletricity body robot:energy eletricityputs class robot,method energy is calledbody robot:eletricity puts class robot,method eletricity is called经营者提供商品或者服务有欺

43、诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用ITCL类和对象重用:合成 和继承相对,C+中重用一个类的代码的另一种方法是合成,即在一个类中包含另一个类的对象,继承是一种 is-a 关系,而合成是 has-a 关系。ITCL中也一样可以使用合成。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用ITCL类和对象类的固有(build-in)方法 我们每定义一个ITCL的类,ITCL会自动为我们的类添加几个固有的方法,前面已经介绍的有configure和cget,这里就不再介绍,另外两个就是isa方法和info方法。经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用ITCLITCL和C扩展 ITCL支持扩展,这里介绍两种情况:类中的方法使用C/C+实现,把类对象作为扩展命令的参数。谢 谢 !经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用经营者提供商品或者服务有欺诈行为的,应当按照消费者的要求增加赔偿其受到的损失,增加赔偿的金额为消费者购买商品的价款或接受服务的费用

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁