第7章 面向对象方法学引论
面向对象方法学引论汇总

2.软件重用程度很低 重用也称为再用或复用,是指同一事物不经修改 或稍加改动就多次重复使用。 软件重用是节约人力,提高软件生产率的重要途 径。 结构分析、结构设计和结构程序设计(简写为 SA -SD-SP)技术,虽然给软件产业带来了巨大 进步,但却没能很好地解决软件 重用问题。 几乎每次开发一个新的软件系统时,都要针对这 个具体的系统作大量重复而又繁琐的工作。
预先定义需求的策略所作的假设,只对某些软件成立,
对于多数软件并不成立。人们为了充实和细化他们的 初步设想,通常需要经过在某个能运行的系统上的实 践过程。 项目参与者之间存在通信鸿沟 良好的通信和相互理解对于保证工程成功是至关重要 的。 各种文档,本质上都是被动、静止的通信工具,通过 它们来深刻理解一个动态系统是困难的。
32
2.对象的定义(三种定义形式) (1)对象是具有相同状态的一组操作的集合。(面 向对象程序设计的角度) (2)对象是对属性值和操作的封装。(信息模拟的 角度) (3)对象::=( ID, MS, DS, MI) ID是对象的标识或名字 MS是对象中的操作集合 DS是对象的数据结构 M!是对象受理的消息名集合(即对外接口)
5
4.软件往往不能真正满足用户需要 用传统方法开发涉及多种不同领域知识的大型软件系统, 或开发需求模糊或需求动态变化的系统时,所开发出的软 件系统往往不能真正满足用户的需要。 所谓“不能真正满足用户的需要”,主要有以下两种表 现: 一种是开发人员不能完全获 得或不能彻底理解用户的需 求,以致开发出的软件系统与用户预期的系统不一致,不 能满足用户的需要。 另一种表现是,所开发出的系统不能适应用户需求经常变 化的情况,系统的稳定性和可扩充性不能满足要求。
2
9· 1· 1存在的问题
软件工程电子课件第7章 面向对象方法学

属性(attribute)就是类中所定义的数据,它是对客观 世界实体所具有的性质的抽象。类的每个实例都有自己特 有的属性值。在C++语言中把属性称为数据成员。
2020/11/12
18
7.2.2 其他概念 ➢ 6.封装
在面向对象的程序中,把数据和实现操作的代码集中起来 放在对象内部。使用一个对象的时候,只需知道它向外界 提供的接口形式,而无须知道它的数据结构细节和实现操 作的算法。
4.较易开发大型软件产品
在开发大型软件产品时,组织开发人员的方法不恰当往 往是出现问题的主要原因。用面向对象方法学开发软件时, 构成软件系统的每个对象就像一个微型程序,有自己的数据、 操作、功能和用途,因此,可以把一个大型软件产品分解成 一系列本质上相互独立的小产品来处理,不仅降低了开发的 技术难度,而且也使得对开发工作的管理变得容易多了。
2020/11/12
6ቤተ መጻሕፍቲ ባይዱ
7.1.2面向对象方法学的优点
3.可重用性好
面向对象的软件技术在利用可重用的软件成分构造新的 软件系统时,有很大的灵活性。有两种方法可以重复使用一 个对象类:一种方法是创建该类的实例,从而直接使用它; 另一种方法是从它派生出一个满足当前需要的新类。
2020/11/12
7
7.1.2面向对象方法学的优点
面向对象的软件技术符合人们习惯的思维方式,用这种 方法所建立的软件系统的结构与问题空间的结构基本一致, 因此,面向对象的软件系统比较容易理解。
2020/11/12
9
7.1.2面向对象方法学的优点
2020/11/12
10
7.2.1 对象
在应用领域中有意义的、与所要解决的问题有关系的任 何事物都可以作为对象,它既可以是具体的物理实体的抽象, 也可以是人为的概念,或者是任何有明确边界和意义的东西。
面向对象方法学概述精品PPT课件

