OOP中的对象和结构之间有什么区别?

Moh*_*mad 33 arrays oop struct terminology object

  • 结构的区别和对象是什么?
  • 何时以及为什么我们使用对象而不是结构?
  • 数组如何与两者不同,何时以及为什么我们使用数组而不是对象或结构?

我想知道每个人的目的是什么.

Tom*_*mmy 31

显然,你可以根据你的编程风格模糊区别,但通常结构是一个结构化的数据.对象是可以执行某种任务的主权实体.在大多数系统中,对象具有某种状态,因此在它们后面有一些结构化数据.然而,精心设计的类的主要功能之一是数据隐藏 - 确切地说,类实现它所做的任何事情都是不透明和不相关的.

由于类可用于表示经典数据结构(如数组,哈希映射,树等),因此您经常将它们视为结构化数据块中的各个事物.

数组是非结构化数据块.在许多编程语言中,数组中的每个单独的东西必须具有相同的基本类型(例如每个都是整数,每个都是字符串或类似)但在许多其他语言中却不是这样.

作为准则:

  • 使用数组作为放置大量没有其他固有结构或层次结构的东西的地方,例如"1月份的所有收据"或"我在丹麦购买的所有东西"
  • 使用结构化数据将几个离散的数据位组合成一个块,例如,您可能希望将x位置和y位置组合以描述一个点
  • 使用一个对象,在这个对象中,有一个特定的演员或事物可以为自己思考或行动

因此,对象的隐含目的是直接将任务与它们可以操作的数据相关联,并将它们全部捆绑在一起,以便系统的其他任何部分都不会干扰.遵循适当的面向对象设计原则可能首先需要遵守规则,但最终将大规模改进您的代码结构,从而有能力处理更大的项目并与其他人合作.


Don*_*nie 10

一般来说,对象带来了完整的面向对象的功能(方法,数据,虚函数,继承等),而结构只是有组织的内存.结构可能支持也可能不支持方法/函数,但它们通常不支持继承和其他完整的OOP功能.

请注意,我一般说来 ......个别语言可以自由地超出术语但是他们想要.

数组与OO无关.实际上,几乎每种语言都支持阵列.数组只是内存块,通常包含一系列类似的项目,通常可以索引.


Fir*_*aad 6

  • 结构的区别和对象是什么?

OOP中没有"struct"的概念.结构的定义取决于所使用的语言.例如,在C++类和结构中是相同的,但类成员默认是私有的,而struct成员是公共的以保持与C结构的兼容性.另一方面,在C#中,struct用于创建值类型,而class用于引用类型.C具有结构,而不是面向对象.

  • 何时以及为什么我们使用对象而不是结构?

这又取决于使用的语言.通常,结构用于表示POD(普通旧数据),这意味着它们不指定作用于数据的行为,主要用于表示记录而不是对象.这只是一个约定,并没有在C++中强制执行.

  • 数组如何与两者不同,何时以及为什么我们使用数组而不是对象或结构?

阵列非常不同.数组通常是由整数索引的元素的同类集合.结构是异构集合,其中元素按名称访问.您可以使用数组来表示相同类型的对象集合(例如颜色数组),同时使用结构来表示包含特定对象数据的记录(单个颜色为红色,绿色)和蓝色元素)


Mar*_*cus 5

简短答案:结构是值类型。类(对象)是引用类型。