主要内容

创建一个简单的类

设计类

类的基本目的是定义一个对象,该对象封装数据和在该数据上执行的操作。例如,BasicClass定义一个属性和两个对该属性中的数据进行操作的方法:

  • 价值-包含存储在类对象中的数字数据的属性

  • 舍入—将属性值舍入到小数点后两位的方法

  • multiplyBy—将属性的值乘以指定的数字的方法

以下是定义BasicClass

classdefBasicClass属性价值{mustBeNumeric}结束方法函数r = round([obj. value],2);结束函数r = multiplyBy(obj,n)值]* n;结束结束结束

有关类语法的摘要,请参见classdef

使用该类:

  • 将类定义保存在.m与类同名的文件。

  • 创建类的对象。

  • 访问属性来分配数据。

  • 调用方法对数据执行操作。

创建对象

使用类名创建类的对象:

一个= BasicClass
a = BasicClass with properties: Value: []

最初,属性值是空的。

访问属性

赋值给价值属性使用对象变量,并在属性名前加一个圆点:

a.Value =π/ 3;

若要返回一个属性值,请使用不带赋值的点表示法:

a.Value
ans = 1.0472

有关类属性的信息,请参见属性的语法

调用方法

调用舍入方法对象一个

舍入(a)
ans = 1.0500

将对象作为第一个参数传递给接受多个参数的方法,如对multiplyBy方法:

multiplyBy (3)
ans = 3.1416

你也可以使用点符号来调用一个方法:

a.multiplyBy (3)

当使用点表示法时,没有必要将对象显式地作为参数传递。符号使用点和方法名左边的对象。

有关类方法的信息,请参见定义类方法和函数

添加构造函数

类可以定义一个特殊的方法来创建类的对象,称为构造函数。构造函数方法使您能够将参数传递给构造函数,您可以将其作为属性值赋值。的BasicClass价值属性使用mustBeNumeric函数。

的构造函数BasicClass类。使用输入参数调用构造函数时,它被赋值给价值财产。如果不带输入参数调用构造函数,则价值属性的默认值为空([]).

方法obj = BasicClass(val) if nargin == 1值= val;结束结束结束

通过将此构造函数添加到类定义中,您可以一步创建一个对象并设置属性值:

一个= BasicClass(π/ 3)
a = BasicClass的属性:值:1.0472

构造函数可以执行与创建类对象相关的其他操作。

有关构造函数的信息,请参见类的构造函数方法

Vectorize方法

MATLAB®使您能够向量化操作。例如,你可以向一个向量添加一个数字:

[1 2 3] + 2
5 .答案:a

MATLAB将数字相加2指向数组中的每个元素(1 2 3).要向算术运算符方法向量化,请将obj。价值括号中的属性引用。

(obj。价值] + 2

此语法使该方法能够处理对象数组。例如,使用索引赋值创建对象数组。

obj (1) = BasicClass (2.7984);obj (2) = BasicClass (sin(π/ 3));obj (3) = BasicClass (7);

然后这个表达式:

(obj。价值] + 2

等价于下面这个表达式:

(obj(1)。价值obj(2).Value obj(3).Value] + 2

因为舍入方法,它可以对数组进行操作:

舍入(obj)
Ans = 2.8000 0.8700 7.0000

重载函数

类可以通过定义与现有MATLAB函数同名的方法来实现现有功能,比如加法。例如,假设你想加2BasicClass对象。添加的值是有意义的价值每个对象的属性。

这是MATLAB的重载版本+函数。的定义了加法BasicClass类添加属性值:

方法函数R = + (o1,o2)值]+ [o2.Value];结束结束

通过实现被调用的方法+,你可以使用“+的操作符BasicClass

一个= BasicClass(π/ 3);b = BasicClass(π/ 4);a + b
ans = 1.8326

通过向加法方法向量化,可以对对象数组进行操作。

一个= BasicClass(π/ 3);b = BasicClass(π/ 4);c = BasicClass(π/ 2);Ar = [a b];基于“增大化现实”技术+ c
Ans = 2.6180 2.3562

相关信息

有关重载函数的信息,请参见类定义中的重载函数

有关重载操作符的信息,请参见操作符重载

BasicClass代码清单

这是BasicClass添加本主题中讨论的特性后的定义:

classdefBasicClass属性价值{mustBeNumeric}结束方法函数obj = BasicClass (val)如果Nargin == 1 obj。值= val;结束结束函数r = round([obj. value],2);结束函数r = multiplyBy(obj,n)值]* n;结束函数R = + (o1,o2)值]+ [o2.Value];结束结束结束

相关的话题