用面向对象方法开发软件,通常需要建立3种形式的模 型:描述系统数据结构的对象模型,描述系统控制结构 的动态模型、描述系统功能的功能模型。 在整个开发过程中,3种模型一直都在发展完善。在面向 对象分析中,构造出完全独立于实现的应用域模型;在 面向对象设计过程中,把求解域的结构逐渐加入到模型 中;在实现阶段,把应用域和求解域的结构编成代码并 进行严格的测试验证
面向对象分析设计方法(OOAD): ▪ 兴起于20世纪80年代,从20世纪90年代起至今它已
经在分析设计领域占据了无可争议的主流地位 ▪ 1997年11月,UML被国际对象管理组织(OGM)采
纳,此后UML成了OOAD建模语言的国际标准。 ▪ UML对于OOAD中的语义、图形表示法和使用规则做
了完整而详细的定义。其建模能力超过了以往任何 OOAD方法,当然复杂性也随之膨胀。 ▪ 真正使UML流行的是Rational公司基于UML的建模 工具Rose。
每次重复都会增加或明确一些目标系统的性质,但却不是对先前工 作结果的本质性改动,这样就减少了不一致性,降低了出错的可能。 P22喷泉模型
面向对象方法的特点
1. 通用组织方法 2. 抽象 3. 封装或信息隐蔽 4. 继承 5. 多态 6. 消息通信 7. 关联 8. 复用
1. 通用组织方法
通用组织方法用于协助组织信息系统模型以及最终编写的软件。包 括: 对象及其属性或者特征。 整体和部分(is a part of)。 类和成员(is a member of) 。 2. 抽象 忽略问题域的无关部分而集中考虑关键部分的原则
第一章 面向对象方法学引论
传统方法学的缺点
僵化的瀑布模型 瀑布模型意味着生命周期各阶段间存在着严
第7章 面向对象学习方法学

第七章面向对象学习方法学面向对象方法学的出发点和基本原则,是尽可能按照人类的习惯思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也就是使描述问题域空间与实现解法的解空间在结构上尽可能一致.与传统的结构化方法相比,使用面向对象方法开发的软件,其稳定性,可修改性和可重用性都比较好.本章内容主要包括:传统方法学的缺点,面向对象的基本概念,面向对象模型.7.1 基础知识7.1.1 传统方法学的缺点结构化几其他方法学的本质,是在具体的软件开发之前,通过需求分析预先定义软件需求.然后一个一个阶段地开发用户所需要的软件,实现预先定义的软件需要.过去的经验需要告诉我们,结构化及其他方法学并不能完全消除软件危机.结构化及其他方法学仍然有许多不足之处.1.问题的表现1)生产效率低在生命周期方法学中,特别重视软件开发的阶段性.为了提高了软件开发的效率,减少重大返工次数,强调必须早每个阶段结束之前进行评估.从而开发过程中实行严格的质量管理,确实提高了许多软件的开发的成功率.但是,时间表明,开发高利率仍然很有用.2)不能满足用户需要实践表明,在开发需要模糊或需求动态变化的系统时,软件系统的结果往往不能满足用户需求的变化.主要表现在两个方面:一种是开发人员不能完全获得彻底理解用户的需要,以至开发的软件系统与用户预期的系统不一致;另一种表现是,所开发的系统不能适应用户需求变化,系统的稳定性和可扩充性不能满足需要.3)软件服用就是将已有的软件成分用于构造新的软见系统.软件复用是节约人力,提高软件效率的重要途径.结构分析.设计,几乎每一次开发一个系统时都需要针对这个具体的系统做大量的重复劳动..思维成果的可复用性差.4)软件很难维护实践经验告诉我们,即使是用生命周期方法学开发出来的软件,维护起来仍然相当困难,软件维护成本很高.2.问题的原因1)结构化技术本身的问题结构分析和设计技术的基本思想是从目标系统整体功能的单个处理着手,自顶向下不断的把复杂的处理分解为子处理,一层一层的分解下去,直到剩下若干个容易实现的子处理为止。
面向对象方法学引论.pptx

