zoukankan      html  css  js  c++  java
  • 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"
    }
    

  • 相关阅读:
    闭包
    laravel 控制器
    laravel 模板
    laravel 视图
    laravel 请求
    laravel 分页
    解决启动Apache遇到的问题Permission denied: AH00072: make_sock: could not bind to address 0.0.0.0:8888
    一张号称一篇程序覆盖Python基础的代码
    [转载]激活Navicat Premium
    C语言自定义函数的形参为数组时需要注意传入长度
  • 原文地址:https://www.cnblogs.com/sunminming/p/9184819.html
Copyright © 2011-2022 走看看