使用类中的二传手和二传手

  • 本文关键字:二传手 matlab
  • 更新时间 :
  • 英文 :


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

我想总的来说,我对类在 MATLAB 中的工作方式的概念可能是有缺陷的。

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

%Write data to file using the TestData Object
Avec = [some 1X13 double array]
myTestData=TestData; % Generate an instance of the object
myTestData.getData(Avec);

classdef TestData
properties (Access = private)
metaData   % stores meta data in Nx2 array
data       % stores data in PxQ array
colLabels  % labels columns
colUnits   % provides units
metaPrint  % used to print metaData
temp       % debugging purposes only
end
methods
%****************************************************************************%
%Function: TestData
%Purpose:  Constructor used to allocate data arrays
%****************************************************************************%
function this = TestData() %constructor
this.metaData   = [];
this.data       = [];
this.colLabels  = [];
this.colUnits   = [];
this.metaPrint  = [];
this.temp       = [];
end %TestData()     
%%
%****************************************************************************%
%Function:
%Inputs:
%Purpose:
%****************************************************************************%        
function this = getData(this, someArray)
????
end %getData

我认为你误解了getters和setters的想法。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 在他的评论中提到的那样,如果您将data设为私有的原因是控制用户如何访问和修改它,那么只需拥有 getter 和 setter 就足够了。您可以公开data属性访问方法,并且在访问对象(如Avec = myTestData.datamyTestData.data = Avec(时仍将调用您的属性访问方法。

相关内容

  • 没有找到相关文章

最新更新