在早期的面向对象语言中(如Simula),类型的定义是和方法的实现是混合在一起的。这种方式违反了今天已经被广泛认识到的把实现和规范(Specification) 分离的原则。这种分离得原则在开发是团队进行的时候尤其显得重要。
更一些的语言,通过引入不依赖于实现的对象类型来区分实现和规范。Modula-3以及其它如Java等的支持class和interface的语言都是采用的这种技术。
开始引入InstanceTypeOf(cell)时,它代表的概念相当有限。看上去,它似乎只表示用new cell生成的对象的类型,于是,并不能用它来表示从其它类new出来的对象。但后来,当引入了subclassing,method overriding,subsumption和dynamic dispatch之后,事情变得不那么简单了。的InstanceTypeOf(cell)已经可以用来表示从cell的子类new出来的对象,这些对象可以包括不是cell类定义的属性和方法。
如此看来,让InstanceTypeOf(cell)依赖于一个具体的类似乎是不合理的。实际上,一个InstanceTypeOf(cell)类型的对象不一定会跟classcell扯上任何关系。
它和cell类的唯一共同之处只是它具有了所有cell类定义的方法的签名(signature).
基于这种考虑,可以引入对象类型的语法。
这两个类型的定义包括了所有cell类和reCell类定义的属性和方法的类型,但却并不包括实现。这样,它们就可以被当作与实现细节无关的的接口以实现规范和实现的分离。两个完全无关的类c和c’,可以具有相同的类型Cell,而Cell类型的使用者不必关心它使用的是c类还是c’类。
----软件开发公司----
上一篇:汇编语言与机器语言
下一篇:没有了