创建一个简单的类

设计类

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

  • - 属性,它包含存储在类的一个对象的数值数据

  • 四舍五入- 方法,除此之外,该属性的值到小数点后两位

  • 乘以- 方法是按指定的数字乘以属性的值

这里的定义BasicClass

classdefBasicClass性能{} mustBeNumeric结束方法功能R =舍入(OBJ)R = ROUND([obj.Value],2);结束功能R = multiplyBy(OBJ中,n)R = [obj.Value] * N;结束结束结束

对于类语法的摘要,请参阅classdef

使用类:

  • 保存在一个类定义.M具有相同名称的类文件。

  • 创建一个类的对象。

  • 访问属性来分配数据。

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

创建对象

创建使用类名的类的对象:

A = BasicClass
A = BasicClass具有属性:值:[]

最初,属性值是空的。

访问属性

分配一个值到使用对象变量和属性名前点属性:

a.value中= PI / 3;

要返回一个属性值,使用点符号,而不分配:

一个值
ANS = 1.0472

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

调用方法

调用四舍五入上对象的方法一个

舍入(a)中
ANS = 1.0500

传递对象作为第一个参数给带有多个参数的方法,如在本调用myltiplyBy方法:

multiplyBy(A,3)
ANS = 3.1416

您还可以使用点符号调用一个方法:

a.multiplyBy(3)

这是没有必要使用圆点符号时,明确地传递对象作为参数。标记使用对象的点和方法名的左侧。

有关类方法的信息,请参阅方法和功能

添加构造函数

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

下面是一个构造函数BasicClass类。当调用带有输入参数的构造,它被分配到属性。如果调用构造函数没有输入参数,酒店的空默认值([])。

方法起作用OBJ = BasicClass(VAL)如果nargin == 1 obj.Value = VAL;结束结束结束

通过添加此构造函数的类定义,你可以创建一个对象,并在一个步骤设置属性值:

一个= BasicClass(PI / 3)
A = BasicClass具有属性:值:1.0472

构造函数可以执行与创建类的对象等操作。

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

矢量化方法

MATLAB®使您能够矢量化操作。例如,您可以将号码添加到一个向量:

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

MATLAB增加数量2每个阵列中的元素的[1 2 3]。向量化算术运算符方法,封闭obj.Value括号物业参考。

[obj.Value] + 2

此语法使与对象的阵列的方法来工作。例如,创建使用索引分配一个对象数组。

OBJ(1)= BasicClass(2.7984);OBJ(2)= BasicClass(SIN(PI / 3));OBJ(3)= BasicClass(7);

那么这个表达式:

[obj.Value] + 2

相当于这个表达式:

[OBJ(1)。价值OBJ(2)。价值OBJ(3)。价值] + 2

由于四舍五入方法被矢量,它可以在阵列运行:

舍人(OBJ)
ANS = 2.8000 0.8700 7.0000

重载函数

类可以通过定义具有相同的名称作为现有的MATLAB函数的方法实施的现有功能,如加法,。例如,假设你要添加两个BasicClass对象。这是有道理的增加的值每个对象的属性。

这里是MATLAB的重载版本功能。它定义额外增加了BasicClass类作为添加属性值:

方法功能R =正(O1,O2)R = [o1.Value] + [o2.Value];结束结束

通过实施一个名为方法,你可以使用“+”运营商的对象BasicClass

一个= BasicClass(PI / 3);B = BasicClass(PI / 4);A + B
ANS = 1.8326

通过矢量化的加方法,你可以在对象数组操作。

一个= BasicClass(PI / 3);B = BasicClass(PI / 4);C = BasicClass(PI / 2);AR = [A B];AR + C
ANS = 2.6180 2.3562

相关信息

有关重载函数的信息,请参阅在类定义重载函数

有关运算符重载信息,请参阅运算符重载

BasicClass代码

这里是BasicClass加入这个话题讨论的所有特性之后的定义:

classdefBasicClass性能{} mustBeNumeric结束方法功能OBJ = BasicClass(VAL)如果nargin == 1 obj.Value = VAL;结束结束功能R =舍入(OBJ)R = ROUND([obj.Value],2);结束功能R = multiplyBy(OBJ中,n)R = [obj.Value] * N;结束功能R =正(O1,O2)R = [o1.Value] + [o2.Value];结束结束结束

相关话题