使用类中的设置器和获取器

时间:2018-10-24 18:49:27

标签: matlab

我有一个名为TestData的类,其中包含一个称为data的私有属性,该属性定义为数字数组。它的目标是从其他.m个文件中提取数据,然后提取数据并将其以指定的格式(数字数组)放置。因此,我目前正在使用的random_data.m文件会吐出1X13双重数组Avec。我生成类myTestData = TestData()的实例;但是,由于成员变量是私有的,因此我需要具有getDatasetData函数。我必须将Avec传递到getData(例如myTestData.getData(Avec))中,然后将其存储在一个临时数组中,然后setData可以使用它写入{{1} };但是我觉得这是一种不好的做法,因为该数组需要公开。另外,将整个数组传入还是应该单独传入每个元素是否有意义,我想让它将数据检查到确保其格式正确。

我通常认为我在MATLAB中如何使用类的概念可能存在缺陷。

感谢您的提前帮助,如果我能提供其他帮助,请告诉我。下面是一些代码。该类上方的第一个代码段来自单独的data文件。

.m

1 个答案:

答案 0 :(得分:3)

我认为您误会了吸气剂和吸气剂的概念。 get函数用于从对象中获取 并将其返回,而setter设计用于将对象放入对象的属性。您会想要类似的东西:

function data = getData(this)
  data = this.data;
  % Do any processing to put data into a different format for output
end

function this = setData(this, data)
  % Check the data input to make sure it is the right format, etc.
  this.data = data;
end

您可能还希望将setData设计为采用不同类型的参数,例如可以用来加载矩阵本身的文件名。您还可以将构造函数设计为接受矩阵或文件名,并同时初始化data

另外,像Cris alludes to in his comment一样,如果将data设为私有的原因是为了控制用户访问和修改它的方式,那么只需要使用getter和setter就足够了。您可以将data公开,访问Avec = myTestData.datamyTestData.data = Avec之类的对象时,您的property access methods仍会被调用。