主要内容

创建一个简单类

设计类

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

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

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

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

以下是它的定义BasicClass:

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

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

要使用类:

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

  • 创建一个类的对象。

  • 访问属性来分配数据。

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

创建对象

使用类名创建类的对象:

一个= BasicClass
a = BasicClass与属性:值:[]

最初,属性值为空。

访问属性

属性赋值价值使用object变量和属性名前的点属性:

a.Value =π/ 3;

要返回属性值,请使用不带赋值的点符号:

a.Value
ans = 1.0472

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

调用方法

调用舍入方法对象一个:

舍入(a)
ans = 1.0500

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

multiplyBy (3)
ans = 3.1416

你也可以使用点表示法调用一个方法:

a.multiplyBy (3)

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

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

添加构造函数

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

类的构造函数BasicClass类。调用带有输入参数的构造函数时,将其赋值给价值财产。如果调用构造函数时没有输入参数,则价值属性的默认值为empty ([])。

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

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

一个= BasicClass(π/ 3)
值:1.0472

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

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

Vectorize方法

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

[1 2 3] + 2
Ans = 3 4 5

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函数同名的方法来实现现有的功能,如加法。例如,假设您想要添加两个BasicClass对象。的值相加是有意义的价值每个对象的属性。

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

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

通过实现一个被调用的方法+,你可以使用"+操作符的对象BasicClass

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

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

一个= 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 = [obj,n];值]* n;结束函数R = + (o1,o2) R = [o1。值]+ [o2.Value];结束结束结束

相关的话题