OTCL,面向对象的脚本一
Otcl
简介
面向对象的脚本语言
类变量和类方法
Otcl的基类称为Object(类的名字,不是面向对象中的“对象”),所以的Otcl类都是从Object派送来的。
直接贴代码,命名为BOX.tcl
#定义“BOX”类
Class BOX
#类的构造函数用init表示;instproc表示这是一个类的方法
#“eval $self next”是显式地调用父类同名(init)方法,这是与C++的一点不同
#同时定义了一个类成员“lenght”,默认为5
BOX instproc init {} {
eval $self next
$self set lenght 5
}
#与C++的第二点不同,每个方法都需要重新声明类成员
#“$self instvar lenght ”既用来重新声明lenght变量
BOX instproc incr_lenght {} {
$self instvar lenght
incr lenght
puts "$lenght"
}
#类的析构函数用destroy表示,也需要显式地调用父类destroy方法
BOX instproc destroy {} {
puts "GoodBye!"
$self next
}
otclsh简单脚本测试
启动Otclsh:
root@: otclsh
%
#加载上面写的源代码
%source BOX.tcl
#创建一个实例
%BOX box1
box
#查看BOX类的实例,放回上一步创建的box1
%BOX info instances
box1
#查看box1的变量
%box1 info vars
lenght
#查看数值
%box1 set lenght
5
#调用自定义的incr_lenght函数
%box1 incr_lenght
6
#销毁box1对象
% box1 destroy
GoodBye!
#再调用函数就显示失败
% box1 incr_lenght
invalid command name "box1"

继承
修改BOX.tcl,增加一个BigBOX类
#定义BigBOX继承BOX
Class BigBOX -superclass BOX
#在基类BOX 类的init方法里增加一条输出"This is a BOX"
BigBOX instproc init {} {
eval $self next
puts "this is a BigBOX"
$self set lenght 5
}
BigBOX instproc destroy {} {
puts "GoodBye! BigBOX"
$self next
}
#重载incr_lenght方法,使其变为乘2,而不是加1
BigBOX instproc incr_lenght {} {
$self instvar lenght
set lenght [expr $lenght*2]
puts "$lenght"
}

OTCL,面向对象的脚本一的更多相关文章
- 【循序渐进学Python】7.面向对象的核心——类型(上)
我们知道Python是一门面向对象的脚本语言.从C#的角度来看:首先Python支持多继承.Python 类型成员通常都是public的,并且所有成员函数都是virtual的(可以直接重写). 1. ...
- Octopus系列之如何让前台的js脚本变得灵活重用
Octopus系列如何让前台的js脚本变得灵活,重用 方式1:ajax方式 方式2:form表单方式 面向对象的脚本封装 jQuery的封装 做Web开发的少不了前台Ajax的使用, 返回true:f ...
- 常用脚本语言Perl,Python,Ruby,Javascript一 Perl,Python,Ruby,Javascript
常用脚本语言Perl,Python,Ruby,Javascript一 Perl,Python,Ruby,Javascript Javascript现阶段还不适合用来做独立开发,它的天下还是在web应用 ...
- Perl,Python,Ruby,Javascript 四种脚本语言比较
Perl 为了选择一个合适的脚本语言学习,今天查了不少有关Perl,Python,Ruby,Javascript的东西,可是发现各大阵营的人都在吹捧自己喜欢的语言,不过最没有争议的应该是Javascr ...
- 工控随笔_13_西门子_WinCC的VBS脚本_04_变量类型之二
上一个随笔说了一些关于vbs变量类型的内容,这一篇我们继续说说变量类型相关的内容. 一.NULL补充内容 '需要注意的是,NULL不能简单通过 = 来进行比较,而必须通过 'IsNull函数来实现 ' ...
- 利用ngx_python模块嵌入到Python脚本
导读 Python是一种计算机程序设计语言.是一种动态的.面向对象的脚本语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发. ...
- 面向对象之php多态
php是面向对象的脚本语言,而我们都知道,面向对象的语言具有三大特性:封装,继承,多态(接口的多种不同的实现方式即为多态). 封装是类的构建过程,php具有.php也具有继承的特性.唯独这个多态,ph ...
- Python -面向对象(一 基本概念)
一 Python简单介绍 Python是一个可移植的面向对象的脚本语言. Python尽管是一个脚本语言,但也是一个全然面向对象的语言.由于它设计之初把易用性做为很重要的一个考量标准,所以用起来很简洁 ...
- golang 面向对象
深入理解GO语言的面向对象_Golang_脚本之家 https://www.jb51.net/article/94030.htm 深入理解GO语言的面向对象 更新时间:2016年10月04日 10:4 ...
随机推荐
- php生成带自定义logo和带二维码跳转自定义地址的二维码
index.php<?phpheader('Content-type:text/html;charset=UTF-8');// 指定允许其他域名访问header('Access-Control- ...
- TIDB数据集群部署
TIDB 数据库集群 一.TiDB数据介绍 1.1.TiDB数据简介 TiDB 是 PingCAP 公司设计的开源分布式 HTAP (Hybrid Transactional and Analytic ...
- python-docx操作word文件(*.docx)
目录 基础操作 对象关系 添加样式 中文字体微软雅黑,西文字体Times New Roman 首行缩进 单独设置标题样式 设置超链接 参考文档 基础操作 from docx import Docume ...
- react router animation example
https://github.com/reactjs/react-router/tree/80c71d57c936ed54babdde44309c01f6a4b56b77/examples/anima ...
- react canvas
http://engineering.flipboard.com/2015/02/mobile-web/
- 20155327 2017-2018-2 《Java程序设计》第一周学习总结
20155327 2017-2018-2 <Java程序设计>第一周学习总结 教材学习内容总结 三大平台: 1.Java SE:JVM,JRE,JDK,java语言 JVM:Java虚拟机 ...
- Noip前的大抱佛脚----数论
目录 数论 知识点 Exgcd 逆元 gcd 欧拉函数\(\varphi(x)\) CRT&EXCRT BSGS&EXBSGS FFT/NTT/MTT/FWT 组合公式 斯特林数 卡塔 ...
- PyQt5 笔记(01):嵌套布局
PyQt5 有四种布局:水平(QHBoxLayout).竖直(QVBoxLayout).网格(QGridLayout).表单(QFormLayout)在窗体中单一的布局应该不难,但若是比较复杂的布局, ...
- 4516: [Sdoi2016]生成魔咒
4516: [Sdoi2016]生成魔咒 链接 题意: 求本质不同的子串. 分析: 后缀数组或者SAM都可以. 考虑SAM中每个点的可以表示的子串是一个区间min(S)~max(S),把每个点的这个区 ...
- webstorm 使用svn
webstorm 支持bootstrap 的class支持,比如 .text-center. 第一步:首先下载安装SVN服务器VisualSVN:附下载链接 https://sliksvn.com/d ...