面向对象程序设计教程答案
面向对象程序设计教程( C++语言描述) 题解与课程设计指导
第1章
面向对象程序设计概论
一、名词解释
抽象封装消息
【问题解答】
面向对象方法中的抽象是指对具体问题( 对象) 进行概括, 抽出一类对象的公共性质并加以描述的过程。
面向对象方法中的封装就是把抽象出来的对象的属性和行为结合成一个独立的单位, 并尽可能隐蔽对象的内部细节。
消息是面向对象程序设计用来描述对象之间通信的机制。一个消息就是一个对象要求另一个对象实施某种操作的一个请求。
二、填空题
( 1) 当前有面向过程的结构化程序设计方法和面向对象的程序设计方法两种重要的程序设计方法。
( 2) 结构化程序设计方法中的模块由顺序、选择和循环3种基本结构组成。
( 3) 在结构化程序设计方法中, 程序可表示为程序=数据结构+算法; 而面向对象的程序设计方法, 程序可表示为程序=对象+消息。
( 4) 结构化程序设计方法中的基本模块是过程; 而面向对象程序设计方法中的基本模块是类。
( 5) 面向对象程序设计方法具有抽象性、封装性、继承性和多态性等特点。
三、选择题( 至少选一个, 能够多选)
( 1) 面向对象程序设计着重于( B ) 的设计。
A. 对象
B. 类
C. 算法
D. 数据
( 2) 面向对象程序设计中, 把对象的属性和行为组织在同一个模块内的机制叫做( C ) 。
A. 抽象
B. 继承
C. 封装
D. 多态
( 3) 在面向对象程序设计中, 类经过( D ) 与外界发生关系。
A. 对象
B. 类
C. 消息
D. 接口
( 4) 面向对象程序设计中, 对象与对象之间的通信机制是
( C ) 。
A. 对象
B. 类
C. 消息
D. 接口
( 5) 关于C++与C语言的关系的描述中, ( D ) 是错误的。A. C语言是C++的一个子集 B. C语言与C++是兼容的
C. C++对C语言进行了一些改进
D. C++和C语言都是面向对象的【结果分析】
C语言是面向过程的。C++语言是一种经过改进的更为优化的C语言, 是一种混合型语言, 既面向过程也面向对象。
( 6) 面向对象的程序设计将数据结构与( A ) 放在一起, 作为一个相互依存、不可分割的整体来处理。
A. 算法
B. 信息
C. 数据隐藏
D. 数据抽象
( 7) 下面( A ) 不是面向对象系统所包含的要素。
A. 重载
B. 对象
C. 类
D. 继承【结果分析】
面向对象=对象+类+继承+消息+多态
( 8) 下面说法正确的是( BC ) 。
A. 将数据结构和算法置于同一个函数内, 即为数据封装
B. 一个类经过继承能够获得另一个类的特性
C. 面向对象要求程序员集中于事物的本质特征, 用抽象的观点看待程序
D. 同一消息为不同的对象接受时, 产生的行为是一样的, 这称为一致性
【结果分析】
面向对象程序设计方法具有抽象性、封装性、继承性和多态性等特点。将数据结构和算法置于同一个类内, 即为数据封装。同一消
息为不同的对象接受时, 产生的行为可能是不一样的, 这称为多态性。
( 9) 下面说法正确的是( AD ) 。
A. 对象是计算机内存中的一块区域, 它能够存放代码和数据
B. 对象实际是功能相对独立的一段程序
C. 各个对象间的数据能够共享是对象的一大优点
D. 在面向对象的程序中, 对象之间只能经过消息相互通信
【结果分析】
对象是计算机内存中的一块区域。在对象中, 不但存有数据, 而且存有代码, 使得每个对象在功能上相互之间保持相对独立。对象之间存在各种联系, 但它们之间只能经过消息进行通信。
四、判断题
( 1) 在高级程序设计语言中, 一般用类来实现对象, 类是具有相同属性和行为的一组对象的集合, 它是创立对象的模板。
( √ )
( 2) C++语言只支持面向对象技术的抽象性、封装性、继承性等特性, 而不支持多态性。( × )
【结果分析】
C++语言不但支持面向对象技术的抽象性、封装性、继承性等特性, 而且支持多态性。
( 3) 面向对象程序设计中的消息应该包含”如何做”的信息。( × )
【结果分析】
消息是面向对象程序设计用来描述对象之间通信的机制。向对象”发送消息”只需告诉对象做什么, 对象根据这个消息决定如何做。( 4) 一个消息只能产生特定的响应效果。( × )
【结果分析】
当一个对象发出消息时, 由于接收对象的类型可能不同, 因此, 它们可能做出不同的反应。这样, 一个消息能够产生不同的响应效果, 这种现象叫做多态。
( 5) 类的设计和类的继承机制实现了软件模块的可重用性。( √ )
( 6) C++语言和Java语言均不是一个纯正的面向对象的程序设计的语言。( × )
【结果分析】
Java语言是一个纯正的面向对象的程序设计语言。
( 7) 学习C++语言是学习面向对象的程序设计方法的唯一途径。( × )
【结果分析】
程序设计方法是独立于具体程序设计语言的一种技术, 学习C++语言是学习面向对象程序设计方法的重要途径之一。
什么是面向对象程序设计
1 什么是面向对象程序设计,它与传统的结构式程序有什么不同。 面向对象程序设计是一种适用于设计、开发各类软件的范型。它是将软件看成是一个由对象组成的社会:这些对象具有足够的智能,能理解从其他对象接受的信息,并以适当的行为作出响应;允许低层对象从高层对象继承属性和行为。通过这样的设计思想和方法,将所模拟的现实世界中的事物直接映射到软件系统的解空间。 与传统的结构式程序设计相比,面向对象程序设计吸取了结构式程序设计的一切优点(自顶向下、逐步求精的设计原则)。而二者之间的最大差别表现在: ·面向对象程序采用数据抽象和信息隐藏技术使组成类的数据和操作是不可分割的,避免了结构式程序由于数据和过程分离引起的弊病。 · 面向对象程序是由类定义、对象(类实例)和对象之间的动态联系组成的。而结构式程序是由结构化的数据、过程的定义以及调用过程处理相应的数据组成的 2 用面向对象方法建立模型的思维过程是怎样的。 用面向对象方法建立拟建系统的模型的过程就是从被模拟现实世界的感性具体中抽象要解决的问题概念的过程。这种抽象过程分为知性思维和具体思维两个阶段,其中:·知性思维是从感性材料中分解对象,抽象出一般规定,形成了对对象的普遍认识。·具体思维是从知性思维得到出的一般规定中揭示的事物的深刻本质和规律,其目的是把握具体对象的多样性的统一和不同规定的综合。 3 解释以下概念: ①对象:在现实世界中,对象就是可以感觉到的实体。每个对象具有一个特定的名字以 区别于其他对象;具有一组状态用来描述它的某些特性;具有一组操作,每一个操作决定对象的一种功能或行为(为自身服务的操作和为其他对象提供服务的操作)。而在面向对象系统中,对象是可以标识的存储区域。每个对象的状态被保存在此区域中,而实现一类对象行为的操作(代码)被保存在另外相关的存储器区域中。 ②消息:消息是要求某个对象执行其某种功能操作(方法)的规格说明。因此,消息是 由消息的接收者、消息要求提供的操作(消息名)和必要的参数组成的。 ③类:在现实世界中,类是对一组具有共同特性(属性和行为)的客观对象的抽象。而 在面向对象系统中,类是由程序员自定义的具有特定结构和功能的类型,是一种代码共享的手段。 ④实例:任何一个对象都是该对象所属类的一个具体实例。 ⑤公有消息:是由对象外向对象发送的消息,用于激活该对象的某种方法。 ⑥私有消息:是由对象向自身发送的消息,用于内部操作;该类消息不能从对象外向该 对象发送。 ⑦消息序列:在面向对象系统中一个事件的发生总会有多个对象的多次相互作用才能完 成,使得这些对象能够相互作用的消息组成的序列被称为消息序列。 4 类与实例的关系如何? 类是创建对象的模板,而对象是实现类的实例。属于同一类的不同实例必须具有: ·相同的操作集合; ·相同的静态属性集合; ·不同的对象名和属性动态值。
多维教程 探索课文+翻译
Unit 1 travel language旅行通用语 The Academie Francasie has for decades been the watchdog over the French language. A few years ago, French sensitivity to the influx of English words became so great that law for the purification of French was adopted. The law covers even technical applications. For example, in theory, it is now compuslory in France to refer to the Boeing 747 as a gros-porteur, leasing as credit-bail, etc. the list is very long and detailed and applies to all facets of life. Mr. Chirac, the French President, might well expand on this list and come up with some new French terms for words such as "internet" or "byte stream" just to name a couple. The mind boggles at what the world might face. 数十年来,法兰西语言研究院一直捍卫着法语的尊严。几年前,由于法国人对英语词汇的入侵非常敏感,该机构颁布了净化法语的法律,其内容甚至涉及专业术语。就拿波音747 (Boeing747)来说吧,现在法国人必须用法语词gros-porteur;表示出租的leasing 也变成了credit-bail。此类例子不胜枚举,触及生活的方方面面。法国总统希拉克很可能会继续加大力度,直至连英特网internet和字节流(信息组)byte stream之类的词也找到相应的法语新词。哎,真不知未来的法语会变成什么样。 Unfortunately (or perhaps not), the English language is not so protected. Quite apart from the unforgivable deviations from the king's English prevlent in America, where "honour" is commonly written as "honor" and "night" as "nite," many well-tested has also been give new meanings, making communication somewhat difficult. For example, the boot of a car has become to be called a trunk – a word reserved in England for the main part of a tree. The bonnet is a hood, good old nappies are diapers, and a baby's matinee jacket is a vest. It's obvious that the two countries are indeed separated by what once was a common language! From an American point of view, of course, it could be argued that the British speak English with a speech deficiency. 不幸的是(或许并非不幸),英语没有受到如此的保护。在美国,随处可见严重偏离英国标准英语的美式英语。―honour‖普遍被写成―honor‖,―night‖也变成了―nite‖。许多词意广为人知的英式英语单词被赋予新的解释,交流也变得有些困难。比如说,汽车的行李箱―boot‖变成了―trunk‖(一个在英国指代树干的单词);引擎盖―bonnet‖变成了―hood‖(英式英语中的风帽);老式婴儿尿布―nappy‖变成了―diaper‖(英式英语中的菱格花纹织物);婴儿小外套―matineejacket‖也变成了―vest‖(英国的内衣汗衫)。显而易见,两国英语曾同出一源,而如今却将两国彼此隔离。当然了,按美国人的观点,是英国人的语言表达出了问题。 Even worse English, however, is in use. Anyone who travels in foreign countries and observes it on menus and posters, in hotels, and indeed in everyday life can testify that what used to be the king's lingo has become in these places but a poor relation thereof. Allow me to elaborate. 实际使用中,甚至还有更糟的英语呢!只要你在外国旅游并注意一下菜单、海报、旅店、甚至当地日常生活中的英语,就可以证明过去的标准用语在这些地方已变得不伦不类,让我详例如下: The travel writer Perrot Phillips has taken pains to highlight some of his experiences, which I feel should not be withheld from a wider readership. He refers to a Dutch bulb catalogue which promised customers "a speedy execution" and to an East Berlin cloakroom sign that requested guests to "please hung yourself here." One hopes that nobody took the advice literally. 旅行作家波洛?菲利浦曾不惜笔墨地渲染自己的几番经历,我觉得该有更多的读者了解一下。他提及某份荷兰的灯泡目录,上面对用户承诺有―a speedy execution‘——快速处死(毫无疑问,想表达的应是―送货及时‖)。此外,东柏林的一个衣帽间告示要求客人―please hang yourself here‖——请在这儿吊死自己(本想说的是―将衣帽挂在这儿‖)。只希望没人会真的从字面上去理解。