- 1、本文档共80页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章 面向对象方法论 2.1 面向对象概念 2.2 链接与关联 2.3 聚合 2.4 概括 2.5 构造分组 2.1 面向对象概念 本节定义并解释面向对象方法的主要概念,在介绍基本概念时力求与客观世界和人的自然思维方式联系起来。 2.1.1 对象 对象是构成世界的一个独立单位,它具有自己的静态特征和动态特征。静态特征即可以用某种数据来描述的特征,动态特征即对象所表现的行为或对象所具有的功能。 对象是系统中用来描述客观事物的一个实体,一个对象由一组属性和对这组属性进行操作的一组服务构成。 属性和服务,是构成对象的两个主要因素,其定义是: 属性是用来描述对象静态特征的一个数据项 服务是用来描述对象动态特征(行为)的一个操作序列。 对象只描述客观事物本质的、与系统目标有关的特征,而不考虑那些非本质的、与系统目标无关的特征。 对象是属性和服务的结合体,二者是不可分的;而且对象的属性值只能由这个对象的服务来读取或修改 . 对象的另一定义: 对象是问题域或实现域中某些事物的一个抽象,它反映该事物在系统中需要保存的信息和发挥的作用;它是一组属性和有权对这些属性进行操作的一组服务的封装体。 2.1.2 类 在OO方法中,类的定义是: 类是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。 类与对象的关系如同一个模具与用这个模具铸造出来的铸件之间的关系。类给出了属于该类的全部对象的抽象定义,而对象则是符合这种定义的一个实体。 在OO方法中关于一般类与特殊类的定义是: 如果类A具有类B的全部属性和全部服务,而且具有自己特有的某些属性或服务,则A叫做B的特殊类,B叫做A的一般类。 以上定义也可用另一种方式给出: 如果类A的全部对象都是类B的对象,而且类B中存在不属于类A的对象,则A是B的特殊类,B是A的一般类。 2.1.3 对象图 对象图提供了对象、类和它们相互之间联系的建模规范化图形表示。对象图有两种类型:类图和实例图。 (1)类图是描述许多可能的数据实例的一种模式或模板 (2)实例图是描述对象之间相互关系的一种特殊的集合 2.1.4 属性 属性是一个类中对象所具有的数据值 ,不同的对象实例可以有相同或不同的属性。每个属性名在一个表中是惟一的,而在两个不同的类中可以有相同的属性名 。 不要把内部标识和真实应用属性混淆起来。内部标识符纯粹是为了实现方便,在问题域中是没有含义的。 2.1.5 操作和方法 操作是一种功能或一种转换,它应用于类中的对象或被类中对象使用。在一个类中所有对象共享相同的操作。 相同的操作可用于许多不同的类中,这样的操作是多态的。 每种操作有一个内含参数的目标对象,该操作的行为依赖于它的目标类。 一种操作可对它的目标对象添加参数,这种以参数化表示的操作并不影响方法的选择,方法仅依赖于该目标对象的类。 2.1.6 封装 封装是面向对象方法的一个重要原则。它有两个涵义 : (1)把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位 (2)尽可能隐蔽对象的内部细节,对外形成一个边界,只保留有限的对外接口使之与外部发生联系 封装就是把对象的属性服务结合成为一个独立的系统单位,并尽可能隐蔽对象的内部细节。 在面向对象的语言中,要求把属性和服务结合起来定义成一个程序单位,并通过编译系统保证对象的外部不能直接存取对象的属性或调用它的内部服务,这种机制就称为封装机制。 2.1.7 继承 继承的定义是: 特殊类的对象拥有其一般类的全部属性与服务,称作特殊类对一般类的继承。 一个类可以是多个一般类的特殊类,它从多个一般类中继承了属性与服务,这种继承模式叫作多继承。 与多继承相关的一个问题是“命名冲突”问题,这是指:当一个特殊类继承了多个一般类时,如果这些一般类中的属性或服务有彼此同名的现象,则当特殊类中引用这样的属性名或者服务名时,系统无法判定它的语义到底是指哪个一般类中的属性和服务。 解决命名冲突的办法有两种: (1)不允许多继承结构中的各个一般类的属性及服务取相同的名字 (2)由OOPL提供一种更名机制,使程序可以在特殊类中更换从各个一般类继承来的属性或服务的名字 2.1.8 多重继承 有不同鉴别器的多重继承 多重继承可以对相同的类,通过不同的鉴别器产生,如图2-1的例子。 无公共祖先的多重继承 多重继承的工作环境 (1)如子类有好几个同样重要的超类,那么最好用“授权方法”并保持该模型的对称性。 (2)如某一超类明显地处于支配地位,而其他的类处于相
文档评论(0)