- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MATLAB 面向对象编程(OOP)-在 MATLAB 中设计用户类
在设计 MATLAB 类时,应包括一组标准的方法以使类的行为与 MATLAB 环境
协调一致并合乎逻辑。根据所设计的类的特点,你不一定要包含所有这些方法,
并且你可能会包含一些其它方法以实现类的设计目标。
下表所列为 MATLAB 类中包含的基本方法。
类方法 说明
类构造器 创建类的对象
display 当 MATLAB 显示对象内容时被调用(例如,当输
入的表达式没有以分号结束时)
set 和 get 访问类的属性
subsref 和 subsasgn 允许对用户对象进行下标引用和赋值
end 在对象的索引表达式中支持 end 语法。
subsindex 支持在索引表达式中使用对象
double 和 char 等类型转换 将对象转换为 MATLAB 数据类型的方法
函数
接下来的几节将讨论每种方法的实现并提供本章中所用例子的参考链接。
类构造方法
特定类的@目录中必须包括一个称为该类的构造函数的 M-文件。构造函数
的名称与类目录的名称相同(除了@前缀和.m 扩展名)。构造函数通过初始化
类数据结构和初始化一个类的对象来创建对象。
构造函数编写指南
类构造函数必须执行某些功能,以使对象在 MATLAB 环境下正确运行。通
常,一个类的构造函数必须处理三种可能的输入参量组合:
无输入参数
一个同类对象作为输入参数
用来创建类的对象的输入参数(通常是某类数据)
无输入参数。如果没有输入参数,构造函数应该创建一个默认对象。既然没
有输入,你没有用来创建对象的数据,所以只需用空的或默认值来初始化对象的
数据,调用 class 函数来初始化对象,并将对象作为输出参数返回。这样做有两
方面的原因:
u 当加载对象到工作空间时,load 函数以无参数的方式调用类的构造函数。
u 在创建对象数组时,MATLAB 调用此类构造函数来向数组中添加对象。
对象输入参数。如果参数列表中的第一个参数是一个同类对象,构造函数应
该只是将对象返回。可以用 isa 函数来确定输入参数是否类的成员。这一构造函
数语法的例子见重载+运算符。
数据输入参数。如果输入参数存在且不是本类的对象,那么构造函数就用输
入参数创建对象。当然,像在其它函数中一样,你也应在构造函数中对参数进行
适当的检查。典型的做法是用 varargin 作为输入参数,用一个 switch 语句来控
制程序流程。这为我们提供了一种可以适应三种情况:无输入、对象输入、数据
输入来创建对象的简单方法。
正是在构造函数的这一部分中,你对对象的数据进行赋值、调用 class 函数
初始化对象并将对象作为输出参数返回。如果需要,可以用 superiorto 和
inferiorto 函数来将对象放置到对象层次结构中。
构造函数中 class 函数的使用
在构造方法中,你通过 class 函数来将一个对象结构关联到某特定的类。这
是通过仅可通过 class 和 isa 函数访问的内部类标签实现的。例如,下面 class 函
数的调用将对象 p 标记为 polynom 类
p = class(p,’polynom’);
构造方法的例子
有关构造方法的例子请查看下列章节:
Polynom 类的构造方法
Asset 类的构造方法
Stock 类的构造方法
Portfolio 类的构造方法
在类目录外识别对象
在类构造方法中使用的 class 和 isa 函数同样可以在类目录外使用。表达式
isa(a,’classname’);
检查 a 是否为指定类的对象。例如,如果 p 是一个 polynom 对象,下列每个表达
式都为真。
isa(pi,’double’);
isa(‘hello’,’char’);
isa(p,’polynom’);
在类目录之外,class 函数只接受一个参数(只有在构造函数中,class 才可有多
于一个参数)。
表达式
class(a)
返回一个包含 a 的类名的字符串。例如,
class(pi),
class(‘hello’),
class(p),
返回
‘double’,
‘char’,
‘polynom’
用 whos 函数可以查看 MATLAB 工作空间中有哪些对象。
whos
Name Size Bytes Class
p 1×1 156 polynom object
display 方法
只要没有以分号结束的语句的结果是一个对象,MATLAB 就会调用名为
display 的方法。例如,创建 double 型的变量 a 时,MATLAB 将调用 double 的
display 方法。
a = 5
a =
5
你应该定义一个 display 方法,以使得 MATLAB 在从你的类引用对象
文档评论(0)