图9.14 多重继承示例
第35页/共67页
完全继承指的是父类的所有子类都已在类图中穷举出来了,图示符号是指定{完全}约束。不完全继承与完全继承恰好相反,父类的子类并没有都穷举出来,随着对问题理解的深入,可不断补充和维护,这为日后系统的扩充和维护带来很大方便。不完全继承是一般情况下默认的继承关系。
第2页/共67页
Message
Send by method
对象Object
Object
= 属性Attribute
Attributes: location; employee; ……
+ 操作Method
Methods: send; sell; ……
注意:对象内部的属性不允许外部用户直接改动,只有当它提供了相应的服务操作时,用户才能通过发送消息来提请它执行。
④ 消息(message):对象间只能通过发送消息进行联系,外界不能处理对象的内部数据,只能通过消息请求它进行处理(如果它提供相应消息的话)。
第4页/共67页
OOM:以object 为核心,强调对现实概念的模拟而不强调算法。“面向对象方法学的基本原则,是按照人们习惯的思维方式建立问题域的模型,开发出尽可能直观、自然地表现求解方法的软件系统”。
表示关系的符号
第17页/共67页
类1
类2
角色
角色
关联名
角色表示该类在这个关联中的作用。如果没有显式标出角色名,则意味着用类名作为角色名。重数:该类有多少个对象与对方的一个对象连接。
关联
重数
1、关联
第18页/共67页
在表示关联的直线两端可以写上重数(multiplicity),它表示该类有多少个对象与对方的一个对象连接。重数的表示方法通常有:0…1 表示0到1个对象0…*或* 表示0到多个对象1+或1…* 表示1到多个对象1…15 表示1到15个对象3 表示3个对象如果图中未明确标出关联的重数,则默认重数是1。
面向对象方法学引论

