zoukankan      html  css  js  c++  java
  • SilkTest天龙八部系列5-类的属性

    SilkTest的面向对象机制让用户可以为类定义属性,用property语句实现。除此以外用户在类中还可以定义成员变量和不可变的setting属性。也就是是说Silktest类中可以有以下三种属性/变量被使用到:
    属性(用property申明)
    成员变量
    属性(用setting声明)

     

    用property语句定义的属性可以让用户方便地使用=号来设置和获取类的某些属性,这里的属性是指逻辑上的一些属性,用来表现类的某些特征,这些特征可能是动态变化的。例如在某个时间点,一个控件所包含的子控件个数(我们可以通过一个循环来遍历该控件来得到子控件的个数)又或者是一个页面上当前得到焦点的控件名等等。

    成员变量一般作为类的计算元素,或者是中间结果持有者,一般不用来直接表示复杂的逻辑内容。

    至于setting属性可以对类的一些系统属性进行控制,例如,一个类是否继承使用父类的tag,又或者是使用哪些父类的tag.

    值得注意的是property的声明是通过set和get两个函数实现的,所谓的逻辑也是在这两个函数中实现的。其中set只能有一个参数并且返回值是void,而get不能有参数,但是必须有返回值。set和get至少有一个要出现在property的声明中。

    另外setting的限制是只能在类中赋值,并且是不可更改的。

    下面是一个可以运行的例子: 最后一行的注释打开后会导致无法运行

    [-] winclass DemoDialog
    [ ] Integer iZ = 30
    [-] property iZPos
    [-] void Set(integer i)
    [ ] iZ = i
    [-] integer Get()
    [ ] return iZ
    [ ] setting iXPos = 10
    [ ] setting iYPos = 20
    [ ]
    [ ] window DemoDialog dd
    [ ]
    [-] testcase property_test()
    [ ] // test setting
    [ ] Print(dd.iXPos)
    [ ] Print(dd.iYPos)
    [ ] // test member variable
    [ ] Print(dd.iZ)
    [ ] // test property
    [ ] dd.iZPos = 50
    [ ] Integer iTemp = dd.iZPos
    [ ] Print(iTemp)
    [ ] // test member variable for class
    [ ] Print(DemoDialog().iZPos)
    [ ] Print(DemoDialog().iZ)
    [ ] // change setting is not allowed
    [ ] // dd.iXPos = 90

  • 相关阅读:
    window 编译lua 5.3
    邮件服务器软件
    mkyaffs2image 生成不了120M的镜像文件的解决方法
    C static struct
    uboot 如何向内核传递参数
    linux 链接理解
    snmp 协议之理解
    交叉编译知识点总结
    回滚原理 Since database connections are thread-local, this is thread-safe.
    REST 架构的替代方案 为什么说GraphQL是API的未来?
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3295295.html
Copyright © 2011-2022 走看看