在MATLAB中使用其他类访问方法

时间:2014-07-15 13:16:21

标签: matlab class oop object

我正在教自己如何使用MATLAB进行面向对象编程,并对访问有疑问。

我有三个当前需要互相交互的类。我称之为main的一个类是用户将与之交互的类(或者如果我构建一个类,则为gui)。 Main存储了使用可能需要的所有相关数据,并且具有一些方法来执行一些预处理和构造主对象。 Main还调用另外两个类的构造函数。

另一个类,我将其称为指令,加载有关处理数据的步骤的信息(这是一个递归过程)和一些其他信息。

最后一堂课,我称之为核心课程,执行该流程的核心操作。

这是我的问题所在。在主要内部,我有一些帮助"预处理中使用的方法。我希望对这些帮助程序方法的访问是私有的,以便用户无法查看或使用它们。其中一些辅助函数也需要由核心中的进程使用。我的问题是如何授予main中辅助函数的访问权限,以便只有主和核可以访问它们?我试图理解这里提供的信息:http://www.mathworks.com/help/matlab/matlab_oop/selective-access-to-class-methods.html,但当我尝试以下内容时:

classdef main < handle
%this is the main class
    properties
        core  %the core object
        instruction  %the instruction object
    end  %properties
    methods (Access = {?core,?main})
        ... %some code
    end  %methods
end  %class

Matlab给了我这个错误:

Illegal value for attribute 'Access'.
Parameter must be a string.

非常感谢任何帮助!

安德鲁

顺便说一句,我知道这里有三个不同的类是不必要的,但正如我所说,我只是学习面向对象的编程,当我开始这个项目时,我认为拥有多个类是个好主意,因为整个项目将是超过5000行代码。

2 个答案:

答案 0 :(得分:1)

您是否可以使用相对较旧版本的MATLAB?

在2012a版本中实现了对特定类访问类方法的能力。

如果您使用的是旧版本的MATLAB,则只能将方法访问属性设置为publicprotectedprivate

请注意,您链接到的文档页面始终引用当前版本的MATLAB(目前为2014a)。您也可以通过网站访问旧版本的文档,也可以登录您的MathWorks帐户。

如果main需要访问core的方法,则可能表明您的课堂关系设计不佳。如果core属于main的属性,那么它可能是core的方法,main可以通过core调用它。

答案 1 :(得分:1)

很少需要选择性访问。不使用它的主要原因是它破坏了OOP的封装原则。在实施之前,我会考虑改变你的设计。

有关更多信息,请查看C ++中的friend关键字。很可能你会发现很多关于它的信息,以及为什么不使用它。