浙江大学计算机考博试题面向对象及答案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、名词解释
对象类封装多态、继承聚合关联多继承消息可见属性操作对象:系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位,由一组属性和施加于这组属性的一组操作构成。对象之间存在四种关系:一般-特殊;整体-部分;关联;消息
类:具有相同属性和操作的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,由一个类名,一组属性和一组操作构成。类的命名应遵循的几条规则:类的名字应恰好符合这个类所包含的每一个对象;应该反映每个对象个体,而不是整个群体;采用名词或带有定语的名词;使用便于交流的语言文字。
封装:就是把对象的属性和操作结合为一个独立的系统单位,并尽可能隐蔽对象的内部细节。
多态性:在一般类中定义的属性或操作被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。
继承:特殊类的对象拥有的其一般类的全部属性与操作,称作特殊类对一般类的继承。
聚合:一个复杂的对象以若干比较简单的对象作为其组成部分成为聚合。整体对象和部分
对象之间的关系便是聚合关系。
关联:两个或多个类的对象实例集合之间的关系。多继承:如果允许一个特殊类同时继承多个一般类的属性与操作,则这种继承叫做多继承。消息:消息是向对象发出的服务请求。对象之间在一次交互中所传送的信息。包括接收消息的对象,该对象提供的服务操作,输入信息和回答信息。
同步消息:仅当发送者要发送一个消息而且接受者已做好接收这个消息的准备时才能传送的消息成为同步消息。
异步消息:发送者不管接受者是否做好接收准备都可以发送的消息成为异步消息。
可见:属性:用来描述对象静态特征的一个动作序列。操作:用来描述对象动态特征的一个动作序列。问题域系统责任永久对象主动对象系统边界参与者用况
问题域:被开发的应用系统所考虑的整个业务范围。
系统责任:所开发的系统应该具备的职能。
永久对象:生存期可以超过程序的执行时间而长期存在的对象。主动对象: 至少有一个操作不需要接收消息就能主动执行的对象。
系统边界:指系统内部的所有成分与系统以外各种事物之间的分界线。在这条分界线以内,是系统本身所包含的全部对象;在系统边界以外,是与系统进行信息交换的各种事物,即人员、设备和外系统等各种参与者。
参与者:在系统之外与系统进行交互的任何事物。
用况:对参与者使用系统的一项功能时所进行的交互过程的描述,其中包含由双方交替执行的一系列动作。
主题消息连接实例连接包交互图模型规约
主题是指事物的总体概貌和总体分析模型。
消息连接:当一个对象需要向另一对象发送消息时,它们之间就存在消息连接。
实例连接是一个实例与另一个实例的映射关系。
包:一种将其他模型元素组织起来,形成较大粒度的系统单位的机制。
交互图:描述对象之间的交互关系,包括顺序图和协作图
模型规约:对模型所做的详细说明和解释。
用户需求接口软件规约软件复用粒度控制行为分析服务
用户需求:用户对所要开发的系统提出的各种要求和期望,包括系统的功能、性能、可靠性、安全性及交互方式等技术性要求,以及交互时间、资源使用限制等非技术性要求。
接口:由一组操作所形成的一个集合,它由一个名字和代表其中的每个操作的特征标记构成。接口和对象类有几点不同:类既有属性又有操作,接口只声明了一组操作没有属性;在一个类中定义了一个操作,就要在这个类中真正实现他的功能,接口中的操作只是一个声明,不需要在接口中实现;类可以创建对象实例,接口没有任何实例。软件规约:对一个软件所应满足的要求进行完整和准确陈述的文件。
软件复用:将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费。
粒度控制:一般来讲,人在面对一个复杂的问题域时,不可能在同一时刻既能纵观全局,又能洞察秋毫。
因此需要控制自己的视野:考虑全局时,注意其大的组成部分,暂时不详察每一部分的具体的细节;考虑某部分的细节时则暂时撇开其余的部分。这就是粒度控制原则。行为分析:现实世界中事物的行为是复杂的。由大量的事物所构成的问题域中各种行为往往相互依赖、相互交织。
服务:收到一条消息之后执行的操作。
二、问答题:
1、面向对象语言有哪些,各家的主要思想是什么.
Smaltalk:纯面向对象的程序设计语言及环境。无论是哪个层次,所有的实体都被认为是对象。对象类也被认为是对象,为此引入了元类的概念,这样使整个系统保持概念上的一致。语法简单,没有类的概念,语法包括类定义、对象说明、赋值以及消息传递
Eiffel :主要思想来源于Betrand Meyer 。不仅是一种程序设计语言,而且是一种软件开发方法和程序设计环境。Eiffel支持自底向上的开发方法,这种方法对后来先进的给合方式产生了深远的影响。Eiffel的环境工具支持自动重编译、文档制作、调试等的开发工作。Eiffel语言采用重名技术支持多继承和重复继承。Eiffel 支持参数化类。是实现类模块的一种方法。Eiffel是一种强类型语言,它支持静态类型检查。Eiffel采用增量式的垃圾收集机制。Eiffel支持系统程序的构造原语,它也是Eiffel语言的独有的一个特征。支持上下文自动配置管理、断言和和不变式,支持异常处理,支持类文档化。
C++:语言由AT&T Bell实验室的Bjarne Stroustrup开发的一种混合型面向对象语言。它以C语言为基础,在C上扩充了面向对象程序设计的特征。主要包括:允许进行类定义;为提供了数据操作的函数和操作符;为类提供了构造方法及析构方法;为类内部的数据结构进行封装性的划分;提供了对继承关系及多重继承的支持;提供了多态性及函数重载的支持;提供了抽象数据类型-抽象类的支持。
C++的一个基本设计目标是保持C语言咼运行效率和可移植性以及C语言的可兼容性。同时,它克服了C语言在类型检查方面的一个不足,采用了强类型检查机制。Java:是Sun公司1995年推出的一个适用于分布式环境的面向对象语言。它是一种纯00型语言,扩充了对分布式以及客户/服务器结构的支持,从而提供了一个清晰而有效的开发环境。Java提供的丰富的类库,包括基本的数据类型、I/O接口、网络接口以及图形用户界面等。Java在内存管理上避免了指针的使用,支持代码的安全性检查,采用自动垃圾回收。Java勺另一个特点是跨平台性,采用中间语言运行于虚拟机的工作方式。因此,它是一个解释型的语言。
2、判断一种ooa好坏的标准
是否有利于对问题域和系统责任的理解是否有利于人员之间交流对需求变化的适应性
是否支持软件复用
3、简述两种00A 或00D 方法?
00A 依照用户所理解的真实世界中的对象概念,发现和分析对象的内部构成和外部关系,建立准确而简洁的软件系统的对象模型。