




已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2013 复习要点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. 解释以下概念:多态;作用域;语景;深拷贝;浅拷贝;多态的本质就是指一名多用,如多条同名的消息传递给不同的对象,消息引发的对象行为可以不同作用域通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。作用域的使用提高了程序逻辑的局部性,增强程序的可靠性,减少名字冲突。语景 指在程序中某一处(可以是一条语句,也可以是一段程序)所有可访问对象的集合(即这个集合中的对象的作用域都包含该处)。深拷贝是得到一个对象副本的操作,而浅拷贝则是得到一个对象指针的操作。也就是说,深拷贝是指将一个对象完全复制一个,空间占用原来的两倍。浅拷贝是指只给出对象的指针,对象还是一个11. 强类型与弱类型的区别在哪?它们的代表语言?系统的类型概念强烈影响到对象之间的交互。从根本上看,弱类型系统的目标是让所有信息的语景尽可能的一般化,而强类型系统的目标是信息的语景尽可能特殊化。可以这样从语言编译的角度看,弱类型系统对于源程序不做变量的类型检查,而直到程序运行时才进行类型的匹配的。强类型则相反,在编译时,就要对于整个程序所用到的变量或表达式进行类型匹配的检查,若不一致,则要报错。C+是强类型语言,其中,每个对象的类型是在程序源代码中明显陈述的。许多面向对象语言,如Smalltalk和Common Lisp Object System (CLOS),郡是弱类型语言,在编译时不强调对象的特定类型。12. 面向对象分析的任务是什么?面向对象分析的基础是什么?面向对象分析的任务是了解问题域内的相关对象及对象间的关系和作用,然后构造该问题域的对象模型,力争使这个模型真实的反应出所要解决问题的实质。在这一过程中,抽象是最重要、最基本的方法,对不同性质的问题,可选取不同层次的抽象,过简过繁琐都会影响对问题本质属性的理解。面向对象的分析以模拟技术和面向对象技术为基础,它从模拟技术中吸取了属性、关系、结构及问题域中实体表示的对象概念,从面向对象技术中吸取了封装、分类结构等概念。面向对象的分析基于以下两点: 在分析和说明整体框架中贯穿结构化方法,如对象和属性,整体和部分,以及类和成员等; 用消息进行用户和系统之间、系统中对象之间的相互通讯。13. 面向对象分析和设计方法有哪些,其优势是什么?面向对象分析及设计方法Coad/Yourdon方法工Booch法。面向对象软件开发方法则集中有关的数据和功能来直接模拟问题世界中的对象,并开发的各个阶段都围绕对象范型进行。这是一种摆脱冯氏体系结构对软件开发的束缚、解决传统方法面临的许多问题的有效方法。 面向对象的分析和设计方法的优势在于,其概念和特征直接与分析和设计工作有着天然的联系(直接映射关系),可以从这样几点来分析: 面向对象方法包含了三种人类组织的基本结构:对象+属性、分类结构和组合结构; 面向对象方法侧重于对问题的理解: 面向对象方法中属性和服务为天生的一对; 面向对象方法中实现了有效的划分,系统成份之间最少依赖; 面向对象方法中具有最清晰的共性和一致性表示: 面向对象方法可以在实现效率和易理解性方面提供最恰当的权衡设计。14. 什么是设计模式?设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石脉络,如同大厦的结构一样。一般而言,一个模式有四个基本要素: 1. 模式名称(pattern name) 一个助记名,它用一两个词来描述模式的问题、解决方案和效果。 2. 问题(problem) 描述了应该在何时使用模式。它解释了设计问题和问题存在的前因后果,它可能描述了特定的设计问题,如怎样用对象表示算法等。 3. 解决方案(solution) 描述了设计的组成成分,它们之间的相互关系及各自的职责和协作方式。 4. 效果(consequences) 描述了模式应用的效果及使用模式应权衡的问题。 15. SingletonSingleton(单子,对象创建型模式):保证一个类仅有一个实例,并提供一个访问它的全局访问点。class Singletonpublic:static Singleton* Instance() ;protected:Singleton() private:static Singleton *_instance ;Singleton(const Singleton&) ;Singleton& operator=(const Singleton&) ; ;Singleton* Singleton:_instance = NULL ;Singleton* Singleton:Instance()(_instance = NULL) ? _instance = new Singleton() : 0 ; /lazy initializationreturn _instance ;16. 友元,运算符重载,友元:类赋予其访问权限的一个实体。它可能是函数(友元函数)、其它类(友元类)或者其它类的成员函数。重载运算符是对正常函数的语法美化。它没给语言增加任何基本的东西,但改善了可理解性并降低维护费用。不能重载的运算符:. 、 .* 、?: 、: 、sizeof 、typeid重载运算符使用成员函数/友元函数的选择17. 函数重载和覆盖的定义和比较重载(overload):对于类的方法(包括从父类中继承的方法),方法名相同,参数列表不同的方法之间就构成了重载关系。覆盖 (override):也叫重写,就是在当父类中的某些方法不能满足要求时,子类中改写父类的方法。当父类中的方法被覆盖了后,除非用super关键字,否则就无法再调用父类中的方法了。覆盖和重载具有以下相同点:都要求方法同名都可以用于抽象方法和非抽象方法之间覆盖和重载具有以下不同点:覆盖要求参数列表(参数签名)必须一致,而方法重载要求参数列表必须不一致。覆盖要求返回类型必须一致,方法重载对此没有要求。覆盖只能用于子类覆盖父类的方法,方法重载用于同一个类中的所有方法(括从父类中继承而来的方法)覆盖对方法的访问权限和抛出的异常有特殊的要求,而方法重载在这方面没有任何限制。父类的一个方法只能被子类覆盖一次,而一个方法可以在所有的类中可以被重载多次。18.C+:初始话列表,合适继承,公有继承的含义(Liskov Substitution Principle)虚函数,动态绑定,模板。初始话列表构造函数除了有名字,参数列表和函数体之外,还可以有初始化列表,初始化列表以冒号开头,后跟一系列以逗号分隔的初始化字段。class foopublic:foo(string s, int i):name(s), id(i) ; / 初始化列表private:string name ;int id ;构造函数初始化列表是初始化对象的最好方法。初始化列表在构造函数主体开始执行前初始化成员对象。它的作用是改善程序的性能。而且类里的引用数据成员必须在初始化列表里初始化。有些变元对象(如指针)可能要进行异常检查,这样就不太方便放到初始化列表里。合适继承 合适的继承:当派生类的成员函数说明和基类中对应的成员函数相比,前者相对后者要求不多并且承诺不少时,我们就可以得到合适的继承和可替代行为。合适继承可提供充分的可替代性和可扩充性。合适继承和子集以及专门化(specilize)没有必然联系。 可替代性:合适的派生类的对象能自由且安全替代基类的对象。 可扩充性:即使合适的派生类在用户代码定义几个月乃至几年后出现,也能自由且安全地用它代替基类。当增加包含新功能的合适派生类时,扩充系统的非常容易。 不合适的继承会产生混乱的设计错误。在使用基类指针/引用时可能要付出很大的代价。公有继承的含义(Liskov Substitution Principle)公有继承意味着“is a kind-of”的关系,简称isa。class D : public B,这就是告诉大家每个类型为D的对象也是一个类型为B的对象,反之不然。也就是说“B对象派得上用场的任何对方,D对象也可以派上用场”(Liskov Substitution Principle)虚函数那些被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行分离;用形象的语言来解释就是实现以共同的方法,但因个体差异而采用不同的策略。动态绑定动态绑定是指在执行期间(非编译期)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。程序运行过程中,把函数(或过程)调用与响应调用所需要的代码相结合的过程称为动态绑定。模板模板的概念是从希望参数化容器类而来,在C with class曾经使用宏机制实现过参数化容器类。但C语言的宏根本不遵守作用域规则和类型规则。在C+的原始设计其实就考虑过带参数类型的问题,但没有时间做彻底的试验,去探究设计和实现的问题,担心它们的复杂性,以及对性能的影响,还有加大系统移植的成本等,所以这事被推迟。1989年Object Design公司将模板的机制(当s时只支持类模板)实现集成到编译器中,以后几年其他人对此作了完善。“template”这一关键字告诉编译器下面的类定义(函数定义)将操作一个或更多的非特定类型。当声明类对象(或使用函数时),必须指定类型以使编译器做相关的替代。用C+按面向对象的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 纺织服饰品牌文化传播规划
- 2025浙江温州龙港市市属国有企业面向社会招聘工作人员21人笔试备考题库及答案解析
- 企业管理中的领导力发挥
- 印刷品质量管理细则
- 2025云南丽江市古城区司法局招聘司法行政辅助人员1人考试备考试题及答案解析
- 2025信息安全工程师招聘题库及答案
- 员工职业道德修养课程
- 2025年碳资产管理师考试题库(附答案和详细解析)
- 2025年天津上半年房地产估价师制度与政策商品房销售中禁止的行为试题
- 2025年流行病学流行病调查与预防控制计划模拟卷答案及解析
- 《Sketch up效果图制作》课件-sketch up界面操作
- 2024-2025年全国初中化学竞赛试卷及答案
- 《发动机大修》课件
- 外研社小学英语五年级上册单词表
- 经济数学全套教学课件
- GB/T 43355-2023塑料和其他无孔材料表面抗病毒活性的测定
- 项目式学习的理论与实践探究
- 凤庆县新华乡瓦屋地区铜及多金属矿勘探附属设施建设项目环评报告
- 中建“大商务”管理实施方案
- 中公中学教育知识与能力教材电子版
- 出国留学高中成绩单最强模板
评论
0/150
提交评论