2.3 面向对象的程序设计
【考点1】关于面向对象方法
(1)面向对象的本质
系统中的对象以及对象之间的关系能够如实地反映问题域中固有事物及其关系。
(2)面向对象的主要优点
①与人类习惯的思维方法一致
面向对象的设计和技术以对象为核心,与客观实体有直接的对应关系,对象之间传递信息互相联系,以模拟现实世界中不同事物彼此之间的联系。
②稳定性好
当对系统的功能需求变化时不会引起软件结构的整体变化,仅需要做一些局部性的修改。
③可重用性好
a.对象有很强的自含性,且对象固有的封装性使得对象的内部实现与外界隔离,具有较强的独立性。
b.重复使用一个对象的两种方法:
第一,创建该类的实例,直接使用它;
第二,从它派生出一个满足当前需要的新类。
④易于开发大型软件产品
用面向对象范型开发软件时,可以把一个大型产品看作是一系列本质上相互独立的小产品来处理,这就不仅降低了开发的技术难度,而且也使得对开发工作的管理变得容易。
⑤可维护性好
软件的可维护性是长期困扰人们的一个严重问题,是软件危机的突出表现。
(3)面向对象设计软件可维护性好的主要表现
①稳定性比较好;
②比较容易修改;
③比较容易理解;
④易于测试和调试。
【真题演练】
面向对象方法中,实现对象的数据和操作结合于统一体中的是( )。[2014年9月真题]
A.结合
B.封装
C.隐藏
D.抽象
【答案】B
【解析】封装指屏蔽数据的具体结构以及操作的算法,可以实现对象的数据和操作的统一。答案选择B选项。
【考点2】面向对象方法的基本概念
(1)对象
①概念
用来表示客观世界中的任何实体。
②面向对象的程序设计方法中的对象
该对象是系统中用来描述客观事物的一个实体,是构成系统的一个基本单位,由一组表示其静态特征的属性和它可执行的一组操作组成。
③对象的属性和操作
a.属性
属性即对象包含的信息,在设计对象时确定,一般只能通过执行对象的操作来改变。
b.操作
描述了对象执行的功能,通过消息传递还可以为其他对象使用,操作的过程对外是封闭的,用户只能看到操作实施的结果,所有的操作过程都封装在对象中。
④对象具有的特点:
a.标识唯一性
对象是可区分的,且这种区分是通过对象的内在本质,而不是通过描述来区分。
b.分类性
可以将具有相同属性和操作的对象抽象成类。
c.多态性
同一个操作可以是不同对象的行为。
d.封装性
从外面只能看到对象的外部特征。其内部状态只能由其自身改变。
e.模块独立性好
对象内部各种元素彼此结合得很紧密,内聚性强。
(2)类和实例
①类是具有相同属性,共同方法的对象的集合,它描述了属于该对象类型的所有对象的性质,一个对象是其对应类的一个实例。
②使用“对象”这个术语时,可以指一个具体的对象,也可以泛指一般的对象。当使用“实例”这个术语时,必然是指一个具体的对象。
③类是关于对象性质的描述,它同对象一样,包括一组数据属性和在数据上的一组合法操作。
(3)消息
面向对象的世界是通过对象与对象间彼此的相互合作来推动的,对象间的这种相互合作需要一个机制协助进行,这样的机制称为“消息”。
消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。消息的使用类似于函数调用,消息中指定了某一个实例,一个操作名和一个参数表(可空)。
一个消息由下述三部分组成:
a.接收消息的对象的名称;
b.消息标识符(也称为消息名);
c.零个或多个参数。
(4)继承
①定义:继承是使用已有的类定义作为基础建立新类的定义技术,已有的类可当做基类来引用,新类当做派生类来引用。
②面对对象软件技术的许多功能和优点来源于将类组成一个层次结构的系统:一个类的上层可以有父类下层可以有子类,这种系统的重要性质是继承性;一个类直接继承父类的特性,子类自动地共享基类中定义的数据和方法。
③继承的分类
a.单继承
一个类只允许有一个父类,类等级为树状结构。
b.多继承
一个类允许有多个父类,可以组合多个父类的性质构成所需要的性质。功能更强,使用更方便;注意避免二义性。
④继承性的优点
a.相似的对象可以共享程序代码和数据结构,从而大大减少了程序中的冗余信息,提高软件的可重用性,便于软件修改维护。
b.用户在开发新的应用系统时不必完全从零开始,可以继承原有的相似系统的功能或者从类库中选取需要的类,再派生出新的类以实现所需要的功能。
(5)多态性
①多态性是指对象根据所接收的消息而做出动作,同样的消息被不同的对象接收时可导致完全不同的行动的一种现象。
②在面向对象的软件技术中,多态性是指子类对象可以像父类对象那样使用,同样的消息既可以发送给父类对象也可以发送给子类对象。
③多态性机制增加了面向对象软件系统的灵活性,进一步减少了信息冗余,显著地提高了软件的可重用性和可扩充性。
【真题演练】
1在面向对象方法中,不属于“对象”基本特点的是( )。[2013年9月真题]
A.一致性
B.分类性
C.多态性
D.标识唯一性
【答案】A
【解析】对象的基本特点有:①标识唯一性,是指对象是可区分的。②分类性,是指可将具有相同属性和操作的对象抽象成类。③多态性,是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不同的结果。④封装性,是指对象的内部对外不可见,在外面不可直接使用对象的处理能力,也不能直接修改对象的内部状态。⑤模块独立性,是指模块内部各部分及模块间的关系的一种衡量标准。答案选择A选项。
2下面对类一对象主要特征描述正确的是( )。[2015年3月真题]
A.对象唯一性
B.对象无关性
C.类的单一性
D.类的依赖性
【答案】A
【解析】对象的特点主要包括:①标识唯一性;②分类性;③多态性;④封装性;⑤模块独立性。类具有对象的特征,是关于对象的抽象描述。答案选择A选项。
3面向对象方法中,继承是指( )。[2015年3月真题]
A.一组对象所具有的相似性质
B.一个对象具有另一个对象的性质
C.各对象之间的共同性质
D.类之间共享属性和操作的机制
【答案】D
【解析】继承性机制使得子类不仅可以重用其父类的数据结构和程序代码,而且可以在父类代码的基础上方便地修改和扩充,这种修改并不影响对原有类的使用,即实现了类之间共享属性和操作。答案选择D选项。