![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MATLAB面向对象编程
文章平均质量分 63
主要讲解MATLAB的面向对象编程,包括GUI设计如何分离用户界面和模型
肆拾伍
有问题请留言,私信不回
展开
-
MATLAB 面向对象编程(十二)抽象类
在C++中我们就了解过了抽象类,因为在类没有具象化的时候,我们并不知道该类的详细属性和方法应该怎么定义,比如基类是Shape,包含了周长和面积,子类可以是三角形和正方形,但是这两种形状的面积和周长计算方式是不同的,因此在不知道具体子类的时候我们无法定义Shape中的计算方式。下面是代码示例:classdef Shape < handle % 基类 Shape.m propert...原创 2020-02-23 17:30:05 · 1188 阅读 · 0 评论 -
MATLAB 面向对象编程(十一)成员方法共享Static和属性共享constant、persistent
类的成员方法静态成员方法(Static)也叫做类方法,在前面的loadobj方法中有涉及,它不需要具体的对象就可以调用。classdef Base1 < handle properties x end methods function obj = Base1() disp('Base1'); ...原创 2020-02-23 16:36:07 · 3124 阅读 · 1 评论 -
MATLAB 面向对象编程(十)多重继承
多重继承很好理解,举个例子,Sub既属于Base1类,有属于Base2类,具有两个类的特性,那么就需要多重继承,下面是代码:classdef Base1 % Base1.m properties x end methods function obj = Base1() disp('Base1'); e...原创 2020-02-23 15:21:12 · 901 阅读 · 1 评论 -
MATLAB 面向对象编程(九)对象的save和load以及自定义方法
当我们使用命令save matlab.mat Point表示将对象Point保存到matlab.mat文件中,load matlab.mat表示装置matlab.mat文件中的内容。原创 2020-01-28 22:16:49 · 1351 阅读 · 1 评论 -
MATLAB 面向对象编程(八)监听器listener
······事件(Event)是对象内部的状态改变,事件的发生往往会有一定的相应。改变对象内部状态的叫做发布者,做出相应响应的是观察者。这里需要用到两个函数分别为 addlistener和notify,用于添加监听器和发布事件。 发布事件,不传递信息看下面的定义:% DataSource.mclassdef DataSource < handle % 发布者 prope...原创 2020-01-28 22:09:13 · 3273 阅读 · 2 评论 -
MATLAB 面向对象编程(七)析构函数delete
·······Handle类除了构造函数以外还有析构函数,在对象离开作用域或者被销毁的时候会调用析构函数delete,在一般情况下不需要自定义delete方法,除了一些特殊情况下有些内存不能自己释放才需要手动释放。Value类没有析构函数,但是也可自定义一个delete方法显示调用,比如说a.delete(). 什么情况下会调动析构函数1 当一块内存没有句柄指向时a = Point();...原创 2020-01-28 21:10:58 · 1924 阅读 · 3 评论 -
MATLAB 面向对象编程(六)Handle类和Value类的set和get方法
set 和get 方法是为对象属性赋值和访问的一个中间层,当我们运行代码 a.x的时候,其实会隐性的调用set.x()方法,下面我们来介绍如何自定义set和get方法。set方法Handle类classdef Point < handle properties x = 0 y = 0 end properties (Hidden,Dependent) ...原创 2020-01-28 20:44:11 · 2099 阅读 · 2 评论 -
MATLAB 面向对象编程(五)Value类和Handle类
在之前的文章中,我们都默认使用的类是handle类,因为在定义类的时候都有一句:classdef Point < handle我们在类的继承中知道,这句代码的意思是 Point是handle类的一个子类,其实我们也可以不加后面的,直接写成:classdef Point 这样声明的类就是一个 Value类,那么二者有什么区别,又怎样使用呢、...原创 2020-01-28 17:36:44 · 6720 阅读 · 2 评论 -
MATLAB 面向对象编程(四)类的访问权限 private public protected hidden dependent等
在类的属性中,有一些是属于中间变量,外部不需要知道这些数据的值,因此需要对访问的权限进行控制,避免一个类中的行为干涉到其他类,这样的方法也叫“封装”。一般来说,权限分为三种,public(默认),private,和protected,public说明该属性全部可以直接访问,private说明该属性只能被该类中的方法访问,子类以及外界无法访问,protected说明该类方法和子类的类方法能够访问。...原创 2020-01-28 17:30:54 · 5431 阅读 · 1 评论 -
MATLAB 面向对象编程(三)类的继承
假设我们有了二维点Point类为基类,这是我们想拓展其成为三维点 Point2类,此时并不需要全部重新构造一个新类,而是在Point的基础上添加需要的属性和方法。子类会继承所有非私有的属性和方法,可以直接访问和使用,MATLAB默认的继承方法是public,这里我们不讨论访问权限,只讲公有继承。在继承中我们需要考虑的问题有: List item首先看原来的基类的定义 Point.mPo...原创 2020-01-28 15:53:44 · 4974 阅读 · 1 评论 -
MATLAB 面向对象编程(二)类的包装以及方法定义和声明分开
在一般情况下,定义类的属性和方法的时候,方法需要在类体中定义。但是当函数体过长会使得类的定义显得十分臃肿,所以需要将一些方法单独拿出来,而且在一个程序中可能需要很多类,不应该将所有类都放在当前路径上,需要进行包装。假设我们需要定义一个基类 Point,除了构造函数还有一个类方法为 normalize(), 和display(),那么组织结构为:放置类体的文件夹为 @+类名,在文件夹下可以放置...原创 2020-01-28 14:40:07 · 1816 阅读 · 1 评论 -
MATLAB 面向对象编程(一)属性和方法
本文的主要内容如下:类声明的格式,包括属性、方法类的显示方法,自定义disp输出原创 2020-01-19 13:01:01 · 3436 阅读 · 2 评论