- 1、本文档共72页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章 面向对象基础 10.2 面向对象程序设计模式 10.3 面向对象的概念 10.4 面向对象的开发方法 10.5 面向对象的Booch方法 整体成员结构称为组装结构,它们之间的关系是一种“与”关系, 是“has a”关系。 例如,汽车和发动机都是类,它们之间是一种“与”关系, 汽车“有一个”发动机。类的这种层次关系可用来描述现实世界中的类的组成的抽象关系。上层的类具有整体性,下层的类具有成员性。在类的结构关系中,通常上层类称为父类或超类, 下层类称为子类。 5. 消息和方法 对象之间进行通信的一种构造叫做消息。 在对象的操作中, 当一个消息发送给某个对象时, 消息包含接收对象去执行某种操作的信息。 接收消息的对象经过解释,然后给予响应。 这种通信机制称为消息传递。发送一条消息至少要包含说明接收消息的对象名、 发送给该对象的消息名(即对象名.方法名),一般还要对参数加以说明,参数可以是只有认识消息的对象所知道的变量名,或者是所有对象都知道的全局变量名。 消息传递是从外部使得一个对象具有某种主动数据的行为。 对于一个系统来说,使用消息传递的方法可更好地利用对象的分离功能。 类中操作的实现过程叫做方法, 一个方法有方法名、 参数及方法体。 当一个对象接收一条消息后,它所包含的方法决定对象怎样动作。 方法也可以发送消息给其他对象,请求执行某一动作或提供信息。由于对象的内部对用户是密封的, 所以消息只是对象同外部世界连接的管道。而对象内部的数据只能被自己的方法所操纵,消息传递如图10.1所示。 图 10.1 对象、 类和消息传递 10.3.3面向对象的特征 1. 对象唯一性 每个对象都有自身唯一的标识,通过这种标识,可找到相应的对象。在对象的整个生命期中,它的标识都不改变, 不同的对象不能有相同的标识。在对象建立时,由系统授予新对象唯一的对象标识符,它在历史版本管理中有巨大作用。 2. 分类性 分类性是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类。一个类就是这样一种抽象,它反映了与应用有关的重要性质,而忽略其他一些无关内容。任何类的划分都是主观的,但必须与具体的应用有关。 每个类是个体对象的可能无限集合,而每个对象是相关类的实例。 3. 继承性 继承性是父类和子类之间共享数据结构和方法的机制, 这是类之间的一种关系。 在定义和实现一个类的时候, 可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容做为自己的内容,并加入若干新的内容。 继承性是面向对象程序设计语言不同于其他语言的最主要的特点, 是其他语言所没有的。 在类层次中, 子类只继承一个父类的数据结构和方法, 则称为单重继承; 在类层次中,子类继承了多个父类的数据结构和方法,则称为多重继承。 在软件开发中, 类的继承性使所建立的软件具有开放性, 可进行扩充, 是信息组织与分类的行之有效的方法,它简化了对象、 类的创建工作量, 增加了代码的可重用性。 采用继承性, 提供了类的规范的等级结构,对单重继承, 可用树型结构来描述; 对多重继承,可用网型结构来描述。通过类的继承关系, 使公共的特性能够共享,提高了软件的重用性。 首先进行共同特性的设计和验证,然后自顶向下来开发,逐步加入新的内容, 符合逐步细化的原则,通过继承,便于实现多态性。 4. 多态性(多形性) 多态性是指相同的操作或函数、过程作用于多种类型的对象上并获得不同结果。不同的对象,收到同一消息产生完全不同的结果, 这种现象称为多态性。如MOVE操作,可以是窗口对象的移动操作, 也可以是国际象棋棋子移动的操作。 多态性允许每个对象以适合自身的方式去响应共同的消息。 这样就增强了操作的透明性、 可理解性和可维护性。用户不必为相同的功能操作作用于不同类型的对象而费心去识别。 多态性增强了软件的灵活性和重用性。允许用更为明确、 易懂的方式去建立通用软件。 多态性与继承性相结合使软件具有更广泛的重用性和可扩充性。 10.3.4 面向对象的要素 面向对象有一些基本要素。虽然这些要素并不是仅为面向对象系统所独有, 但这些要素很适合于用来支持面向对象的系统。 1. 抽象 抽象是指强调实体
文档评论(0)