主要内容

班级的角色MATLAB

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

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

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

预定义的类

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

用户定义的类

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

P1 + p2

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

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

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

MATLAB类别-关键术语

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

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

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

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

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

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

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

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

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

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

  • 包——定义类和函数命名范围的文件夹

一些基本的关系

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

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

类层次结构

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

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

正整数的定义需要额外的说明,即集合的成员大于零。正整数结合了整数和正数的定义。结果子集比超集更特定,因此定义更狭窄,但仍然共享定义超集的所有特征。

表示数组之间关系的维恩图

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

  • 正整数是整数

  • 正整数是一个正数

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

重用的解决方案金宝搏官方网站

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

对象

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

对象不仅仅是被动的数据容器。对象通过以下方式主动管理所包含的数据:只允许执行某些操作,隐藏不需要公开的数据,以及通过执行不是为对象设计的操作来防止外部客户端滥用数据。对象甚至可以控制它们被销毁时会发生什么。

封装信息

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

参考文献

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

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

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

相关的话题