主要内容

为什么使用面向对象的设计

写作方法MATLAB项目

创建软件应用程序通常包括设计应用程序数据和实现对数据执行操作。程序程序传递数据功能,执行必要的操作数据。面向对象软件封装了数据和操作的对象,通过对象的界面相互作用。

MATLAB®语言使您能够创建程序使用程序和面向对象技术和使用对象和普通函数在程序。

过程式程序设计

过程式编程,设计重点是必须执行的步骤来实现所需的状态。通常,您将数据表示为个体变量或字段的结构。实现业务功能的变量作为参数。项目通常调用一个函数序列,每个其中之一就是传递数据,然后返回修改数据。每个函数执行一个操作或许多操作数据。

面向对象的程序设计

面向对象的程序设计包括:

  • 识别系统的组件或您想要构建的应用程序

  • 分析和识别模式来确定哪些组件是重复使用或共享的特点

  • 分类组件基于异同

执行这个分析之后,您定义类,描述你的应用程序使用的对象。

类和对象

一个类描述了一组对象的共同特征。对象是类的具体实例。中包含的值对象的属性是什么使一个对象区别于其他对象的类。定义的函数类(称为方法)是实现对象的行为是很常见的一个类的所有对象。

当你应该创建面向对象程序吗

您可以实现简单功能简单的编程任务。然而,随着任务的规模和复杂性的增加,功能变得越来越复杂和难以管理。

随着功能变得太大,你可以把它们分成小的函数和传递数据从一个到另一个函数。然而,随着功能的数量变得大,设计和管理数据传递给函数变得困难且容易出错。在这一点上,考虑移动你的MATLAB编程任务的面向对象的设计。

理解一个问题的对象

考虑的对象更简单,更自然的一些问题。认为你的问题陈述对象的名词定义和动词作为操作执行。

考虑的设计类来表示钱贷款机构(银行、抵押贷款公司、个人资金贷款,等等)。很难代表银行的各种程序。然而,您可以代表每一个作为对象执行某些操作,包含某些数据。设计对象的过程包括识别银行的特征,对您的应用程序很重要。

确定共性。所有的钱银行有什么共同点呢?所有债主对象可以有一个贷款方法和一个贷款利率例如,属性。

识别差异。每个放贷人差异如何?一个可以为企业提供贷款而另一个只提供贷款给个人。因此,贷款对于不同类型的操作可能需要不同的贷款机构。一个基地的子类债主类可以专门的子类版本贷款方法。每个银行都有不同的价值贷款利率财产。

提出共性到一个超类,实现特定于每个子类类型的银行。

只添加什么是必要的。这些机构可能参与活动不感兴趣的应用程序。在设计阶段,确定哪些操作和数据对象定义必须包含基于你的问题。

管理对象的内部状态

对象提供一些有用的特性不可以从细胞结构和数组。例如,对象可以:

  • 限制分配给任何给定属性的数据值

  • 计算属性的价值只有当查询

  • 广播通知当任何属性值查询或更改

  • 限制对属性和方法的访问

减少冗余

随着程序的复杂性增加,面向对象的设计变得更加明显的好处。例如,假设您实现以下过程作为应用程序的一部分:

  1. 检查输入

  2. 对第一个输入参数进行计算

  3. 转换步骤2的结果基于第二个输入参数

  4. 检查输出和返回值的有效性

您可以实现这个过程作为一个普通的函数。但是假设您再次使用这个过程在您的应用程序,除了第2步必须执行不同的计算。你可以复制和粘贴第一个实现,然后重写步骤2。或者你可以创建一个函数,它接受一个选项指示计算,等等。然而,这些选项导致更复杂的代码。

面向对象的设计可以提出通用代码到所谓的基类。基类将定义所使用的算法和实现任何共同使用这段代码的所有情况。步骤2可以定义语法,但是没有实现,使得专业实现类,然后来自这个基类。

步骤1

函数checkInputs() %实际实现

步骤2

函数结果= computeOnFirstArg() %指定语法才结束

步骤3

函数transformResults() %实际实现

步骤4

出= checkOutputs()函数%实际实现

基类中的代码不是复制或修改。类从基类继承这个代码。继承降低了要测试的代码量,和隔离程序修改的基本过程。

定义一致的接口

使用一个类的基础相似,但更专业类面向对象编程是一种有用的技术。这个类定义了一个公共接口。将这种类合并到程序设计使您能够:

  • 识别一个特定目标的要求

  • 在程序编码需求作为接口类

降低复杂度

对象降低复杂性减少你必须知道使用组件或系统:

  • 对象提供一个接口,隐藏了实现细节。

  • 对象执行规则,控制对象如何交互。

为了说明这些优点,考虑数据结构的实现双向链表。看到实现链表类实际实现。

这是一个图的三元素列表:

双向链表的三个元素

将一个节点添加到列表中,断开现有节点列表中,插入新节点和连接节点。基本步骤如下:

首先断开节点:

  1. 拆开n2.Prevn1

  2. 拆开n1.Nextn2

现在创建一个新节点,连接,和重编号原始节点:

  1. 链接new.Prevn1

  2. 链接new.Nextn3(是n2)

  3. 链接n1.Next(将n2)

  4. 链接n3.Prev(将n2)

双向链表

的细节如何执行这些步骤方法封装在类的设计。每个节点对象包含的功能将自己插入或删除自己从列表中。

例如,在课堂上,每一个节点对象有一个insertAfter方法。将一个节点添加到一个列表,创建一个节点对象,然后调用它insertAfter方法:

nnew = NodeConstructor;nnew.insertAfter (n1)

因为节点类定义了实现这些操作的代码,这段代码是:

  • 作者以最优的方式实现的类

  • 总是与当前最新版本的类

  • 适当的测试

  • 可以自动更新旧版本的对象从mat文件加载时。

对象方法执行的规则节点是如何交互的。这个设计消除了负责执行规则的应用程序使用的对象。这也意味着应用程序不太可能产生的错误的实现过程。

促进模块化

当你将系统分解为对象(汽车燃料- >引擎- >系统- >氧传感器),你自然边界周围形成模块。类提供三个层次的控制代码模块化:

  • 公众——任何代码可以访问这个特定的属性或调用这个方法。

  • 保护,只有这个对象的方法和方法的对象来自这个对象的类可以访问该属性或调用这个方法。

  • 私人——只有对象的方法可以访问该属性或调用这个方法。

重载的函数和运算符

当你定义一个类,你可以超载现有MATLAB函数来处理你的新对象。例如,MATLAB串口类过载从文件中读函数从设备读取数据连接到端口由这个对象。您可以定义不同的操作,如平等(情商)或补充(+),为一个类定义来表示数据。

相关的话题