首页 > 编程知识 正文

python中面向对象的理解,matlab的编程语言

时间:2023-05-05 02:56:49 阅读:116736 作者:2755

本帖最后由TS-boys在2020-10-30 13:29编辑

1 .引文

面向对象编程是一种非常常见的编程思想,它将“数据/属性”和“方法/函数”打包为对象,以帮助维护大型软件。 基于这一思想,不同的编程语言如c、JAVA等进行了不同的解释。 MATLAB也同样支持这种编程思想,并有增加的趋势。

2 .基本的面向对象编程

2.1创建对象

非常简单的创建方法。 与新函数和脚本相同,但这里是新的class。 新建后会自动显示模板,根据模板进行修改即可。

p1.png(68.78kb,下载次数: 18 )。

2020-10-30上传13:16

2.2对象的定义

定义对象当然需要名称。 classdef之后是对象的名称。 有效的对象名称。 与MATLAB变量的规则相同,不能使用字符开头、区分大小写或特殊字符。 例如,student是有效的对象名称。 修改并保存后,将得到同名的student.m文件并创建对象。

2.3数据/属性

对象必须包含一定的数据或属性。 例如,“学生”作为对象,其名称、年龄和分数可能是数据。 在MATLAB中定义数据的关键字是properties … end对,在关键字之间定义多个属性名即可。 同样,属性名称命名规则与MATLAB变量的命名规则相同。 在此定义三个属性: name、age和score。

2.4方法/函数

在面向对象的编程思想中,方法/函数是对象数据的运算或操作,用于实现特定的功能。 在MATLAB中用关键字methods … end配对,不同的函数用function…end配对。 它的结构是这样的

p2.png ) 29.04kb,下载次数: 12 ) )。

2020-10-30上传13:16

2.4.1构造函数

在JAVA中学习面向对象编程时,最常见的概念之一是构造函数,而在实例化每个对象的过程中首先调用的是构造函数。 MATLAB也有类似的概念,如果将function和classdef的名称设置为相同,则相当于构造函数。 某些语言可以定义多个构造函数,但MATLAB只能定义一个构造函数。 如果在实例化过程中需要为不同的输入参数调用不同的构造函数,则可以在构造函数中使用switch nargin实现。 下面的示例使用这种方法实现student对象的四个构造函数

2.4.2 get/set方法

说到对象方法,get和set都非常常见。 对于get方法,函数定义通常为function property _ value=get _ property (obj ),因为它输入对象的实例并返回其属性值。 函数只需要为输出变量赋值。 对于set方法,输入对象的实例和需要更改其属性的新值,并返回已更改的对象实例。 因此,函数定义通常为functionobj=set_property(obj,value ),在这种情况下,调用时将返回新的对象实例。

3 .示例

这里是一个student对象的示例,已经在r2020a上进行了测试,但应该是很旧的版本才能使用。

student.m

(1.09 KB,下载次数: 1)。

2020-10-30上传13:29

单击文件名下载附件

3.1属性

如上所述,定义了三个属性:名称、年龄和分数。

3.2方法

构造函数的定义是functionobj=student(name,age,score ),函数名称与对象名称匹配。 构造函数的第一个语句是switch nargin,它确定输入参数的数量。 如果在调用时未输入参数,则返回空的、年龄为18且分数为0的student对象。 如果在调用时输入了一些参数,则返回部分包含内容的对象。

get/set的定义如上所述,getname和setname用于操作对象的名称。

newyear用普通的方法,假设新学期到来,student的年龄加1,并清空其分数。

3.3使用

student对象可以在以下脚本中使用

sudent1=student(% (创建%对象

name=student1.getname %获取对象name属性

sudent1=student1. set name (' Xiaoli ' ) %set对象name属性

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 )来定义一些函数。 这些函数仅在此文件的范围内有效。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。