基于MATLAB的面向对象编程(1)——类,属性,方法

1 入门

1.1 如何把面条抽象成Class

以面条为例。

classdef Noodle < handle
    properties
        type
        state
    end
    methods
        function boil(obj)
            obj.state = 'done';
        end
    end
end

其中Noodle是类的名称,type和state是类的property,类的属性,也可以称作成员变量。
将其类定义的保存名为Noodle.m,与类同名。
调用类的方法

noodle = Noodle(); %调用构造函数的创建对象obj。
noodle.boil(); %调用成员方法boil,noodle属性改变。

1.2 文件类

classdef FileClass < handle
    properties
        name
        path
        format
        data
        fID
    end
    methods
        function obj = FileClass(name,path)
            obj.name = name;
            obj.path = path;
            obj.open();
            obj.read();
        end
        function open(obj)
            fullpath = strcat(obj.path,filesep,obj.name);
            obj.fID = fopen(fullpath);
        end
        function read(obj)
            obj.data = textscan(obj.fID,'%s %s  %s'); %假定数据文件为两列
        end
        function delete(obj)
            fclose(obj.fID);
            disp('file closed');
        end
    end
end

所有的属性和操作均为public,可以直接访问文件的数据属性。

fileobj = FileClass(filename,path);
a = fileobj.data;%赋值给a

面向对象编程的优点:

  1. 将一个复杂的大问题分解为一个个小的模块。
  2. 通过组合和信息传递完成相应的任务。
  3. 通过继承实现代码复用
  4. 修改和添加模块不影响其他模块

2 基于MATLAB的面向对象编程入门

2.1 如何定义一个类(Class)

MATLAB可以通过whos检查变量所属的类。
用户可以设计自己的类。

classdef Point2D<handle
    properties   %属性
        %...
    end
    methods   %方法
        %...
    end
end
  • MATLAB的所有Class均以classdef开始
  • classdef后紧跟类名,
  • <handle 是MATLAB的抽象类,做父类

如简单的二维点类定义如下

classdef Point2D<handle
    properties   %属性
       x
       y
       %...
    end
    methods   %方法
        function obj = Point2D(x0,y0)%...
            obj
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值