班级的角色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年。