- 1、本文档共164页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
; 10.1 类和对象的定义10.1.1 类的定义 在 UML中,类的定义为:类是一组对具有相同属性、操作、关系和语义的对象结构的描述。在Rational Rose的联机帮助中,类定义为:类是具有共同结构(structure)和行为(behavior)的一组对象(属性、操作、关系和语义)的共性抽象,是对象的模板。类也是对现实世界事物的抽象。现实世界中具体的事物叫做类的实例,或者简称为对象。 ; 在文献《软件体系结构研究进展》中类的定义为:类表征了正在建模应用中的离散概念——物理事物(如飞机)、商业事物(如订单)、逻辑事物(如广播节目表)、运算事物(如哈希表)、行为事物(如某个任务)。类是具有相似结构、行为、关系的一系列对象的描述,所有属性和操作附加于类或者其他分类,面向对象的系统围绕着类进行组织。 类定义了一系列具有状态和行为的对象。状态由简单属性和关联属性来描述。简单属性通常使用单纯数据类型,如数字或者字符串,关联属性使用具有标识的连接对象。可调用的行为表达为操作,方法是操作的实现。对象的生命周期由类所附带的状态集来表述。类的图符采用由类名称、属性和操作分割的矩形框来表示,如图10.1所示。 ;图10.1 类的图形表示;10.1.2 类的定义讨论 从现实世界或者问题域来看,类是一组具有共同结构的对象的集合或者抽象。对象则是能够唯一标识并确定其属性和行为的任何事物,包括各种具体的实物,如汽车和力那样的抽象概念。汽车类是各种汽车共性的抽象,学生类是所有学生共性的抽象。这种抽象的共性主要指结构上的共性。如每个学生都有学号、姓名属性、查询成绩的行为,但每个学生实例的属性值不尽相同,行为结果也不一样。所以类抽取的只是结构的共性而不是每个对象实例的值,相当于模板。从这个定义出发,我们可以把现实世界或者问题域中的事物都抽象成概念模型中的类。事物的性质、属性或者状态抽象为类的属性;事物的行为、操作或者对外提供的服务抽象为类的操作。这种方法有利于我们分析问题域,建立概念模型和分析模型。将世界上所有的事物都看成是对象,并在此基础上解决问题,是面向对象的世界观和方法论。;图10.2 租车公司的汽车对象模型 ;图10.3 力的对象模型 ;10.1.3 类的程序语言定义及和现实世界类的映射 类的定义最早来自于面向对象程序设计语言,如smalltalk、C++等。在面向对象程序设计语言中,通过关键字class将一段相互关联的完整代码模块定义成一个类。从语言的角度来看,只要是由class关键字定义的一段程序代码(包括变量定义和函数定义),都可以成为语法正确的类。如世界上最简单的类:class A{},这是类的形式定义。在大括号中可以定义变量和方法,所以语言中类定义的一般形式为 class 类名{ 变量定义; 函数定义; } 以上定义也可以解释为 类=数据结构+操作 ; 程序语言中类定义的严格形式是和具体的语言有关的,但其本质却是一样的。类可以用来表示现实世界、问题域事物或用来表示概念。在所有的面向对象程序设计语言中,类也相当于一种自定义数据结构或者类型,类似于Pascal语言中的记录类型(Record)和C语言中的结构体类型(struct)。不一样的地方仅在于除了可以定义成员变量之外,还可以定义成员函数,另外给成员增加了访问控制符(private/protected/public)等,以控制成员的对外可见性。只要符合程序语言语法的类都是语言合理的类,其完全可以与现实世界或者问题域中的类没有关系。例如,class HelloWorld{}就与现实世界中的对象没有任何关系。现实世界中的类却可以转换成程序语言中的类,现实世界中的对象实例可以转换成程序中的对象变量,这一转换的抽象过程如图10.4所示。从上述现实类和程序类的关系来看,程序类实际上是现实类的程序抽象,正如数学中的图形概念是现实世界事物形状的抽象一样。 ;图10.4 对象从现实世界到程序世界的抽象过程 ;图10.5 对象抽象过程的实例 ;10.1.4 类的高级概念 1. 类元(classfier) 类元是描述结构特征和行为特征的机制,包括类、接口、数据类型、信号、构件、节点、用例和子系统。在UML中,某些元素是没有实例的,如泛化关系和包。类元实际上就是那些具有实例、除关系外的UML建模元素的抽象。 在上述概念中,类的定义已经给出;接口用于描述类或者构件的服务操作集;数据类型则包括语言中所有的内置类型和枚举类型;信号是实例之间异步通信消息的规格说明;组件是将实现隐藏在一定外部接口内的系统模块;节点是运行时存在的物理元素,表示可计算的资源,至少包括一定的内存,有时候也有一定的处理能力;用例是系统为特定的参与者
文档评论(0)