当前位置: 首页 > 编程笔记 >

数据对象和结构

戚鸿
2023-03-14
本文向大家介绍数据对象和结构,包括了数据对象和结构的使用技巧和注意事项,需要的朋友参考一下

基本概念

数据结构被定义为仅用于保存数据的特殊类,即纯模型,例如汽车,孩子,动物,事件,员工,公司,客户...等。这些数据通常在其他类的开头声明或视为实例变量。

此类的方法不应执行任何实际的重要工作,否则数据结构类不再是数据结构!

因此,主要是方法是获取器和设置器(即访问器和更改器),通常是因为实例变量被视为私有变量。还有另一种观点:数据结构变量应该是公共的,可以直接从类的实例访问,但是私有变量的概念更好是有争议的。

  • 在这种情况下,数据结构类显示或公开其数据(变量),并且没有有意义(重要)的方法或功能。

  • 诸如MainActivity,ListAdapter,Calculator,Iterator之类的普通类(在此称为“对象”)隐藏其数据,并揭示或公开其对这些数据起作用的方法。

因此,我们有两种方法可以解决当前的问题,即以最纯粹的形式实现数据结构,同时构建另一个Object类以对其数据进行操作,或者,我们可以将模型类制作为Object类,从而将其隐藏数据,同时公开其方法,如以下示例所示

public class Square {
   public Point topLeft1;
   public double side1;
}
public class Rectangle {
   public Point topLeft1;
   public double height1;
   public double width1;
}
public class Circle {
   public Point center1;
   public double radius1;
}
public class Geometry {
   public final double PI = 3.141592653589793;
   public double area(Object shape) throws NoSuchShapeException {
   if (shape instanceof Square) {
      Square s = (Square)shape;
      return s.side1 x s.side1;
   }else if (shape instanceof Rectangle) {
      Rectangle r = (Rectangle)shape;
      return r.height1 x r.width1;
   }else if (shape instanceof Circle) {
      Circle c = (Circle)shape;
      return PI x c.radius1 x c.radius1; }
      throw new NoSuchShapeException(); }
}

在此解决方案中,形状被视为数据结构,而几何类被视为对象。

优势-如果我们需要添加更多方法,我们将仅在Geometry类中添加它们(这是应实施该解决方案的时间)。

缺点-如果我们需要添加更多的数据结构(即更多的形状),则必须在Geometry类中更改所有方法。

数据结构和对象之间的区别

  • 对象公开行为并隐藏数据。这使得在不更改现有行为的情况下添加新的对象变得很简单。这也使向现有对象添加新行为变得困难。

  • 数据结构显示或公开数据,并且没有重大行为。这使向现有数据结构中添加新行为变得简单,但使向现有功能中添加新数据结构变得困难。

 类似资料:
  • 对象和数据结构 使用 getters 和 setters JS 没有接口或类型,因此实现这一模式是很困难的,因为我们并没有类似 public 和 private 的关键词。 然而,使用 getters 和 setters 获取对象的数据远比直接使用点操作符具有优势。为什么呢? 当需要对获取的对象属性执行额外操作时。 执行 set 时可以增加规则对要变量的合法性进行判断。 封装了内部逻辑。 在存取时

  • 使用 getters 和 setters JavaScript 没有接口或类型, 所以坚持这个模式是非常困难的, 因为我们没有 public 和 private 关键字。 正因为如此, 使用 getters 和 setters 来访问对象上的数据比简单的在一个对象上查找属性要好得多。 “为什么?” 你可能会问, 好吧, 原因请看下面的列表: 当你想在获取一个对象属性的背后做更多的事情时, 你不需要

  • 四、数据结构:对象和数组 On two occasions I have been asked, ‘Pray, Mr. Babbage, if you put into the machine wrong figures, will the right answers come out?’ [...] I am not able rightly to apprehend the kind of c

  • 问题内容: 我一直在阅读《 清洁代码:敏捷软件技巧手册》 ,在第六章第95-98页中阐明了对象和数据结构之间的区别: 对象将其数据隐藏在抽象之后,并公开对该数据进行操作的函数。数据结构公开其数据,并且没有有意义的功能。 对象公开行为并隐藏数据。这使得在不更改现有行为的情况下添加新的对象变得容易。这也使得很难向现有对象添加新行为。 数据结构公开数据并且没有重大行为。这使向现有数据结构添加新行为变得容

  • 我的应用程序成功获取API数据并将其放入Redux状态树。 已传递到组件,但实际上我只能访问。例如,是可访问的。但是和,未定义。请问,我对使用API数据集的理解有什么问题? 组成部分 获取数据并发送动作的传奇。将数据放入Redux存储。 和MapStateTops 数据缩减器

  • 让Person是一个具有属性name、age和idNumber的类。我希望有一个“人”的集合,我希望能够以最有效的方式执行以下操作: 通过他们的ID号检索他们。 获取年龄的人的列表 我的想法是同时维护一个使用id作为键的Hashmap和两个使用age和name作为每个树映射键的树映射。 这是最好的方式吗