📜  MATLAB 中的类和对象

📅  最后修改于: 2022-05-13 01:55:31.661000             🧑  作者: Mango

MATLAB 中的类和对象

类是定义变量和方法的蓝图,这些变量和方法为其相应的对象提供了共同共享的基础。它定义了一个对象,用于封装数据和对该数据执行的操作。 classdef是用于定义 MATLAB 类的关键字。

定义类的语法:

classdef (Attributes) ClassName < SuperclassName

properties (Attributes)  
    PropertyName
    PropertyName size class {validation functions}
 end  
 
 methods (Attributes)  
    function obj = methodName(obj,arg2,...)
       ...
    end
    
 end
 
 events (Attributes)  
    EventName
 end
 
end

MATLAB 类的组成部分:

MATLAB 类具有三个主要组件(它们是用于查询给定对象或类名的相应类成员的 MATLAB 函数):

  • 属性块:定义为类的每个对象存储数据的属性。
  • 方法块:包含一组函数,这些函数定义了可以在类的每个对象上执行的操作。
  • 事件块:定义当对象发生变化时对象将发送到应用程序其他部分的消息。

这是一个 MATLAB 类的示例,

SimpleClass 定义了一个属性和两个对该属性中的数据进行操作的方法:



Matlab
classdef SimpleClass
   properties
      Value {mustBeNumeric}
   end
     
   methods
      function R = roundOff(object)
         R = round([object.Value],2);
      end
        
      function R = DivideBy(object,n)
         R = [object.Value] / n;
      end
        
   end
end


Matlab
a = SimpleClass


Matlab
a.Value = pi;


Matlab
a.Value


Matlab
roundOff(a)


Matlab
DivideBy(a,3)


Matlab
a.DivideBy(3)


Matlab
classdef SimpleClass
   properties
      Value {mustBeNumeric}
   end
     
   methods
       function obj = SimpleClass(val)
           if nargin == 1
               obj.Value = val;
           end
             
       end
   end
end


Matlab
a = SimpleClass(pi/3)


在上面的例子中:

  • 保存存储在类对象中的数字数据的属性。
  • roundOff 将属性值四舍五入到小数点后两位的方法。
  • DivideBy 将属性值乘以指定数字的方法。

要使用该类:

  • 使用与类相同的名称保存类定义,文件的扩展名保持为 (.m)。
  • 创建类的对象。
  • 访问属性以分配数据并调用方法对数据执行操作。

对象

与任何其他编程语言类似,MATLAB 中的对象是它们各自类的实例。在 MATLAB 中,可以通过两种方式创建类的对象:

使用类名创建类的对象

创建对象:下面是创建上述类的对象的脚本。

MATLAB

a = SimpleClass
a =  
SimpleClass with properties:
Value: []

最初,属性值为空。

访问属性:使用对象变量和属性名称前的一个点,我们可以为 Value 属性赋值:



MATLAB

a.Value = pi;

如果我们在没有赋值的情况下使用点表示法,则返回属性值:

MATLAB

a.Value

输出:

ans =
   3.1416

调用方法:调用对象 a 上的 roundOff 方法:

MATLAB

roundOff(a)

输出:

ans =
   3.1400

将对象作为第一个参数传递给采用多个参数的方法,如对DivideBy方法的调用:

MATLAB

DivideBy(a,3)

输出:



ans =
   1.0472

也可以使用点表示法调用该方法:

MATLAB

a.DivideBy(3)

输出:

ans =
   1.0472

使用点表示法时,不强制将对象作为参数显式传递。

使用构造函数创建对象

我们还可以使用类构造函数创建一个对象(或一个对象数组)。构造函数方法使我们能够将参数传递给构造函数,您可以将其分配为属性值。 mustBeNumeric函数限制 SimpleClass Value 属性的可能值。构造函数的调用方式与任何 MATLAB函数。您可以像普通 MATLAB 函数一样访问对象属性和调用对象方法。

这是SimpleClass类的构造函数。当使用输入参数调用构造函数时,会将其分配给 Value 属性,但如果在没有输入参数的情况下调用它,则它的默认值为空 ([])。

MATLAB

classdef SimpleClass
   properties
      Value {mustBeNumeric}
   end
     
   methods
       function obj = SimpleClass(val)
           if nargin == 1
               obj.Value = val;
           end
             
       end
   end
end

我们可以通过在类定义中添加一个构造函数来一步创建一个对象并设置属性值:

MATLAB

a = SimpleClass(pi/3)

输出:

a =  
 SimpleClass with properties:
Value: 1.0472

构造函数还用于执行与创建类的对象相关的操作。

注意: MATLAB 对象相对于其他语言具有独特的功能。例如,您可以随时修改一个类,该类的对象会立即更新。在 MATLAB 中管理对象的生命周期不需要任何显式的内存分配或释放。

在 MATLAB 中创建SimpleClass类的对象的快照: