面向对象技术及应用复习样本
- 格式:doc
- 大小:71.50 KB
- 文档页数:16
资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 复习要点
1. 面向对象方法有哪些特点? ① 模块性: 对象是一个功能和数据独立的单元, 相互之间只能经过对象认可的途径进行通信。互相没有预料不到的影响, 也能够较为自由地为各个不同的软件系统所重用: ② 封装功能: 为信息隐蔽提供具体的实现手段, 用户不必清楚对象的内部细节, 只要了解其功能描述就能够使用: ③ 代码共享: 继承性提供了一种代码共享的手段, 能够避免重复的代码设计, 使得面向对象的方法确实有效; ④ 灵活性: 对象的功能执行是在接收到消息时确定的, 使得对象能够根据自身的特点进行功能实现, 提高了程序设计的灵活性: ⑤ 易维护性: 对象实现了抽象和封装, 使其中可能出现的错误限制在自身, 传播, 易于检错和修改: 不会向外传播, 易于检错和修改。 ⑥ 增量型设计: 面向对象系统能够经过继承机制不断扩充功能, 而不影响原有软件的运行; 局部存储与分布处理: 每个对象经过数据抽象和数据隐蔽将其内容和状态置于自身独立的存储结构中。对象的处理也是自治的, 由对象构成的整个系统的运行和处理是分布式的.
2. 面向对象程序设计与大型程序设计有哪些关系? 面向对象方法提供了一种有效的分解方法, 它进一步发展了基于数据抽象的模块化设计, 在数据抽象和抽象数据类型之上又引入了动态连接和继承性等机制, 这样不但支持了大型程序设计, 同时支持了小型程序设计。 面向对象的设计方法包括两大过程: 第一是战略性过程, 我们称之为面向对象设计, 它是脱离具体程序系统能够独立存在的一种设计方法; 第二是战术性过程, 我们称之为面向对象程序设计, 它具体解决程序设计中各项操资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 作的实现, 这一过程是要与一种具体的程字语言相联系的。如果写出一个公式, 就是 软件系统设计=面向对象设汁+面向对象程序设计 从这个公式能够看出, 面向对象设计的前后两个过程, 恰恰分别支持了大型程序设计与小型程序设计。
3. 有哪些面向对象语言? Smalltalk c++ objective-c Eiffel Ctalk java c#
4. 面向对象设计方法与其它设计方法的比较? 横向比较 从横向来看, 当前程序设计领域中研究的重点, 根据对计算过程的不同认识可分为三种: 第一, 函数式程序设计(FP)将计算过程看作函数作用过程, 即将某一系列函数作用于 输入得到输出的过程, 其中强调等值替换, 逻辑程序设计则无法做到这一点; 第二, 逻辑程序设计(LP)将计算过程看作推演过程, 即将具有初始状态的输入在一系列条件的约束下, 采用推理算法和搜索手段进行匹配、 演算的过程, 有利于启发式; 第三, 面向对象的程序设计(OOP)则将计算过程看作分类过程加状态变换过程, 即系统逐步划分为相互关联的多个对象并建立这些对象的联系, 以引发状态变换, 最终完成计算。 面向对象方法模拟了人类认识问题的较高、 较广层次的过程, 即分类过程, 属于战略性方法; 函数和逻辑方法则更适合于模拟人的逻辑思维, 处于人类认识问题的较深层次过程, 属于战术性方法, 因此它们各有侧重点, 如果能将它们结合才是最完美的。 纵向比较 结构化程序设计强调了功能抽象和模块性, 它将解决问题的过程看作是一个处资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 理过程; 而面向对象的程序设计则综合了功能抽象和数据抽象, 它将解决问题看作是一个分类演绎过程。 第一, 模块与对象: 结构化设计中模块是对功能的抽象, 每个模块都是一个处理单位, 它有输入和输出。而对象是包括数据和操作的整体, 是对数据和功能的抽象和统一。能够说, 对象包含了模块概念, 但比模块更强大; 第二, 过程调用与消息传递: 在结构化程序设计中, 过程为一独立实体, 显式地为它的使用者所见; 而在面向对象的程序设计中, 方法是隶属于对象的, 它不是独立存在的实体, 而是对象的功能体现。消息传递机制很自然地与分布式并行程序、 多机系统和网络通讯模型取得了一致。 第三, 类型与类: 类型与类都是对数据和操作的抽象, 即定义了一组具有共同特征的数据和能够作用于其上的一组操作, 可是类型依然是偏重于操作抽象的, 而类是集成数据抽象和操作抽象的, 二者缺一不可。同时类引入了继承性质, 实现了可扩充性。第三章将详细讨论这一问题。 第四, 静态连接与动态连接: 从程序设计发展来看, 用户对灵活性和方便性的要求不断增强, 因此动态连接代替静态连接是必然趋势, 计算机硬件速度的提高弥补了动态连接的低效性, 为此提供了基础。显然, 面向对象在这一方面与结构化设计相比占有优势。
5. 解释以下概念: 对象; 消息; 封装; 协议; 类; 继承; 对象 是对于客观事物的一种表示, 在计算机中表示为能对外通信的数据以及对该数据施加的各种操作的封装体, 在抽象计算概念-是具有输入和输出的有限状态自动机。 消息 就是对象之间相互请求或相互协作的途径。 资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 封装 就是将抽象得到的数据和行为( 或功能) 相结合, 形成一个有机的整体, 也就是将数据与操作数据的源代码进行有机的结合, 形成”类”, 其中数据和函数都是类的成员。是为实现各式各样的数据传送, 将被传送的数据结构映射进另一种数据结构的处理方式。封装从字面上理解, 就是讲某件事物封装起来, 外界不必知道其实际内容。封装是面向对象技术基本原理的基础, 对象是类的实例, 对象的所有数据及其对于某些数据的操作全部封装在一起, 外部对象要检索或改变这些数据, 只有经过向对象发出请求。对象接受请求后, 如果请求的形式正确合理, 就执行请求动作。对象外部的代码从来不对对象中任何私有数据进行直接操作, 这种机制能够使产生偶然副作用的可能性大大减少。 协议 是一个对象对外服务的说明, 告知外界对象它能够为外界做什么。外界对象能够而且只能向该对象发送协议中所提供的消息, 请求该对象服务。因此, 它是由一个对象能够接受而且而且愿意接受的所有消息构成的对外接口。也就是说, 请求对象进行操作的唯一途径就是经过协议中提供的消息进行, 即使一个对象能够完成某一功能, 但它没有将该功能放入协议中去, 外界对象依然不能请求它完成这一功能。从私有消息和公有消息上看, 协议是一个对象所能接受的所有公有消息的集合。 类 是对一组相似对象的共同抽象描述, 它将该组对象所具有的共同特征( 包括操作特征和存储特征) 集中起来, 用于说明该组对象的能力和性质。例如, ”人类”这个词解释了所 继承 是一种现实世界中对象之间独特的关系, 它使得某类对象能够继承另外一类对象的特征和能力。
6. 对象的特点? 对象具有明显的特征, 它们是自主性、 封闭性、 交互性、 被动性和动态性。 资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 一、 自主性 自主性是指对象具有处理能力。给定一个输入, 经过消息接收、 操作处理、 变换对象状态, 最后对象产生输出, 从而完成消息所指定的处理任务。对象自身状态的变化, 完全取决于自身的操作, 如何操作完全由对象自身决定, 不同对象对于同样的消息, 能够做出不同的处理, 既能够”以变制变”, 也能够”以不变应万变”, 因而对象是自主的。 二、 封闭性 封闭性是指对象具有信息隐蔽能力。即外界不能直接修改对象的状态, 只能经过向该对象发送消息对它施加影响。对象隐蔽了其数据及操作的具体实现, 对外可见的只是对象提供的消息接口。 三、 交互性 交互性是指对象之间具有通信能力。对象既能够接收来自外部的消息并加以处理, 也能够向其它对象发送消息请其处理相应工作。对象间的交互推动了对象的状态转换, 最终使对象构成的系统不断演化和前进。 四、 被动性 被动性是指对象的处理工作都是由外部对象发送消息来启动的。一般情况下, 对象不能自发启动操作。对象的存在也是由外界决定( 能够是其它对象, 最终由程序员来决定) 的, 因此对象程序最终是需要由人来启动的。 五、 动态性 对象的动态性有两个含义, 一是对象能够动态创立和取消, 对象并非一开始就存在, 程序员开始并不能描述系统运行过程中创立的所有对象; 二是对象的状态是不断变化的, 随着系统的运行和发展, 许多对象的状态与初始状态具有很大变化。 在上述五大特征中, 前三项描述了对象的能力, 被动性刻划了对象的活动特性, 动态性指出了对象的生存特性。
7. 什么是实例? 类于实例的关系是什么? 任何单个对象都是某个类的实例。一个类的所有实例都具有共性, 又具有个资料内容仅供您学习参考,如有不当或者侵权,请联系改正或者删除。 性。对象的共性是它们所能接收的消息及其处理方法, 即一个类的所有实例都采用同样的方法处理消息; 对象的个性反映在每个对象都有自己的私有存储单元, 每个对象的私有存储单元值能够不同。 基于类能够重新定义对象( 这里就是指实例) , 而且有了更简单的形式。对象是一类的实例, 它经过实例化操作产生 在面向对象程序中, 关于类和实例, 能够归纳如下两点: ① 个类的所有实例能够响应的消息模式相同, 而且采用同样的方法完成消 息所要求的操作; ② 个类的所有实例具有相同的数据结构( 如Smalltalk中的实例变量) , 而且采用同样的名字来引用它
8. 什么是继承? 分为哪几种? 继承是一种现实世界中对象之间独特的关系, 它使得某类对象能够继承另外一类对象的特征和能力。按继承源来分类, 能够分为单重继承和多重继承。按继承内容分类, 有全部继承和部分继承。public private Protected三种继承。
9. 对象间的关系有哪几种? 对象间的创立关系 对象之间的聚合关系 对象通讯( 消息) 关系
10. 解释以下概念: 多态; 作用域; 语景; 深拷贝; 浅拷贝; 多态的本质就是指一名多用, 如多条同名的消息传递给不同的对象, 消息引发的对象行为能够不同 作用域一般来说, 一段程序代码中所用到的名字并不总是有效/可用的, 而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域的使用提高了程序逻辑的局部性, 增强程序的可靠性, 减少名字冲突。 语景 指在程序中某一处( 能够是一条语句, 也能够是一段程序) 所有可访问对象的集合( 即这个集合中的对象的作用域都包含该处) 。 深拷贝是得到一个对象副本的操作, 而浅拷贝则是得到一个对象指针的操作。也