Arrays 什么';OOP中对象和结构的区别是什么? 对象与结构的区别是什么 我们何时以及为什么使用对象而不是结构 数组与两者有何不同?我们何时以及为什么要使用数组而不是对象或结构

Arrays 什么';OOP中对象和结构的区别是什么? 对象与结构的区别是什么 我们何时以及为什么使用对象而不是结构 数组与两者有何不同?我们何时以及为什么要使用数组而不是对象或结构,arrays,oop,object,terminology,struct,Arrays,Oop,Object,Terminology,Struct,我想了解一下每个对象的用途。一般来说,对象带来了完整的面向对象功能(方法、数据、虚拟函数、继承等),而结构只是有组织的内存。结构可能支持也可能不支持方法/函数,但它们通常不支持继承和其他完整的OOP特性 请注意,我说一般来说。。。个别语言可以随意重载术语 数组与OO无关。事实上,几乎所有语言都支持数组。数组只是内存块,通常包含一系列类似的项,通常可以以某种方式进行索引。 在我看来,基本层次上的对象是一系列变量和操作这些变量的方法,而另一方面,结构只是一系列变量 当需要包含方法时,我使用对象,当我

我想了解一下每个对象的用途。

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

请注意,我说一般来说。。。个别语言可以随意重载术语

数组与OO无关。事实上,几乎所有语言都支持数组。数组只是内存块,通常包含一系列类似的项,通常可以以某种方式进行索引。

  • 在我看来,基本层次上的对象是一系列变量和操作这些变量的方法,而另一方面,结构只是一系列变量
  • 当需要包含方法时,我使用对象,当我只需要传递一组变量时,我使用结构
  • 数组和结构在原则上是类似的,它们都是一些变量。然而,编写myStruct.myVar比编写myArray更具可读性[4]。您可以使用枚举来指定数组索引以获取myArray[indexOfMyVar],并基本上获得与结构相同的功能
当然,你可以用常量或其他东西来代替变量,我只是想展示一下基本原理。

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

  • 我们何时以及为什么使用对象而不是结构
这同样取决于所使用的语言。通常,结构用于表示POD(普通的旧数据),这意味着它们不指定作用于数据的行为,主要用于表示记录而不是对象。这只是一个约定,在C++中没有执行。

  • 数组与两者有何不同, 我们什么时候以及为什么要使用 与对象或对象相对的数组 结构

数组是非常不同的。数组通常是由整数索引的元素的齐次集合。结构是按名称访问元素的异构集合。您可以使用数组表示相同类型的对象集合(例如颜色数组),而使用结构表示包含特定对象数据的记录(具有红色、绿色和蓝色元素的单一颜色)

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

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

由于类可以用来表示经典的数据结构,如数组、哈希映射、树等,因此您通常将它们视为结构化数据块中的单个对象

数组是非结构化数据块。在许多编程语言中,数组中的每一个单独的东西都必须是相同的基本类型(例如,每一个都是整数、每一个都是字符串或类似类型),但在许多其他语言中并非如此

作为指导方针:

  • 使用数组作为放置一大组没有其他固有结构或层次结构的东西的位置,例如“1月份的所有收据”或“我在丹麦买的所有东西”
  • 使用结构化数据将多个离散的数据位合成为单个块,例如,您可能希望结合x位置和y位置来描述点
  • 当某个特定的参与者或事物为自己思考或行动时,使用一个对象

因此,对象的隐含目的是直接将任务与它们可以操作的数据关联起来,并将这些数据捆绑在一起,以便系统的其他部分不会干扰。遵守适当的面向对象设计原则一开始可能需要规范,但最终将极大地改善您的代码结构,从而提高您处理大型项目和与他人合作的能力。

数组是(通常)相同类型的项的有序集合。项目可以通过索引访问。经典数组只允许整数索引,而现代语言通常提供所谓的关联数组(字典、散列等),允许使用字符串等作为索引

结构是“不同类型”的命名值(字段)的集合(例如,字段
a
存储整数值,字段
b
-字符串值等)。它们(a)将逻辑连接的值组合在一起,(b)通过隐藏细节简化代码更改(例如,更改结构布局不会影响使用此结构的函数的签名)。后者称为“封装”

理论上,对象是一个结构实例,它演示了响应发送的消息的一些行为(即,在大多数语言中,具有一些方法)。