掌握 MATLAB OOP:使用类和对象构建健壮、可重用的代码
MATLAB 是一个功能强大的数值计算环境,支持面向对象编程 (OOP),有助于创建复杂、可重用的代码。 MATLAB 中的 OOP 围绕类和对象的概念。
以下是 Matlab 支持的面向对象功能。
- 对象
- 类别
- 封装
- 继承
- 多态性
- 抽象
- 属性
- 方法重载
面向对象编程的主要支柱是 -
- 封装
- 抽象
- 继承
- 多态性
为什么使用面向对象设计?
构建软件时,您需要设计应用程序将使用的数据并创建操作来处理该数据。在过程编程中,您将数据传递给函数来执行操作。在面向对象编程 (OOP) 中,您将数据和操作捆绑到通过定义的接口进行交互的对象中。
编写 MATLAB 程序的方法
MATLAB 允许您使用过程方法和面向对象的方法,从而允许您在程序中组合对象和常规函数。
程序程序设计
在过程编程中 -
- 聚焦 - 实现目标所需的步骤。
- 数据表示 - 作为结构中的单个变量或字段。
- 操作 - 作为以数据作为参数的函数实现。
- 流程 - 程序调用一系列函数,传递数据并接收修改后的数据作为返回。每个函数对数据执行特定的操作。
面向对象的程序设计
- 识别组件 - 确定您想要构建的系统或应用程序的部分。
- 分析模式 - 查找重复使用或共享特征的组件。
- 对组件进行分类 - 根据相似性和差异对组件进行分组。
完成此分析后,您可以定义类来描述应用程序使用的对象。
类和对象
- 类 - 描述一组具有共同特征的对象。
- Object - 类的特定实例。对象属性中的值将其与同一类的其他对象区分开来。
- 方法 - 在类中定义的函数,用于实现该类的所有对象所共有的行为。
什么时候应该创建面向对象的程序?
您可以使用简单的功能处理简单的任务。但随着任务规模和复杂性的增加,功能可能会变得庞大且难以管理。
当函数变得太大时,您可以将它们拆分为更小的函数并在它们之间传递数据。然而,随着函数数量的增加,管理它们之间传递的数据可能会变得很棘手并且容易出错。这时您应该考虑为 MATLAB 程序使用面向对象的设计。
了解面向对象程序
什么时候应该切换到面向对象编程(OOP)?随着您的任务变得更加复杂,从对象角度思考可以使您的代码更易于管理和理解。
从对象的角度思考
有时从对象的角度思考更容易解决问题。将问题中的名词识别为对象,将动词识别为这些对象执行的操作。例如,如果您正在与不同类型的放债人(如银行和抵押贷款公司)打交道,则可以将每种类型的放债人表示为一个对象。每个对象执行特定的操作(方法)并保存某些数据(属性)。
- 识别共性:寻找同一类型的所有对象的共同点。例如,所有放债人可能都有提供贷款的方法和利率的财产。
- 识别差异:了解每个对象的不同之处。例如,一些贷方可能只向企业提供贷款,而另一些贷方可能只向个人提供贷款。您可以从基类创建子类来处理这些差异。
- 分解共性:将共享功能放入超类中,让子类处理特定功能。
MATLAB 中 OOP 的优点
以下是从对象角度思考时获得的一些优势。
1) 对象管理其内部状态 - 确保其属性值有效。控制谁可以访问属性和方法。
2) 减少冗余- 随着程序的增长,OOP 通过减少冗余来帮助管理复杂性。您可以使用通用代码创建基类,而不是复制和修改函数。然后,子类可以添加或覆盖特定功能,而无需重复代码。
3) 定义一致的接口 - 对类似但专门的类使用基类有助于维护一致的接口。这种方法明确了系统的每个部分需要做什么。确保代码通过通用接口反映这些需求。
4) 降低复杂性- 对象提供隐藏内部工作的接口。它还确保交互遵循既定规则。
5) 促进模块化- 将系统分解为对象有助于创建自然模块。类提供不同级别的访问控制:公共、受保护和私有。
6) 重载函数和运算符 - 在 OOP 中,您可以重载现有函数来处理您的对象。例如,您可以重新定义某些操作(例如相等或加法)如何适用于自定义对象。
MATLAB 中的 OOP 功能
MATLAB 支持的面向对象编程 (OOP) 功能的简要说明 -
对象 - 包含数据(属性)和操作该数据的方法(函数)的类的实例。
类 - 类是定义对象的属性和行为的蓝图。它封装了数据(属性)和对该数据进行操作的函数(方法)。对象是类的实例,每个类都有自己独特的数据。在 MATLAB 中,您可以使用 classdef 文件定义类。
封装 - 将数据(属性)和方法捆绑到单个单元(类)中的概念。在 MATLAB 中,您可以使用 public、protected 和 private 等访问修饰符来控制对类组件的访问。
继承 - 一种机制,一个类(子类)可以从另一个类(超类)继承属性和方法,从而允许代码重用。在 MATLAB 中,您可以使用 classdef 语法指定继承。
多态性- 在子类中重新定义方法的能力,允许不同的类以不同的方式响应相同的方法调用。 MATLAB 通过方法重写支持多态性。
抽象 - 隐藏复杂的实现细节并仅显示对象的基本特征的概念。 MATLAB 使用抽象类和方法来实现抽象。
属性 - 在类中定义的变量,用于保存对象的数据。 MATLAB 允许设置属性属性,例如访问控制和默认值。
方法重载- 能够定义具有相同名称但不同输入参数的多个方法。 MATLAB 支持方法重载,以允许方法根据输入类型或数量表现不同。
封装 - 通过将数据和方法分组到类中来保护和组织代码。 MATLAB 使用访问控制(例如私有属性)来封装数据。
抽象 - 通过隐藏实现细节来简化复杂的系统。在 MATLAB 中,抽象方法和类可让您专注于基本功能。
继承 - 通过允许类继承其他类的行为和属性来促进代码重用。在 MATLAB 中,继承是在定义类时声明的。
多态性- 通过允许不同的类以各种方式实现相同的方法来实现灵活性。在 MATLAB 中,多态性是通过重写派生类中的方法来实现的。
MATLAB