Matlab AppDesigner编程教程第1章——面向对象编程
前言
首先为什么我们学习Matlab AppDesigner要先学面向对象编程呢?
1直接原因:Matlab appdesigner是面向对象编程的,所有控件都是对象,如果不了解面向对象编程,编起来就会比较懵逼;
2重要原因:面向对象编程好处多多,可以让程序变得简洁易读易扩展易改等等,所以程序一大,面向对象编程就是必然的选择;
一、什么是面向对象编程
我们一开始写程序一般都是面向过程编程,我们把需要计算机做的事情一步一步按照过程叫计算机完成,这就叫面向过程编程;与之相对的就是面向对象编程。
那么到底什么是面向对象编程呢?
说白了就是把我们的程序要干的事情抽象出一个一个的类出来,类里面的个体就是对象;比如说我们编程与人有关那么,那么人就是类,人的个体比如小红、小明就是对象,各个对象作为人这个 “类“有他们共有的属性,比如身高体重等,作为对象个体他们又有属性上的差异,比如身高差异,体重差异等等;类还有另一个重要特点就是还具有方法或者叫操作,作为人这个“类”,他可以有很多方法比如会吃饭睡觉等等,根据编程需要我们可以任意添加。
讲到这里你可能还是不明白,这些在程序里怎么体现呢?下面用一个著名的五子棋例子来说明,你就能明白面向对象的精妙所在。
五子棋编程例子
- 面向过程怎么写呢?
1) 画出棋盘2)黑子下2)画出棋子3)白子下4)画出棋子5)判断输赢6)重复步骤7)输出输赢结果 - 面向对象写法
先抽象类,纵观整个下棋过程可以抽象出3类:
第一类:人;人类包括两个对象黑和白,这两个对象其实是完全一样的
第二类:画图系统
第三类:判定系统
整个程序只需要几个对象之间传递数据就行。
这样写程序是不是很简洁明了,还有其他很多优点比如这个程序可以分工合作来写,一个人写第一类;一个人写第二类;一个人写第三类,最后只需提供输入输出的接口就行,类里面就是一个黑匣子不用管里面是什么;还有比如说画图系统的美术风格变了,那么面向对象编程只需要在类里面改就行了,甚至还可以提供几个风格供用户选择,实现这个功能在面向对象里就非常方便,如果是面向对过程编程,画图系统分布于整个程序不同位置,改起来就很麻烦。
到这里为止,你应该对面向对象编程有个大概直观的了解了,那么接下来我们看看matlab如何创建类、对象以及如何面向对象编程。
首先建议大家使用最新版Matlab,因为Matlab一直在对AppDesigner更新,,2020相比2019就加了好多东西,所以我建议使用最新版本。那么我们开始吧
二、使用步骤
1.新建类
2.代码说明
classdef untitled
%UNTITLED 此处显示有关此类的摘要
% 此处显示详细说明
properties
Property1
end
methods
function obj = untitled(inputArg1,inputArg2)
%UNTITLED 构造此类的实例
% 此处显示详细说明
obj.Property1 = inputArg1 + inputArg2;
end
function outputArg = method1(obj,inputArg)
%METHOD1 此处显示有关此方法的摘要
% 此处显示详细说明
outputArg = obj.Property1 + inputArg;
end
end
end
上图就是一个空白类,untitled就是类的名字;properties就是类的属性;methods就是类的方法
3.创建点类
下面通过一个简单的例子来讲解类
构造一个点类,属性有x,y,类方法里的第一个函数为构造函数,规则则为下面代码所示;注:类的属性和方法都可以用点来调用和赋值,和结构体类似
classdef point
properties
x
y
l
end
methods
function obj = point(x,y)
obj.x = x;
obj.y = y;
end
function obj=get_l(obj)
obj.l = sqrt(obj.x^2+obj.y^2);
end
end
end
这样一个简单的2维点类就构造完毕,现在我们可以构建两个点p1和p2,p1,p2即为对象:p1=(1,1),p2=(1,2)
p1=point(1,1)
p2=point(1,2)
构造完类就可以添加方法了,比如我想知道点到原点的距离,我们就可以添加一个属性l来表示,并在方法里加个函数,取名get_l,如下:
classdef point
properties
x
y
l
end
methods
function obj = point(x,y)
obj.x = x;
obj.y = y;
end
function obj=get_l(obj)
obj.l = sqrt(obj.x^2+obj.y^2);
end
end
end
这样我们要知道p1到原点的距离可以这样调用:
p1=point(1,1)
p1.get_l
当然我们还可以继续添加属性和方法根据我们需要,到这里为止,构造类,创建对象,调用方法的基本方法我们已经会了,当然面向对象编程还有许多进阶技巧,这些就需要大家自己在实践中自己掌握了。
总结
以上就是Matlab构建类的方法,当然这是最基础的概念,由于Matlab Appdesigner是用面向对象编程的方式写的,所以掌握类的概念十分重要,下一章通过具体的例子来进一步说明类的使用。
本人专业光学设计工作者,业余Matlab爱好者,感兴趣的可以关注我的微信公众号“靠谱光学”,分享靠谱知识。