matlab是面向对象的语言吗,matlab用python语言
本帖最后由TS-boys编辑于2020-10-30 13:29。
1 .报价
面向对象编程是一种非常常见的编程思想,将“数据/属性”和“方法/函数”打包成对象,帮助维护大型软件。基于这种思想,不同的编程语言,如C和JAVA,做出了不同的解读。MATLAB也支持这种编程思想,并且有增加的趋势。
2.基本面向对象编程
2.1创建对象
非常简单的创作方法。与新的函数和脚本相同,但这里是新的类。模板创建后会自动显示,您可以根据模板进行修改。
P1.png(68.78kb,下载次数:18)。
2020-10-30 13:16上传
2.2对象的定义
当然,定义一个对象需要一个名字。Classdef后跟对象的名称。的有效对象名。与MATLAB变量规则相同,不能以字符开头,区分大小写或使用特殊字符。例如,student是一个有效的对象名。修改并保存后,您将获得同名的student.m文件并创建对象。
2.3数据/属性
对象必须包含某些数据或属性。例如,“学生”的姓名、年龄和分数可以是数据。在MATLAB中,定义数据的关键字是properties … end对,您可以在关键字之间定义多个属性名。同样,属性名的命名规则与MATLAB变量的命名规则相同。这里定义了三个属性:姓名、年龄和分数。
2.4方法/功能
在面向对象编程的思想中,一个方法/函数就是对对象数据的操作,用来实现一个特定的功能。在MATLAB中用关键字methods … end匹配,用function…end匹配不同的函数。它的结构是这样的
P2.png)29.04 KB,下载次数:12)。
2020-10-30 13:16上传
建造商
在学习JAVA面向对象编程时,最常见的一个概念就是构造函数,在实例化每个对象的过程中首先调用构造函数。MATLAB也有类似的概念。如果function和classdef的名字设置相同,就相当于构造函数。有些语言可以定义多个构造函数,但是MATLAB只能定义一个构造函数。如果在实例化过程中需要为不同的输入参数调用不同的构造函数,可以在构造函数中使用switch nargin。下面的示例使用此方法实现student对象的四个构造函数。
2.4.2获取/设置方法
说到对象方法,get和set都很常见。对于get方法,函数定义通常是function property _ value=get _ property(obj),因为它输入一个对象的实例并返回其属性值。函数只需要给输出变量赋值。对于set方法,输入对象的实例及其要更改的属性的新值,并返回更改后的对象实例。所以函数定义通常是functionobj=set_property(obj,value),这种情况下调用时会返回一个新的对象实例。
3.例子
这里有一个学生对象的例子,已经在r2020a上测试过了,但是用起来应该是很老的版本了。
学生. m
(1.09 KB,下载次数:1)。
2020-10-30 13:29上传
单击文件名下载附件。
3.1属性
如上所述,定义了三个属性:姓名、年龄和分数。
3.2方法
构造函数的定义是functionobj=student(姓名,年龄,分数),函数名与对象名匹配。构造函数的第一条语句是switch nargin,它决定输入参数的数量。如果调用时没有输入参数,则返回一个年龄为18岁、得分为0的空student对象。如果在调用时输入了一些参数,则返回包含部分内容的对象。
Get/set的定义如上所述,getname和setname用于操作对象的名称。
Newyear用的是常用的方法,假设新学期来了,学生年龄加1,分数清零。
3.3使用
学生对象可用于以下脚本中
Sudent1=student(%)(创建%对象
Name=student1.getname%获取对象名称属性。
suden t1=student 1 . setname( Xiaoli )% set对象名称属性
Student1=student1.newyear%对象复制newyear操作中的代码。
4.膨胀
关于r2020a版本,完整描述:
以下是一些常见的特征。
4.1继承
它只能在定义对象时声明。例如,classdef math_student student可以定义学生和数学系学生的子类。
4.2访问控制
属性和方法都可以控制访问权限。例如,因为methods(private)可以定义私有方法,所以在一个classdef下,多个properties…end和methods …end具有不同访问权限的属性和方法的部分受到控制。
4.3本地功能
虽然以classdef开头,但本质上是一个M文件,所以可以使用局部函数。也就是说,有些函数可以通过在文件末尾添加functiony=XXX(x)来定义。这些函数仅在该文件的范围内有效。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。