数据类型与OOP对象进行比较

时间:2009-12-21 13:50:28

标签: oop object types

数据类型是一段代码吗?换句话说,是软件吗?我在谈论基本数据类型,如整数,字符等。如果是这样,那是否表明OOP编程中的对象是数据类型的扩展?也就是说,基本上,程序员是否在创建对象时将数据类型带到了另一个层次?

5 个答案:

答案 0 :(得分:2)

如果你准备好了一些真正的大脑食物,你应该看看今年的OOPSLA Onward!威廉库克的文章:On Understanding Data Abstraction, Revisited。他讨论了抽象数据类型和对象。

答案 1 :(得分:1)

数据类型是否是“一段代码”的问题:最终,是的。如果不是语言本身,则使用用于构建您正在编程的语言的语言。

关于“基本数据类型”:我认为你的意思是“原始类型”。什么是和不被认为是原始类型完全取决于您的编程语言。您提到了整数和字符,但这些在许多语言中都不存在。相当多的语言将所有类型的数字类型整合在一个数字类型中。有些语言区分有符号和无符号整数。缺少不同字符类型的语言可能会使用数字或单个字符串。

无论语言定义的是什么原始类型,都不能让“乌龟一直向下” - 语言总是有一些内置的“魔法”(数据类型,运算符),您可以在其上构建代码。有时,语言可能支持添加新类型,甚至更改内置类型。

关于“OOP中的对象作为数据类型的扩展”:我当然会将OOP语言中的类和接口视为 types 。但我猜他们说数据类型并不公正,因为他们也可以定义行为。并且OO类可能只定义静态方法,允许数据通过它而不保留数据本身。

此外,它取决于你所说的“延伸”。在许多OOP语言中,您确实可以通过继承扩展现有类,但可能无法扩展基元类型。最后,许多语言允许您通过组合定义新的数据类型。例如,C结构就是这样的复合类型。我永远不会将这样的结构称为其组成类型的扩展,它只是一种全新的类型。

我同意说某些语言有一个可扩展类型的系统:也就是说,它允许程序员创建自己的类型。但就像C结构所说明的那样,这并不局限于OO语言。

如果您对此主题感兴趣,可以在维基百科上阅读很多相关内容: http://en.wikipedia.org/wiki/Primitive_data_type http://en.wikipedia.org/wiki/Type_theory http://en.wikipedia.org/wiki/Type_system

答案 2 :(得分:1)

是的,这是代码。是的,它是软件。您可以将所有“基本”数据类型视为处理器内部位上发生的函数的抽象。要实现这种抽象需要程序员在某个地方 - 语言或编译器的程序员等。抽象与处理器中的电子化程度有多远取决于语言。例如,C#中的“基本”数据类型(如“整数”)实际上在内存中移动的方式相当复杂。例如,有一个名为“拳击”的概念,像C这样的语言没有。实现此功能需要程序员,因此,它是软件。

答案 3 :(得分:0)

根据webopedia的定义,它确实是软件。 我认为'扩展'不是正确的词,但你可以说(在一定的关注和正确的上下文中)所有对象都存在于基本数据类型之外。并且所有基本数据类型都存在于1和0之外。

答案 4 :(得分:0)

对象是实现抽象数据类型的一种方式(请参阅Abstract Data Type on WikiPedia获取正式定义),但数据抽象只是构成OOP的组件之一(参见Object-oriented programming language on Wikipedia)。其他重要的OOP组件是封装,继承和多态。

相关问题