matlab中创建类

matlab中创建类

ID:37861926

大小:31.50 KB

页数:5页

时间:2019-06-01

matlab中创建类_第1页
matlab中创建类_第2页
matlab中创建类_第3页
matlab中创建类_第4页
matlab中创建类_第5页
资源描述:

《matlab中创建类》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、4.4类(class)类是一种数据类型,与普通的数据类型不同的是类不仅包含数据,还包含对数据的操作,类把数据和数据操作方法封装在一起,作为一个整体参与程序的运行。类具有课继承性,创建一个新的类的时候,可以在一个基类中添加成员派生出新类。类的变量和类的实例是不同的,类的实例是动态分配的内存区域,通常称类的实例维“对象”,同一个类可以有不同的实例存在,他们个子有自己的数据,但是数据操作方法是相同的。类的变量可以看作是一个指针,指向类的实例。在MATLAB中,为了更好地进行数据的封装,更加抽象地描述对象,也定义了类

2、。图2.4.1给出了MATLAB中类的层次结构图,在建立类的结构的时候,可以根据这一层次结构进行设计和继承。4.4.1建立一个类通常一个类应该包含四个基本的成员函数:构造函数――与类名相同,可以在其中完成成员初始化的工作;显示函数――名为display,用于显示成员的数据;赋值函数――名为set,用于设置类成员的数值;取值函数――名为get,用于读取类成员的函数。与C++的类不同的是,MATLAB的类不需要特别的析构函数。如果类用到了一些特殊的内容需要释放的话,可以编写一个成员函数,比如classclear,

3、用包来释放所占用的资源。下面用一个简单的例子类介绍一些类如何使用。定义一个名为list的类,它有两个数据成员x和y,希望通过一个成员函数prod()来获取x和y的乘积。本例的类是这样的:类名:list成员变量:x,y成员函数:list:构造函数display:显示函数get:取值函数set:赋值函数prod:计算函数现在就来建立它。(1)在工作目录上建立一个子目录(以笔者的习惯为例):cdE:MyProgrammatlab7chap4mkdir@list类名前面要加上一个字符'@’,对于这样形式的目录里

4、所有保存的M文件,MATLAB都认为是类的成员函数。(2)编写5个成员函数的M文件保存在E:MyProgrammatlab7chap4@list目录下:%list.mfunctiond=list(x,y)d.x=x;d.y=y;d=class(d,'list');%display.mfunctiondisplay(d)fprintf('listclass:');fprintf('x=%d',d.x);fprintf('y=%d',d.y);%get.mfunctionval=get(d,p

5、rop_name)switchprop_namecase'x'val=d.x;case'y'val=d.y;otherwiseerror([prop_name,'isnotavalidlistproperty']);end%set.mfunctiond=set(d,varargin)%该函数的定义在后面的章节再详细讲解argin=varargin;whilelength(argin)>=2,prop=argin{1};val=argin{2};argin=argin(3:end);switchpropcase

6、'x'd.x=val;case'y'd.y=val;otherwiseerror('Assetproperties:x,y');endend%prod.mfunctionz=prod(d)z=d.x*d.y;(3)在MATLAB命令行中进行如下操作:cdE:MyProgrammatlab7chap4d=list(11,22)listclass:x=11y=22prod(d)ans=242d=set(d,'x',7);get(d,'x')ans=7prod(d)ans=154下面对操作步骤中的细节加以详细

7、解释。1.类的创建创建一个新的类,首先需要在构造函数中用结果类型struct建立一个结构变量,包含所需要的成员变量。注意,这里不用考虑成员函数。然后用class命令将七转换成类,并返回。class明年的语法很简单:类变量=class(结构变量,'类名');这里类名和构造函数名相同。程序中要创建这个类的新的变量时,只需调用其构造函数,返回的变量就属于这个类的了。当然,这里的list.m太过简单,没有任何变量检查,使用中还可以根据情况添加一些扩充功能。2.类成员变量的赋值本例中,类的成员变量是在构造函数中赋值的。

8、MATLAB中,类成员变量都是private的,必须在成员函数中访问,因此就不能箱struct那样,用d.x和d.y等形式访问其成员变量了。不过,这个问题不严重,编个专门的成员函数get就行了。另外,成员函数的调用有个跟普通的函数一样。注意在get和set函数中,成员变量是以字符串的形式指定的,要通过字符串比较的办法进行区分,然后对输出变量进行赋值。本例中的set函数支持同时对两个成员变量赋值,因此

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。