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