2022年Otcl语法总结.docx

上传人:C****o 文档编号:12796616 上传时间:2022-04-26 格式:DOCX 页数:6 大小:50.09KB
返回 下载 相关 举报
2022年Otcl语法总结.docx_第1页
第1页 / 共6页
2022年Otcl语法总结.docx_第2页
第2页 / 共6页
点击查看更多>>
资源描述

《2022年Otcl语法总结.docx》由会员分享,可在线阅读,更多相关《2022年Otcl语法总结.docx(6页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、读书破万卷下笔如有神Otcl语法总结以下主要是在网上下载的高手总结的基础上,添加了一点自己的补充;Otcl 称为 Object Tcl,它是在 Tcl 的基础上做了一个面对对象的封装,是一种面对对象的脚本语言; 在 Tcl 中引入面对对象的机制, 使得 Tcl 功能更加强大和便利使用;在 Otcl 中,支持继承、封装和多态性等面对对象的概念,这点 与 C+,smallTalk等面对对象的语言类似,但编程的风格跟C+有很大的不同, 这可能使 C+程序员最开头感到并不习惯;1、 类的定义类的定义和创建一个实例:%Class Fruits; #创建一个类=Fruits%Fruits fruit; #

2、创建一个对象的实例=fruit%fruit info class=Fruits; #查看实例属于哪一个类%Fruits info instances; #查看对象拥有实例=fruit关键字 Class 用来创建一个 OTcl 对象;假如想定义一个类实例,就在对象名后面加实例变量名;info命令可以单看类与对象之间的从属关系;2、 构造函数与析构函数OTcl 同样供应构造函数和析构函数, 使类对象能够轻巧地被创建和撤销; 构造函数的主要功能是创建类对象,初始化其成员变量,析构函数撤销对象;在 OTcl 中,析构函数名并不需要同类名相同,一般通过调用init过程来实现类的构造函数,调用的 dest

3、ory过程完成类的析构;Safety instproc init ; #构造函数$self next; #显式调用父类的构造函数$self set count 0Safety instproc destroy ; #析构函数$self next在 OTcl 中,构造函数和析构函数不会自动调用父类的构造函数,必需显式调用父类的构造函数和析构函数;上例中命令$self next就是显式调用父类的构造函数,所以 $self next就调用父类的构造函数;同理,析构函数工作过程也是这样;3、 成员函数和成员函数的定义在 OTcl 中,成员变量比不需要事先定义,因此在成员函数需要使用它的时候,就可以在函

4、数体内定义;定义成员变量使用关键字instvar;在全部的成员函数中要使用已经声明白的成员变量必需使用instvar来重新声明,否就变量只是当作函数内局部变量;成员函数全部的成员变量都是基于public的;在 OTcl 中,采纳关键字 instproc来定义一个成员函数,成员函数的定义和参数的定义 与 Tcl 中相同,只需要在前面指定类名表示这个成员函数属于哪一个类;全部成员函数也是基于 public的;%Fruits instproc init args $self set instvar color 0;#初始化成员变量为 0 eval $self next $args上例中,定义了类 F

5、ruits 的一个 init 成员函数, 变量$self 表示对象本身,有点像 C+中的 this 指针; next 是指父类的同名方法,类似于 C+中的函数掩盖;%Fruits instproc show_color set color greenputs“the color of fruit is $color”%Fruits fruit%fruit set color; #查看成员变量 color的值=0%fruit show_color; #调用 Fruits的 show_color 方法the color of fruit is green%fruit set color=0; #仍

6、旧是 0,由于在 show_color 中定义的 color只#是局部变量;在类的成员函数中也可以使用局部变量,作用 域仅仅在成员函数中;4、 继承在OTcl 中全部成员函数和成员变量都是基于public属性的,这点并不像 C+ 等面对对象的程序设计语言的多重属性机制, 减小了编程的难度; 子类的对象可以继承和使用基类的全部成员函数和方法, 在 OTcl 中,关键字 superclass表示类的继承;%Class Fruits; #定义父类 Fruits Fruits instproc grow $self instvar weight incr weightif $weight 10 the

7、n puts stderr“it is mature.”return; #这里留意 return的用法与 C语言中的区分%Class Applesuperclass Fruits; #类 Apple 继承自 Fruits%Apple appleApple instproc init args eval $self next $args; #调用父类的构造函数%apple show_color; #实际调用的是父类的 show_color 函数=the color of fruit is green在 OTcl 中,也同样支持多重继承机制,继承关系满意有向无环图;Class Safety; #定

8、义类 SafetySafety instproc init ; #构造函数 $self next$self set count 0Safety instproc put thing ; #定义成员函数$self instvar count incr count$self next $thing; #显式调用父类的 put 函数Safety instproc get $self instvar count; #定义成员函数if $count = 0 then return empty. incr count -1$self next; #显式调用父类的 get 函数Class Stack; #定

9、义类 Stack Stack instproc init ; #构造函数$self next; #调用父类的构造函数$self set things; #显式调用父类的 set 函数Stack instproc put thing ; #定义成员函数$self instvar things; #定义成员变量set things concat list $thing $things return $thingStack instproc get ; #定义成员函数 get$self instvar thingsset top lindex $things 0set things lrange $

10、things 1 endreturn $topClass SafeStacksuperclass Safety Stack; #继承SafeStack ss put toast; #生成对象=toasts get; #调用成员函数put=toasts get; #调用成员函数get=empty.s destroy=; #析构函数上面的例子中,类 SafetyStack从类 Safety 和类 Stack 多重派生而来,继承次序是依据关键字 superclass后的类名排列次序,从左到右,即最左边最先 继承;类 SafeStack 第一继承了父类 Safety ,从而语句 s get 第一调用了

11、 Safety 的 get 函数,由于 Safety 中的 get 函数调用了 self next,也就是调用了更高一个类 Stack 的 get 函数;可以用 info命令查看类的继承关系:%SafeStack info heritage; #差看类 SsfeStack 的继承关系=Safety Stack Object在 OTcl 中,子类可以重写父类的成员函数,在成员函数中使用next 命令来掩盖父类中同名的成员函数;%Fruits instproc grow $self instvar weightif $weight = 5 & $weight in_apple%in_apple g

12、row%in_apple rename apple=apple%in_apple grow=infantility apple上例中,%in_apple rename返回传进来的参数 apple ;当再次调用 %in_apple grow,第一把父类中返回来的参数 infantility赋值给 t ,并在 t 后串接上 apple ,然后把整个字符串返回;OTCL是 ObjectTCL,引入了类和对象的概念;1) 类和对象的定义:关键字 Class ;如 Class Animal;Animal animal_1;可以通过 info命令查看类和对象之间的关系;例如: info+class查看类

13、、+instance查看对象 、+superclass查看父类 、+heritage查看继承树 2) 成员变量和函数的定义: Otcl 中定义成员函数采纳关键字 instproc,定义成员变量采纳关键字instvar;Otcl 中成员变量并不预先定义, 在成员函数中定义再使用,因此,当其他成员函数使用该变量时需重新申明;如Animal instproc run speed $self instvar speed_ set speed_ $speedputs Animal run with speed $speed_其中$self的含义和 C+中的 this类似3) 对象的初始化和销毁:采纳 i

14、nit函数来进行初始化, destroy函数来完成析构过程;如Animal instproc init args $self set speed_ 0 eval $self next $argsAnimal instproc destroy puts zap.$self next其中 next 函数的意义是父类中的同名函数4) 继承:用到 superclass关键字; Otcl 中成员函数和变量的属性均是public ,可以被子类继承; Otcl 中全部的类都继承自 Object 类或它的后代;Otcl 中子类也可以重写父类的成员函数; Otcl 中全部成员函数都是虚函数,并且子类的成员函数同样使用 next 关键字来调用父类被掩盖的函数;

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

当前位置:首页 > 教育专区 > 高考资料

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

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