主要内容

创建一个简单的类

设计类

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

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

  • 舍入——方法轮两位小数的财产的价值

  • multiplyBy——方法繁殖指定数量的财产的价值

开始一个类定义classdef类名称结束……块,然后定义类的属性和方法在这一块。这里的定义BasicClass:

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

总结类的语法,请参阅classdef

使用类:

  • 保存的类定义。m文件名称相同的类。

  • 创建一个对象的类。

  • 访问属性分配数据。

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

创建对象

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

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

最初,属性值是空的。

访问属性

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

a.Value= pi/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)如果输入参数个数= = 1 obj。值= val;结束结束结束

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

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

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

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

Vectorize方法

MATLAB®使您操作进行向量化。例如,您可以添加一个号码一个向量:

(1 2 3)+ 2
ans = 3 4 5

MATLAB增加数量2数组中的每个元素(1 2 3)。算术运算符进行向量化方法,将obj.Value属性引用在括号中。

(obj。价值] + 2

这个语法允许对象的方法来处理数组。例如,创建一个对象数组使用索引任务。

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

这两个表达式是等价的。

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

舍入方法是矢量化,因为属性引用封闭在括号中。

r =圆([obj.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

通过vectorizing +方法,您可以操作对象数组。

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

相关信息

重载函数的更多信息,请参阅在类定义重载函数

重载操作符的信息,请参阅操作符重载

BasicClass代码清单

这是BasicClass定义后添加这个话题讨论的特性:

classdefBasicClass属性价值{mustBeNumeric}结束方法函数obj = BasicClass (val)如果输入参数个数= = 1 obj。值= val;结束结束函数r =凑整(obj) r =圆([obj.Value], 2);结束函数r = multiplyBy (obj, n) r = [obj。值]* n;结束函数r = + (o1、o2) r = (o1群。值]+ [o2.Value];结束结束结束

相关的话题