其他分享
首页 > 其他分享> > ADT类型和操作的分类

ADT类型和操作的分类

作者:互联网

  ADT依类型可以分类为mutable(可变数据类型)和immutable(不可变数据类型)。可变类型会提供可以改变内部数据的值的操作,比如常见的StringBuilder数据类型,其含有append()方法,可以改变其内部属性的值;不可变数据类型的操作则不能改变其内部值,而是构造一个新的该类型的对象,返回这个对象,比如:String类型不可变,其中的concat()连接方法,会构造一个新的对象,并使原来的声明变量指向这个新的对象。

可变数据类型StringBuilder:

 

 不可变数据类型String:

 

 

   ADT操作可分为:

Creator(构造器):t* → T。从无或者其他类型生成一个该类型对象,如Integer.valueOf()、toString()等;

Producer(生产器):T+, t* → T。从本类型的至少一个对象,可加上其他类型的对象,返回一个新的本类型对象,如BigInteger.mod()、String.toUpperCase()等;

Observer(观察器):T+, t* → t。从本类型的至少一个对象,可加上其他类型的对象,返回一个非本类型的对象,如Map.keySet()、Set.contains()等;

Mutator(变值器):T+, t* → void | t | T。从从本类型的至少一个对象,可加上其他类型的对象,返回一个任意类型对象或不返回,如List.addAll()、BufferedReader.readLine()等。

注意:

1. 不可变数据类型不可改变其内部值,故不会有mutator;

2. mutator通常返回void,因其直接改变属性的值,可以不用再返回值(并不是一定返回void,如Set.add()返回布尔值,表示是否添加成功)。

  另外,对ADT各种方法的测试一般都会不可避免地相互影响,对observer的测试需要调用其他三类方法来生成或者改变对象,对其他三类方法的测试也需要调用obsever来观察结果,这可能导致被测试方法的测试结果受到其他方法的影响。这也为我们设计测试用例提供了一个新的分类视角,比如针对obsever的测试可以依得到该观察对象的方式(另三类方法)来进行划分等价类。

 

标签:返回,ADT,对象,void,分类,数据类型,类型
来源: https://www.cnblogs.com/diguawan/p/16361652.html