主要内容

类的角色MATLAB

在MATLAB中®语言中,每一个值都被分配给一个类。例如,用赋值语句创建一个变量会构造一个适当类的变量:

A = 7;b =“一些文本”;s.Name =“南希”;年龄= 64岁;谁
whos名称大小字节类属性a 1x1 8 double b 1x9 18 char s 1x1 370结构

基本的命令在工作区中显示每个值的类。这些信息帮助MATLAB用户识别一些值是字符并显示为文本,而另一些值是双精度数字,等等。有些变量可以包含不同类型的值,比如结构。

预定义的类

MATLAB定义了由语言使用的基本类型组成的基本类。这些类包括数字类、逻辑字符细胞结构体、函数句柄。

用户定义的类

您可以创建自己的MATLAB类。例如,你可以定义一个类来表示多项式。该类可以定义通常与MATLAB类相关的操作,如加减、索引、在命令窗口中显示等等。这些操作需要执行与多项式加法、多项式减法等等效的操作。例如,当你添加两个多项式对象时:

P1 + p2

+操作必须能够添加多项式对象,因为多项式类定义了这个操作。

在定义一个类时,可以重载特殊的MATLAB函数(例如plus.m对于加法运算符)。当用户对类的对象应用这些操作时,MATLAB调用这些方法。

看到用类表示多项式下面是创建这样一个类的示例。

MATLAB课程-关键术语

MATLAB类使用以下词来描述类定义的不同部分和相关概念。

  • 类定义——描述类的每个实例的公共内容。

  • 属性——类实例的数据存储

  • 方法——实现通常只在类的实例上执行的操作的特殊函数

  • 事件——由类定义的消息,当某些特定动作发生时由类实例广播

  • 属性——修改属性、方法、事件和类的行为的值

  • 监听器——在广播事件通知时通过执行回调函数响应特定事件的对象

  • 对象——类的实例,包含存储在对象属性中的实际数据值

  • 子类——从其他类派生的类,并继承这些类的方法、属性和事件(子类有助于重用派生它们的超类中定义的代码)。

  • 超类——用作创建更具体定义的类(即子类)的基础的类。

  • 包——为类和函数命名定义作用域的文件夹

一些基本的关系

本节讨论MATLAB类使用的一些基本概念。

类是一种定义,它指定类的所有实例共享的某些特征。这些特征是由定义类的属性、方法和事件以及修改这些类组件行为的属性值决定的。类定义描述了类的对象是如何创建和销毁的,对象包含什么数据,以及如何操作这些数据。

类层次结构

有时根据现有类定义一个新类是有意义的。这种方法使您能够在表示类似实体的新类中重用设计和技术。您可以通过创建一个子类来实现这种重用。子类定义的对象是父类定义的对象的子集。子类比它的父类更具体,可以向从父类继承的组件添加新的属性、方法和事件。

数学集可以帮助说明类之间的关系。在下面的图中,正整数集是整数集和正整数集的子集。这三个集合都是实数的子集,实数是所有数的子集。

正整数的定义要求集合的成员大于零。正整数结合了Integers和正数的定义。结果子集比超集更具体,因此定义也更狭窄,但仍然具有定义超集的所有特征。

显示数字组之间关系的维恩图

“is a”关系是确定根据现有超集定义特定子集是否合适的好方法。例如,下面的每个语句都是有意义的:

  • 正整数是整数

  • 正整数是一个正数

如果“is a”关系成立,那么很可能可以从一个或多个表示更一般情况的类中定义一个新类。

重用的解决方案万博 尤文图斯

类通常被组织到分类法中,以促进代码重用。例如,如果您定义一个类来实现到计算机串口的接口,那么它可能类似于设计一个类来实现到并行端口的接口。要重用代码,可以定义一个超类,其中包含两种类型端口的所有通用内容,然后从超类派生子类,在这个超类中只实现每个特定端口的惟一内容。然后,子类将继承父类的所有通用功能。

对象

类类似于创建类的特定实例的模板。此实例或对象包含由类表示的特定实体的实际数据。例如,银行账户类的实例是一个表示特定银行账户的对象,具有实际的账号和实际的余额。该对象内置了执行类定义的操作的能力,例如向帐户余额进行存款和取款。

对象不仅仅是被动数据容器。对象通过只允许执行某些操作、隐藏不需要公开的数据以及防止外部客户端通过执行非设计对象的操作而误用数据来主动管理所包含的数据。对象甚至可以控制它们被销毁时发生的事情。

封装信息

对象的一个重要方面是,您可以编写软件,通过对象的属性和方法访问存储在对象中的信息,而不知道该信息是如何存储的,甚至不知道查询时是否存储或计算该信息。对象将访问对象的代码与方法和属性的内部实现隔离开来。可以定义对不属于类的任何方法隐藏数据和操作的类。然后,您可以实现任何最适合预期用途的接口。

参考文献

[1] A.夏洛威,J. R.特洛特,设计模式解释面向对象设计的新视角。.马萨诸塞州波士顿:Addison-Wesley 2002。

Gamma, E., R. Helm, R. Johnson, J. Vlissides,可重用面向对象软件的设计模式元素.马萨诸塞州波士顿:Addison-Wesley 1995。

E.弗里曼,伊丽莎白·弗里曼,凯西·西拉,伯特·贝茨,头部优先设计模式.塞瓦斯托波尔,加州,2004年。

相关的话题