微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 面向对象编程——类与对象

面向对象编程——类与对象

时间:08-27 来源:ZLG致远电子 点击:

值是一段数据,属性描述了类的每个对象都拥有的一个值,可以这样类比——对象之于类如同值之于属性。比如,name、birthdate和weight都是Person对象的属性,color、modelYear和weight都是Car对象的属性。对于每个对象,每个属性都有一个值,比如,对象ZhangSan的属性birthdate的值是"21 October 1983",也就是说,ZhangSan生于1983年10月21日。对于一个特定的属性,不同的对象可能会有相同或不同的取值。在一个类中,虽然每个属性的名字都是唯一的,但在所有的类中不一定是唯一的,比如,类Person和类Car都可能有一个名为weight的属性。

下面将介绍一种通过属性详细描述类的UML建模语言,一种用于可视化表示、指定、构造和描述软件密集系统中部件的图形化语言,它提供了一种以图形化方式表示和管理面向对象软件系统的方法。其不仅是系统设计的表示,而且是一种有助于完成系统设计的工具。类图定义了3个不同的部分,即类名、属性和方法,用于解释所构建的类。当用UML创建对象模型时,尽可能不要在类图中包含太多的信息,这样就能集中注意力于整体设计,而不会将重点放在细节上。

如图 4.1所示展示了类建模表示法,显示了一个类(左图)和它所描述的对象(右图),对象ZhangSan和LiMing都是类Person的实例。对象的UML表示法是一个方框,方框里面是对象名后加冒号和类名,对象名和类名都有下划线,并约定用黑体字表示对象名和类名。类的UML表示法也是一个方框,也约定用黑体字表示类名,将名字放在方框的正中央,首字符大写,且用单数名词表示类名。类Person有属性name和birthdate,name是string(字符串),birthdate是date(日期)。类Person中一个对象的名字取值是"Zhang San",生日取值是"21 October 1983";另一个对象的名字取值是"Li Ming",生日取值是"16 March 1950"。

图 4.1 属性和值的UML表示法

UML表示法会在框的第二格里列举属性,每个属性后面都可以有可选项,比如,类型和默认值。在类之前有一个冒号,在默认值之前有一个等号。约定以常规字体显示属性名,方框中的名称左对齐,首字母使用小写。在对象方框的第二格里,也可能会包含属性值,其表示法是列出每个属性名,之后跟着等号和取值,同样属性值也是左对齐,使用常规字体。虽然有些实现要求对象有唯一的标识符,但这些标识符在类模型中是隐含的,即不需要也不应该显式地将它们列举出来,比如,PersonID:ID。因为大多数OO开发语言会自动生成标识符,可以使用这些标识符来引用对象;反之,则可能需要显式地列举出来,否则无法引用对象。但是不要将内部标识符和现实世界的属性混淆了,内部标识符纯粹是一种便于实现的做法,没有应用意义。相反,纳税人编号、汽车牌照号码和电话号码都不是内部标识符,因为它们在实现世界有真实的意义,属于合法的属性。

(2)操作与方法

操作是一个函数或过程,比如,open和close都是Windows类的操作,类中所有的对象都共享相同的操作,因此将对象能够做什么的行为称为操作,通常将相同的操作应用于许多不同的类称为多态。

方法是对操作的实现,其表现为OOP某个类的成员函数。比如,类Validator有一个操作validate,其校验过程是通过validate调用不同的函数实现的。比如,范围值校验和奇偶校验。虽然这些方法在逻辑上都执行相同的任务——数据校验,但是每种方法的实现代码会有所不同。

如图 4.2所示RangeValidator类有min和max属性,以及validate操作,min、max和validate都是RangeValidator的特征。特征是描述属性或操作的类属词汇,类似地OddEvenValidator有isEven属性和validate操作。

图 4.2 操作的UML表示法

注意,validate()省略了括号中的输入参数,即"validate(pThis:void *, value:int):bool"。validate的一个参数是pThis,其类型是void *;它的另一个参数value,其类型是int。当一项操作在几个类上都有方法时,这些方法都要有相同的签名,即相同的参数数量和类型,以及返回值的类型。

UML的方框表示类,最多有三格,从上到下每个格里分别包含了类名、属性列表和操作列表。类方框中的属性和操作的框格可以选择显示或隐藏,缺少属性说明没有指定属性,缺少操作框说明没有指定操作。相反,空框格意味着属性是指定的,只是没有显示属性而已。

操作列表约定用常规字体列出操作名,左对齐,首字母小写。比如,参数列表和操作结果的类型,用括号将参数列表括起来,并用逗号分隔参数。结果类型之前有一个冒号,除非

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top