Matlab面向对象的程序入门

本文介绍了从2008a版本起MATLAB引入的面向对象编程特性,包括如何定义类(如Point2D),类的属性(如x,y)、方法(构造函数和normalize)以及对象的创建。重点讲解了构造函数的作用和如何通过MATLAB脚本创建对象并设置属性。
摘要由CSDN通过智能技术生成

Matlab面向对象程序入门

2008a以后的MATLAB开始项用户提供新的面向对象的变成方法,用户可以在MATLAB中定义自己的类。

1、最简单的定义类的语法

classdef Point2D < handle
    properties	% 属性 block 开始
        % ...
    end			% 属性 block 结束
    methods		% 方法 block 开始
        % ...
    end			% 方法 block 开始
end

说明:
(1)任何MATLABClass的定义都是由关键词classdef开始,end结束。
(2)classdef后面紧跟类的名字,在这里是Point2D。
(3)类名后面有一个< handle,会在第3章中具体解释,现在先规定,所有的类的定义后面都要加上<hande,并且本书中的绝大多数类都是这样定义的。
(4)一个类定义中包含属性block 和方法block。

举个栗子(Point2D二位点类的定义)

classdef Point2D < handle
    properties
        x=0;
        y
    end
    methods
        function obj = Point2D(x0,y0)	% Point2D类的构造函数
            obj.x=x0;
            obj.y=y0;
        end
        function normalize(obj)	% Point2D坐标的归一化方法
            r = sqrt(obj.x^2+obj.y^2);
            obj.x = obj.x/r;
            obj.y = obj.y/r;
        end
    end
end

说明:
(1)因为这个类用来表示二维坐标轴上的点,所以property block 中首先定义了该类的两个成员属性,分别是x和y的坐标。
(2)method block中定义了两个方法:第一个是Constructor(构造方法),负责产生并且返回该Point2D的对象,这是由用户显式定义的类的构造函数;第二个方法叫做normalize,负责把x和y的长度归一化。
上述成员方法normalize中的第一个参数是obj,用来把对象当做参数传入normalize方法中,从接受参数的方法上来说,类的成员方法和普通的函数没有太大的不同。

2、如何创建一个对象

method block中有一个和class 同名的方法,叫做Constructor(构造函数,或者构造方法)。Constructor 是一个特殊的方法,它负责创建类的对象,通常它还可以用来初始化对象的属性,即给属性赋初值
**创建对象的方式是直接调用类的 Constructor。**比如下面的Script 创建出了两个对象pl和p2,并且初始化了对象p1和p2的属性。

保存好上述例子代码后,运行下述代码,即可创建两个对象

p1=Point2D(1.0,1.0);
p2=Point2D(2.0,2.5);

在这里插入图片描述
创建的两个对象中包含两个属性x,y
在这里插入图片描述
Point2D是一个类的Constructor,并且返回值是一个对象。
在这里插入图片描述

3、类的属性(Property)

(1)如何访问对象的属性

在这里插入图片描述
在这里插入图片描述
这种普通属性的访问和赋值,其使用方法和结构体类似。在工程科学计算中,还可以声明一些具有特殊性质的属性,这就是下面几节要介绍的内容。

(2)属性的默认值(Default Value)

在MATLAB类的Property Block 定义中,可以为属性直接赋给一个值。通过这种方法提供的值,叫做属性的默认值(Default Value):
在这里插入图片描述

(3)常数(Constant)属性

常量(Constant)属性,就是在对象生存周期中值保持不变的属性。无论在类内部或者外部对该属性进行修改都将报错。定义Constant property 需要使用Constant关键词。例如下面的代码中,第3行的Constant值必须要在类的定义体内指定:
定义类:

classdef A < handle
    properties(Constant)
        R=pi/180;
    end
end

如果不显式(Explicitly)地给定被声明成常量的属性一个特定的值,那么默认的Constant值是empty doubleConstant property 的另一个用处是存储/封装一些常用的常量,以便在程序中可以不用创建出一个对象就直接使用类中的常量。比如,查询A类中常量成员R:
在这里插入图片描述

(4)非独立(Dependent)属性

  • 18
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值