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,面向对象的脚本一的更多相关文章

  1. 【循序渐进学Python】7.面向对象的核心——类型(上)

    我们知道Python是一门面向对象的脚本语言.从C#的角度来看:首先Python支持多继承.Python 类型成员通常都是public的,并且所有成员函数都是virtual的(可以直接重写). 1. ...

  2. Octopus系列之如何让前台的js脚本变得灵活重用

    Octopus系列如何让前台的js脚本变得灵活,重用 方式1:ajax方式 方式2:form表单方式 面向对象的脚本封装 jQuery的封装 做Web开发的少不了前台Ajax的使用, 返回true:f ...

  3. 常用脚本语言Perl,Python,Ruby,Javascript一 Perl,Python,Ruby,Javascript

    常用脚本语言Perl,Python,Ruby,Javascript一 Perl,Python,Ruby,Javascript Javascript现阶段还不适合用来做独立开发,它的天下还是在web应用 ...

  4. Perl,Python,Ruby,Javascript 四种脚本语言比较

    Perl 为了选择一个合适的脚本语言学习,今天查了不少有关Perl,Python,Ruby,Javascript的东西,可是发现各大阵营的人都在吹捧自己喜欢的语言,不过最没有争议的应该是Javascr ...

  5. 工控随笔_13_西门子_WinCC的VBS脚本_04_变量类型之二

    上一个随笔说了一些关于vbs变量类型的内容,这一篇我们继续说说变量类型相关的内容. 一.NULL补充内容 '需要注意的是,NULL不能简单通过 = 来进行比较,而必须通过 'IsNull函数来实现 ' ...

  6. 利用ngx_python模块嵌入到Python脚本

    导读 Python是一种计算机程序设计语言.是一种动态的.面向对象的脚本语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发. ...

  7. 面向对象之php多态

    php是面向对象的脚本语言,而我们都知道,面向对象的语言具有三大特性:封装,继承,多态(接口的多种不同的实现方式即为多态). 封装是类的构建过程,php具有.php也具有继承的特性.唯独这个多态,ph ...

  8. Python -面向对象(一 基本概念)

    一 Python简单介绍 Python是一个可移植的面向对象的脚本语言. Python尽管是一个脚本语言,但也是一个全然面向对象的语言.由于它设计之初把易用性做为很重要的一个考量标准,所以用起来很简洁 ...

  9. golang 面向对象

    深入理解GO语言的面向对象_Golang_脚本之家 https://www.jb51.net/article/94030.htm 深入理解GO语言的面向对象 更新时间:2016年10月04日 10:4 ...

随机推荐

  1. java.sql.SQLSyntaxErrorException: ORA-01722: 无效数字

    ### Error updating database. Cause: java.sql.SQLSyntaxErrorException: ORA-01722: 无效数字 ### The error ...

  2. GoogleTest初探(1)

    此篇主要了解一下GoogleTest中的断言. 总的来说,GoogleTest中的断言分为两大类:EXPECT_*和ASSERT_*,这两者在测试成功或失败后均会给出测试报告,区别是前者在测试失败后会 ...

  3. HTML5知识点汇总(1)

    HTML5 1.html5是什么 万维网的核心语言.标准通用标记语言下的一个应用超文本标记语言(HTML)的第五次重大修改.-------h5并不是一门新的语言,而是html语言的第五次修订. 2.h ...

  4. 如何使用cubemx 配置freertos,实时查看FreeRTOS任务列表和运行状态

    ---------------------------------------------------------------------------------------------------- ...

  5. 大数据入门第六天——HDFS详解

    一.概述 1.HDFS中的角色 Block数据: HDFS中的文件在物理上是分块存储(block),块的大小可以通过配置参数( dfs.blocksize)来规定,默认大小在hadoop2.x版本中是 ...

  6. OracleLinux安装说明

    磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面: PostgreSQL杂记页     回到顶级页面:PostgreSQL索引页 [作者 高健@博客园  luckyjackgao@gmail. ...

  7. 9.26 开课第二十三天 (JS表单验证)

    <form action="lizi1.html" method="post"> 非空验证 <input type="text&qu ...

  8. 9.22 下午 (document对象)

    document对象 1.找元素:(1)gerElementById()根据ID找   (2)gerElementByClassName()根据Class找,返回数组       (3)gerElem ...

  9. HBase数据访问的一些常用方式

    类型 特点 场合 优缺点分析 Native Java API 最常规和高效的访问方式 适合MapReduce作业并行批处理HBase表数据 Hbase Shell HBase的命令行工具,最简单的访问 ...

  10. 【BZOJ 2132】圈地计划 && 【7.22Test】计划

    两种版本的题面 Description 最近房地产商GDOI(Group of Dumbbells Or Idiots)从NOI(Nuts Old Idiots)手中得到了一块开发土地.据了解,这块土 ...