❖ 面向对象方法学的出发点和基本原则,是尽 可能模拟人类习惯的思维方式,使开发软件 的方法与过程尽可能接近人类认识世界解决 问题的方法与过程
痛苦的系统,艰难的维护
❖ 在传统的面向过程的软件开发中,是由变量 直接过渡到功能,中间靠复杂的算法维系, 这就是人们常说的“语义断层”。
❖ 而面向对象方法由变量到方法,再到模块, 最后到软件。
面向对象方法学 引论
❖ 面向对象的思想最初起源于20世纪60年代中 期的仿真程序设计语言Simula 67
❖ 20世纪80年代初 Smalltalk成为面向对象技术 发展的一个重要里程碑 。
❖ 传统的软件工程方法学在许多中、小规模软 件项目中都获得了成功,但当把这种方法学 应用于大型软件产品的开发时,似乎取得成 功的例子很少。
概括地说,面向对象方法具有下述4个要点: ❖ (1) 认为客观世界是由各种对象组成的
❖ (2)派生类)与父类(或称为基 类)的关系,把若干个对象类组成一个层次结 构的系统
❖ (4) 对象彼此之间仅能通过传递消息互相联系。
面向对象的方法学可以用下列方程来概括: ❖ OO=objects +classes +inheritance+
communication with messages
面向对象方法学的优点
❖ 1. 与人类习惯的思维方法一致
❖ 2. 稳定性好
❖ 3. 可重用性好
❖ 4. 较易开发大型软件产品
❖ 5. 可维护性好
对象
❖ 在应用领域中有意义的、与所要解决的问题 有关系的任何事物都可以作为对象
对象的定义
❖ (1) 定义1: 对象是具有相同状态的一组操作 的集合。
❖ (2) 定义2: 对象是对问题域中某个东西的抽 象,这种抽象反映了系统保存有关这个东西 的信息或与它交互的能力。
第7章 面向对象方法学引论
面向对象方法学比较自然地模拟了人类认识客观 世界的思维方式,它所追求的目标和遵循的基本原则, 就是使描述问题的问题空间和在计算机中解决问题的
用面向对象观点建立系统的模型,能够促进和加 深对系统的理解,有助于开发出更容易理解、更容易 维护的软件。通常,人们从三个互不相同然而又密切 相关的角度建立起三种不同的模型。它们分别是描述 系统静态结构的对象模型、描述系统控制结构的动态 模型、以及描述系统计算结构的功能模型。其中,对
与传统方法相反,面向对象方法是一种以数据或
信息为主线,把数据和处理相结合的方法。面向对象
方法把对象作为由数据及可以施加在这些数据上的操 作所构成的统一体
· 认为客观世界是由各种对象组成的,任何事物
都是对象,复杂的对象可以由比较简单的对象以某种
方式组合而成。 · 把所有对象都划分成各种对象类(简称为类,
一个典型的软件系统组合了上述三方面内容:它 使用数据结构(对象模型),执行操作(动态模型),并 且完成数据值的变化(功能模型)
7.5 对象模型
对象模型表示静态的、结构化的系统的“数据” 性质。它是对模拟客观世界实体的对象以及对象彼此 间的关系的映射,描述了系统的静态结构。Fra bibliotek7.5.1
表示类—&—
3. ·以数据为中心。 ·对象是主动的。
·实现了数据封装。
·本质上具有并行性。 ·模块独立性好。
7.3.2
1. 类(Class) 在面向对象的软件技术中,“类”就是对具有相 同数据和相同操作的一组相似对象的定义,也就是说, 类是对具有相同属性和行为的一个或多个对象的描述,
通常在这种描述中也包括对怎样创建该类的新对象的
字,然而不同层次中的每个类却各自按自己的需要来
面向对象方法学概述资料
9.1 面向对象方法学概述9.2 面向对象的概念9.3 面向对象建模9.4 对象模型9.5 动态模型9.6 功能模型9.7 3种模型之间的关系传统的软件工程方法学曾经给软件产业带来巨大进步,部分地缓解了软件危机,使用这种方法学开发的许多中、小规模软件项目都获得了成功。
但是,人们也注意到当把这种方法学应用于大型软件产品的开发时,似乎很少取得成功。
在20世纪60年代后期出现的面向对象编程语言Simula-67中首次引入了类和对象的概念,自20世纪80年代中期起,人们开始注重面向对象分析和设计的研究,逐步形成了面向对象方法学。
到了20世纪90年代,面向对象方法学已经成为人们在开发软件时首选的范型。
面向对象技术已成为当前最好的软件开发技术。
9.1 面向对象方法学概述9.1.1 面向对象方法学的要点面向对象方法学的出发点和基本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界解决问题的方法与过程,也就是使描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能一致。
面向对象方法学所提供的“对象”概念,是让软件开发者自己定义或选取解空间对象,然后把软件系统作为一系列离散的解空间对象的集合。
应该使这些解空间对象与问题空间对象尽可能一致。
这些解空间对象彼此间通过发送消息而相互作用,从而得出问题的解。
也就是说,面向对象方法是一种新的思维方法,它是把程序看作是相互协作而又彼此独立的对象的集合。
概括地说,面向对象方法具有下述4个要点:(1) 认为客观世界是由各种对象组成的,任何事物都是对象,复杂的对象可以由比较简单的对象以某种方式组合而成。
按照这种观点,可以认为整个世界就是一个最复杂的对象。
因此,面向对象的软件系统是由对象组成的,软件中的任何元素都是对象,复杂的软件对象由比较简单的对象组合而成。
由此可见,面向对象方法用对象分解取代了传统方法的功能分解。
(2) 把所有对象都划分成各种对象类(简称为类,class),每个对象类都定义了一组数据和一组方法。
软件工程导论面向对象方法学
软件工程导论面向对象方法学
面向对象方法学是一种软件设计和开发的方法,它强调了把系统抽象为一个对象的集合,对象之间通过消息来通信和互动。
该方法着重于对象设计和软件设计的整体架构,注重模块化和重用性。
在该方法论中,软件系统起始于一个或多个对象的辨识,这些对象由系统模型中的实体或者概念抽象得到。
每个对象都拥有描述自身信息的属性和操作这些属性的行为。
对象的属性即它的状态,而行为则是要对状态进行操作的方法。
与传统的过程式编程相比,面向对象编程的主要区别在于其依赖数据和行为的组合。
面向对象方法学遵循几个原则,如封装、继承和多态性。
封装是指一个对象隐藏了其内部的状态并通过接口提供与外部交互的操作。
继承允许子类从父类继承其属性和行为,减少了代码的复制和粘贴。
多态性则允许不同的对象实现相同的操作方式,从而增加了代码的灵活性和重用性。
该方法具有以下优点:
1. 提高了复用性:由于设计时注重模块化,提高了组件的可重用性。
2. 提高了灵活性:对象编程提供了较大的灵活性,可以随时增加、修改或删除对象。
3. 提高了可维护性:由于对象间关系清晰明确,修改一个对象不会影响其他对象的运行,因而提高了系统的可维护性。
4. 提高了可扩展性:由于对象可以根据需要增加或删除,因而可以更方便地扩展系统。
总之,面向对象方法学是一种适用于大型软件设计和开发的方法,它强调了系统的模块化和重用性,并具有良好的灵活性、可维护性和可扩展性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8
面向对象方法学概述 面向对象方法学的主要优点 面向对象的概念 面向对象建模 对象模型 动态模型 功能模型 小结 退出
7.1 面向对象方法学概述
面向对象(Object-Oriented,缩写为OO)方法学的出发点和基 面向对象(Object-Oriented,缩写为OO)方法学的出发点和基 (Object 缩写为OO) 本原则,是尽可能模拟人类习惯的思维方式, 本原则,是尽可能模拟人类习惯的思维方式,使开发软件的方法 与过程尽可能接近人类认识世界解决问题的方法与过程, 与过程尽可能接近人类认识世界解决问题的方法与过程,也就是 使描述问题的问题空间(也称为问题域)与实现解法的解空间( 使描述问题的问题空间(也称为问题域)与实现解法的解空间(也 称为求解域)在结构上尽可能一致。 称为求解域)在结构上尽可能一致。
封装(Encapsulation) (Encapsulation) 9. 封装(Encapsulation) 从字面上理解,所谓封装就是把某个事物包起来, 从字面上理解,所谓封装就是把某个事物包起来, 使外界不知道该事物的具体内容。 使外界不知道该事物的具体内容。 综上所述,具有封装性的条件如下。 综上所述,具有封装性的条件如下。 · 有一个清晰的边界。所有私有数据和实现操作 有一个清晰的边界。 的代码都被封装在这个边界内, 的代码都被封装在这个边界内,从外面看不见更不能 直接访问。 直接访问。 · 有确定的接口(即协议)。这些接口就是对象可 有确定的接口(即协议) 以接受的消息,只能通过向对象发送消息来使用它。 以接受的消息,只能通过向对象发送消息来使用它。 · 受保护的内部实现。实现对象功能的细节(私有 受保护的内部实现。实现对象功能的细节( 数据和代码)不能在定义该对象的类的范围外进行访问。 数据和代码)不能在定义该对象的类的范围外进行访问。 封装性也就是信息隐藏,通过封装把对象的实现细节 封装性也就是信息隐藏, 对外界隐藏起来了。 对外界隐藏起来了。
定义3 (3) 定义3 对象∷=<ID,MS,DS,MI> 对象∷=<ID,MS,DS,MI> 其中,ID是对象的标识或名字 其中,ID是对象的标识或名字 是对象的标识或名字 MS是对象中的操作集合 MS是对象中的操作集合 是对象中的操作集合 DS是对象的数据结构 DS是对象的数据结构 是对象的数据结构 MI是对象受理的消息名集合(即对外接口) MI是对象受理的消息名集合(即对外接口) 是对象受理的消息名集合 这个定义是一个形式化的定义。 这个定义是一个形式化的定义。
消息(Message) (Message) 3. 消息(Message) 消息, 消息,就是要求某个对象执行在定义它的那个类 中所定义的某个操作的规格说明。通常, 中所定义的某个操作的规格说明。通常,一个消息由 下述三部分组成: 下述三部分组成: · 接收消息的对象; 接收消息的对象; · 消息选择符(也称为消息名); 消息选择符(也称为消息名) · 零个或多个变元。 零个或多个变元。
方法(Method) (Method) 4. 方法(Method) 方法,就是对象所能执行的操作, 方法,就是对象所能执行的操作,也就是类中所 定义的服务。方法描述了对象执行操作的算法 定义的服务。方法描述了对象执行操作的算法,响应 消息的方法。 消息的方法。 5. 属性(Attribute) 属性(Attribute) (Attribute) 属性,就是类中所定义的数据, 属性,就是类中所定义的数据,它是对客观世界 实体所具有的性质的抽象。类的每个实例都有自己特 实体所具有的性质的抽象。类的每个实例都有自己特 有的属性值。 有的属性值。
7.3 面向对象的概念
7.3.1 对象 对象 在应用领域中有意义的、 在应用领域中有意义的、与所要解决的问题有关 系的任何事物都可以作为对象(Object) (Object), 系的任何事物都可以作为对象(Object),它既可以是 具体的物理实体的抽象,也可以是人为的概念, 具体的物理实体的抽象,也可以是人为的概念,或者 是任何有明确边界和意义的东西。例如,一名职工、 是任何有明确边界和意义的东西。例如,一名职工、 一家公司、一个窗口、一座图书馆、一本图书、 一家公司、一个窗口、一座图书馆、一本图书、贷款 和借款等,都可以作为一个对象。总之, 和借款等,都可以作为一个对象。总之,对象是对问 题域中某个实体的抽象, 题域中某个实体的抽象,设立某个对象就反映了软件 系统保存有关它的信息并具与它进行交互的能力。 系统保存有关它的信息并具与它进行交互的能力。
· 按照子类(或称为派生类)与父类(或称为基类) 按照子类(或称为派生类)与父类(或称为基类) 的关系,把若干个对象类组成一个层次结构的系统( 的关系,把若干个对象类组成一个层次结构的系统(也 称为类等级)。 称为类等级) · 对象彼此之间仅能通过传递消息互相联系。 对象彼此之间仅能通过传递消息互相联系。 面向对象的方法学可以用下列方程来概括: 面向对象的方法学可以用下列方程来概括: OO=Objects+Classes+Inheritance+Communication messages with messages 也就是说, 也就是说,面向对象就是既使用对象又使用类和 继承等机制, 继承等机制,而且对象之间仅能通过传递消息实现彼 此通信。 此通信。
图7.2 用自动机模拟对象
对象的特点 3. 对象的特点 · 以数据为中心。 以数据为中心。 · 对象是主动的。 对象是主动的。 · 实现了数据封装。 实现了数据封装。 · 本质上具有并行性。 本质上具有并行性。 · 模块独立性好。 模块独立性好。
7.3.2
其他概念 其他概念
1. 类(Class) 在面向对象的软件技术中, 在面向对象的软件技术中,“类”就是对具有相 同数据和相同操作的一组相似对象的定义,也就是说, 同数据和相同操作的一组相似对象的定义,也就是说, 类是对具有相同属性和行为的一个或多个对象的描述, 类是对具有相同属性和行为的一个或多个对象的描述, 通常在这种描述中也包括对怎样创建该类的新对象的 说明。 说明。 实例(Instance) (Instance) 2. 实例(Instance) 实例就是由某个特定的类所描述的一个具体的对 象。
从动态角度或对象的实现机制来看,对象是一台自动机。 从动态角度或对象的实现机制来看,对象是一台自动机。具有内 ,n), 部状态S 操作f (i=1,2,…,n) 且与操作f 部状态S,操作fi(i=1,2, ,n),且与操作fi对应的状态转换函数为 ,n)的一个对象 7.2所示的自动机来模拟 gi(i=1,2,…,n)的一个对象,可以用图7.2所示的自动机来模拟。 (i=1,2, ,n)的一个对象,可以用图7.2所示的自动机来模拟。
概括地说,面向对象方法具有下述四个要点。 概括地说,面向对象方法具有下述四个要点。 · 认为客观世界是由各种对象组成的,任何事物 认为客观世界是由各种对象组成的, 都是对象, 都是对象,复杂的对象可以由比较简单的对象以某种 方式组合而成。 方式组合而成。 · 把所有对象都划分成各种对象类(简称为类, 把所有对象都划分成各种对象类(简称为类, Class),每个对象类都定义了一组数据和一组方法。 Class),每个对象类都定义了一组数据和一组方法。 数据用于表示对象的静态属性,是对象的状态信息。 数据用于表示对象的静态属性,是对象的状态信息。 类中定义的方法,是允许施加于该类对象上的操作, 类中定义的方法,是允许施加于该类对象上的操作, 是该类所有对象共享的, 是该类所有对象共享的,并不需要为每个对象都复制 操作的代码。 操作的代码。
ቤተ መጻሕፍቲ ባይዱ
继承(Inheritance) (Inheritance) 7. 继承(Inheritance) 广义地说, 广义地说,继承是指能够直接获得已有的性质和 特征,而不必重复定义它们。 特征,而不必重复定义它们。在面向对象的软件技术 中,继承是子类自动地共享基类中定义的数据和方法 的机制。 的机制。 当一个类只允许有一个父类时,也就是说, 当一个类只允许有一个父类时,也就是说,当类 等级为树形结构时,类的继承是单继承;当允许一个 等级为树形结构时,类的继承是单继承; 类有多个父类时,类的继承是多重继承。 类有多个父类时,类的继承是多重继承。
图7.3 实现继承机制的原理
多态性(Polymorphism) (Polymorphism) 8. 多态性(Polymorphism) 多态性一词来源于希腊语,意思是“ 多态性一词来源于希腊语,意思是“有许多形 态”。 在面向对象的软件技术中,多态性是指子类对象 在面向对象的软件技术中, 可以像父类对象那样使用, 可以像父类对象那样使用,同样的消息既可以发送给 父类对象也可以发送给子类对象。也就是说, 父类对象也可以发送给子类对象。也就是说,在类等 级的不同层次中可以共享(公用)一个行为(方法) 级的不同层次中可以共享(公用)一个行为(方法)的名 字,然而不同层次中的每个类却各自按自己的需要来 实现这个行为。当对象接收到发送给它的消息时, 实现这个行为。当对象接收到发送给它的消息时,根 据该对象所属于的类动态选用在该类中定义的实现算 法。
通常, 通常,客观世界中的实体既具有静态的属性又具 有动态的行为。 有动态的行为。然而传统语言提供的解空间对象实质 上却仅是描述实体属性的数据, 上却仅是描述实体属性的数据,必须在程序中从外部 对它施加操作,才能模拟它的行为。 对它施加操作,才能模拟它的行为。 与传统方法相反,面向对象方法是一种以数据或 与传统方法相反, 信息为主线,把数据和处理相结合的方法。 信息为主线,把数据和处理相结合的方法。面向对象 方法把对象作为由数据及可以施加在这些数据上的操 作所构成的统一体
图7.1 对象的形象表示
对象的形象表示 1. 对象的形象表示 对象的定义 2. 对象的定义 定义1 (1) 定义1 对象是具有相同状态的一组操作的集合。 对象是具有相同状态的一组操作的集合。 这个定义主要是从面向对象程序设计的角度看 对象” “对象”。 定义2 (2) 定义2 对象是对问题域中某个东西的抽象, 对象是对问题域中某个东西的抽象,这种抽象反 映了系统保存有关这个东西的信息或与它交互的能力。 映了系统保存有关这个东西的信息或与它交互的能力。 也就是说,对象是对属性值和操作的封装。 也就是说,对象是对属性值和操作的封装。 这个定义着重从信息模拟的角度看待“对象” 这个定义着重从信息模拟的角度看待“对象”。