浙江大学 计算机 考博试题 面向对象及答案.docx
- 文档编号:14987770
- 上传时间:2023-06-29
- 格式:DOCX
- 页数:17
- 大小:149.27KB
浙江大学 计算机 考博试题 面向对象及答案.docx
《浙江大学 计算机 考博试题 面向对象及答案.docx》由会员分享,可在线阅读,更多相关《浙江大学 计算机 考博试题 面向对象及答案.docx(17页珍藏版)》请在冰点文库上搜索。
浙江大学计算机考博试题面向对象及答案
一、名词解释
对象类封装多态、继承聚合关联多继承消息可见属性操作
对象:
系统中用来描述客观事物的一个实体,它是构成系统的一个基本单位,由一组属性和施加于这组属性的一组操作构成。
对象之间存在四种关系:
一般-特殊;整体-部分;关联;消息
类:
具有相同属性和操作的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,由一个类名,一组属性和一组操作构成。
类的命名应遵循的几条规则:
类的名字应恰好符合这个类所包含的每一个对象;应该反映每个对象个体,而不是整个群体;采用名词或带有定语的名词;使用便于交流的语言文字。
封装:
就是把对象的属性和操作结合为一个独立的系统单位,并尽可能隐蔽对象的内部细节。
多态性:
在一般类中定义的属性或操作被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。
继承:
特殊类的对象拥有的其一般类的全部属性与操作,称作特殊类对一般类的继承。
聚合:
一个复杂的对象以若干比较简单的对象作为其组成部分成为聚合。
整体对象和部分对象之间的关系便是聚合关系。
关联:
两个或多个类的对象实例集合之间的关系。
多继承:
如果允许一个特殊类同时继承多个一般类的属性与操作,则这种继承叫做多继承。
消息:
消息是向对象发出的服务请求。
对象之间在一次交互中所传送的信息。
包括接收消息的对象,该对象提供的服务操作,输入信息和回答信息。
同步消息:
仅当发送者要发送一个消息而且接受者已做好接收这个消息的准备时才能传送的消息成为同步消息。
异步消息:
发送者不管接受者是否做好接收准备都可以发送的消息成为异步消息。
可见:
属性:
用来描述对象静态特征的一个动作序列。
操作:
用来描述对象动态特征的一个动作序列。
问题域系统责任永久对象主动对象系统边界参与者用况
问题域:
被开发的应用系统所考虑的整个业务范围。
系统责任:
所开发的系统应该具备的职能。
永久对象:
生存期可以超过程序的执行时间而长期存在的对象。
主动对象:
至少有一个操作不需要接收消息就能主动执行的对象。
系统边界:
指系统内部的所有成分与系统以外各种事物之间的分界线。
在这条分界线以内,是系统本身所包含的全部对象;在系统边界以外,是与系统进行信息交换的各种事物,即人员、设备和外系统等各种参与者。
参与者:
在系统之外与系统进行交互的任何事物。
用况:
对参与者使用系统的一项功能时所进行的交互过程的描述,其中包含由双方交替执行的一系列动作。
主题消息连接实例连接包交互图模型规约
主题是指事物的总体概貌和总体分析模型。
消息连接:
当一个对象需要向另一对象发送消息时,它们之间就存在消息连接。
实例连接是一个实例与另一个实例的映射关系。
包:
一种将其他模型元素组织起来,形成较大粒度的系统单位的机制。
交互图:
描述对象之间的交互关系,包括顺序图和协作图
模型规约:
对模型所做的详细说明和解释。
用户需求接口软件规约软件复用粒度控制行为分析服务
用户需求:
用户对所要开发的系统提出的各种要求和期望,包括系统的功能、性能、可靠性、安全性及交互方式等技术性要求,以及交互时间、资源使用限制等非技术性要求。
接口:
由一组操作所形成的一个集合,它由一个名字和代表其中的每个操作的特征标记构成。
接口和对象类有几点不同:
类既有属性又有操作,接口只声明了一组操作没有属性;在一个类中定义了一个操作,就要在这个类中真正实现他的功能,接口中的操作只是一个声明,不需要在接口中实现;类可以创建对象实例,接口没有任何实例。
软件规约:
对一个软件所应满足的要求进行完整和准确陈述的文件。
软件复用:
将已有软件的各种有关知识用于建立新的软件,以缩减软件开发和维护的花费。
粒度控制:
一般来讲,人在面对一个复杂的问题域时,不可能在同一时刻既能纵观全局,又能洞察秋毫。
因此需要控制自己的视野:
考虑全局时,注意其大的组成部分,暂时不详察每一部分的具体的细节;考虑某部分的细节时则暂时撇开其余的部分。
这就是粒度控制原则。
行为分析:
现实世界中事物的行为是复杂的。
由大量的事物所构成的问题域中各种行为往往相互依赖、相互交织。
服务:
收到一条消息之后执行的操作。
二、问答题:
1、面向对象语言有哪些,各家的主要思想是什么.
Smaltalk:
纯面向对象的程序设计语言及环境。
无论是哪个层次,所有的实体都被认为是对象。
对象类也被认为是对象,为此引入了元类的概念,这样使整个系统保持概念上的一致。
语法简单,没有类的概念,语法包括类定义、对象说明、赋值以及消息传递
Eiffel:
主要思想来源于BetrandMeyer。
不仅是一种程序设计语言,而且是一种软件开发方法和程序设计环境。
Eiffel支持自底向上的开发方法,这种方法对后来先进的给合方式产生了深远的影响。
Eiffel的环境工具支持自动重编译、文档制作、调试等的开发工作。
Eiffel语言采用重名技术支持多继承和重复继承。
Eiffel支持参数化类。
是实现类模块的一种方法。
Eiffel是一种强类型语言,它支持静态类型检查。
Eiffel采用增量式的垃圾收集机制。
Eiffel支持系统程序的构造原语,它也是Eiffel语言的独有的一个特征。
支持上下文自动配置管理、断言和和不变式,支持异常处理,支持类文档化。
C++:
语言由AT&TBell实验室的BjarneStroustrup开发的一种混合型面向对象语言。
它以C语言为基础,在C上扩充了面向对象程序设计的特征。
主要包括:
允许进行类定义;为提供了数据操作的函数和操作符;为类提供了构造方法及析构
方法;为类内部的数据结构进行封装性的划分;提供了对继承关系及多重继承的支持;提供了多态性及函数重载的支持;提供了抽象数据类型-抽象类的支持。
C++的一个基本设计目标是保持C语言高运行效率和可移植性以及C语言的可兼容性。
同时,它克服了C语言在类型检查方面的一个不足,采用了强类型检查机制。
Java:
是Sun公司1995年推出的一个适用于分布式环境的面向对象语言。
它是一种纯OO型语言,扩充了对分布式以及客户/服务器结构的支持,从而提供了一个清晰而有效的开发环境。
Java提供的丰富的类库,包括基本的数据类型、I/O接口、网络接口以及图形用户界面等。
Java在内存管理上避免了指针的使用,支持代码的安全性检查,采用自动垃圾回收。
Java的另一个特点是跨平台性,采用中间语言运行于虚拟机的工作方式。
因此,它是一个解释型的语言。
2、判断一种ooa好坏的标准
是否有利于对问题域和系统责任的理解
是否有利于人员之间交流
对需求变化的适应性
是否支持软件复用
3、简述两种OOA或OOD方法?
OOA依照用户所理解的真实世界中的对象概念,发现和分析对象的内部构成和外部关系,建立准确而简洁的软件系统的对象模型。
OOD是根据已建立的系统对象模型,运用面向对象技术,进行软件设计。
OA/OOD的一些较有代表性的工作有Gray.Booch的OOAD方法,Coad/Yourdon的OOA和OOD方法,Shlaer&Mellor的OOA方法,Rumbaugh的OOAD方法等。
不同的方法体系都分别体现了人们对OOA、OOD,以及面向对象软件开发过程的不同认识。
4、说明ooa的过程
OOA过程包括以下主要活动:
(1)建立需求模型—用况图
●确定系统边界
●发现参与者
●定义用况
(2)建立基本模型—类图
●发现对象,定义他们的类
●定义对象的内部特征—属性和操作
●定义对象的外部关系—一般-特殊结构,整体-部分结构,关联和消息
(3)建立辅助模型
●划分包,建立包图
●建立顺序图
●建立活动图
●建立其他模型图
(4)建立模型规约
(5)原型开发
在用OOA具体地分析一个事物时,大致上遵循如下五个基本步骤:
第一步,确定对象和类。
这里所说的对象是对数据及其处理方式的抽象,它反映了系统保存和处理现实世界中某些事物的信息的能力。
类是多个对象的共同属性和方法集合的描述,它包括如何在一个类中建立一个新对象的描述。
第二步,确定结构(structure)。
结构是指问题域的复杂性和连接关系。
类成员结构反映了泛化-特化关系,整体-部分结构反映整体和局部之间的关系。
第三步,确定主题(subject)。
主题是指事物的总体概貌和总体分析模型。
第四步,确定属性(attribute)。
属性就是数据元素,可用来描述对象或分类结构的实例,可在图中给出,并在对象的存储中指定。
第五步,确定方法(method)。
方法是在收到消息后必须进行的一些处理方法:
方法要在图中定义,并在对象的存储中指定。
对于每个对象和结构来说,那些用来增加、修改、删除和选择一个方法本身都是隐含的(虽然它们是要在对象的存储中定义的,但并不在图上给出),而有些则是显示的。
5、UML的作用及它所使用的图
UML统一了Booch,OMT和OOSE等方法中的基本概念;UML吸取了面向对象技术领域中其他流派的长处;在演变过程中UML还提出了一些新的概念。
6、简述标准建模语言uml的主要功能,以及uml所提供的各种模型图的名称
统一建模语言(UML是UnifiedModelingLanguage的缩写)是用来对软件密集系统进行可视化建模的一种语言。
UML为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。
UML最适于数据建模,业务建模,对象建模,组件建模。
UML作为一种模型语言,它使开发人员专注于建立产品的模型和结构,而不是选用什么程序语言和算法实现。
当模型建立之后,模型可以被UML工具转化成指定的程序语言代码。
用例图 类图 对象图 顺序图 协作图 状态图 活动图 组件(构件)图 配置(部署)图
7、顺序图与活动图的特点
顺序图是一种详细表示对象之间行为关系的图。
顺序图的最大特点是:
它以二维的平面上的一维来表示时间进度,在时间维上展开了一组相互协作的对象在完成某项功能时所发生的行为与事件,即各个对象所执行的操作以及他们之间所传送的消息,从而能够在逻辑上清晰地刻画这些操作和消息的时序关系乃至因果关系。
活动图借鉴了工作流建模、Petri网等领域的若干概念,使其表达能力比流程图更强,应用范围也更宽。
运用活动图可以描述各种不同的行为,例如:
既可以描述一个顺序执行的过程,也可以描述其内部含有并发行为的过程;既可以描述由一个对象所执行的操作,也可以描述由多个对象协同完成的一项功能,既可以描述单纯由计算机完成的一项任务,也可以描述有应用领域中的人员参与的业务流程。
8、Ooa建立的系统模型的组成
包括:
基本模型、需求模型和辅助模型三部分。
基本模型可以直观的方式表达了最重要的系统构造信息,需求模型用于定义用户需求;辅助模型提供几种对基本模型进行组织或者加强理解的辅助图形,除了这些模型图之外还需要一些对模型进行详细描述的模型规约。
基本模型—类图:
主要成分是类,属性,操作,一般-特殊结构,整体-部分结构,关联和消息。
对象层,特征层,关系层。
需求模型—用况图。
对系统边界以外的参与者使用每一项系统功能时的情况说明。
辅助模型—包图,顺序图,活动图等。
9、Ooa文档的组成
完整的ooa文档应包括:
需求模型,基本模型,辅助模型和模型规约,由此所形成的模型框架如图,
10、ooa与ood的关系
OOA和OOD采用一致的概念、原则和表示法,二者之间不存在鸿沟,不需要从分析文档到设计文档的转换。
二者之间也不强调严格的阶段划分。
OOA和OOD可适应多种软件生命周期模型。
既可以安瀑布模型,先进行OOA,后进行OOD,也可以按螺旋模型或增量模型,交替的进行OOA和OOD。
但是OOA与OOD有不同的侧重点和不同的分工。
并因此而具有不同的开发过程及具体策略。
有人认为OOA和OOD可以交叉进行;有人认为OOD是对OOA结果的改进和细化,所以只提OOA;有人则更强调OOD。
尽管OOA和OOD存在着某些交叉和联系,但它们之间仍有许多差别,如:
1)OOA将现实世界中的实体抽象为问题对象,并构造问题域中的系统需求模型;OOD将问题对象转化为解域中的类并在解域中构造出问题的解。
2)OOA侧重于用户需求的分析和对问题域的理解,分析人员关心的是系统结构及对象间的关系;OOD则侧重于系统的实现,设计人员关心的是对象的行为及其实现。
3)OOA标识了一组对象,并通过其相互作用来刻划系统,该阶段的工作与程序设计语言无关;OOD定义了一组类,并设计出系统的实现蓝图,概要设计与程序设计语言无关,但详细设计则与之有比较密切的联系。
(4)OOA识别的对象是对客观世界实体的抽象,标识对象的准则是:
该对象的引入是否有助于对问题域的理解;OOD中构造类的准则是:
该类的构造是否可行,是否有效地实现了抽象数据类型,是否有助于系统的实现和提高软件质量。
(5)两个阶段都没有提及系统对象,但原因不同。
在OOA阶段,分析与实现无关,分析所涉及的范围与解域无关,系统对象自然不用考虑。
OOD建立的对象模型本身就是要设计的软件系统,对系统对象的考虑是隐含的。
6)组装结构和分类结构在两个阶段所起的作用不同。
在OOA阶段,它们的引入主要是为了理解问题;而在OOD阶段,它们的引入则主要是针对软件的构造和实现。
分类结构通过继承机制来实现,因而代码得到了有效地复用;组装结构则将一些类组合在一起构成较大的软件构件。
7)OOA并没有考虑对象的产生问题,当其对应的实体在现实世界中出现时,它也就在问题域中产生了。
OOA也不考虑对象属性的取值和服务算法的实现。
而在OOD阶段这些问题都必须详细考虑。
8)OOD涉及到重载问题;而OOA没有考虑,因为考虑过多的实现细节对理解问题和分析用户需求没有多大帮助。
11、uml的视图有几种,有几种图?
分别是哪些?
关联有哪几种?
试分别简述。
12、什么是usecase,它的作用是什么?
由用户和系统在一次对话中执行的一个特殊事务序列。
在不展现一个系统或子系统内部结构的情况下,对系统或子系统的某个连贯的功能单元的定义和描述。
UseCase的格式的作用是用户和开发者能标志出行为者,然后确认这些行为者工作职责对应(或不对应)的目标,代替一个大的很难读的功能规格说明书。
仅仅这样,用户和开发者就有足够的兴趣进而研究那些情节的细节。
13、什么是多态性,试举例说明之。
多态性:
在一般类中定义的属性或操作被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。
例如:
在一般类“几何图形”中定义了一个操作“绘图”,但是并不确定在执行时究竟要画一个什么图形。
特殊类“椭圆”和“多边形”都继承了几何图形类的绘图操作,但其功能却不同:
前者将画一个椭圆,后者将画一个多边形。
进而,在多边形类更下层的一般类“矩形”中,绘图操作又可以采用比一般的多边形效率更高的算法来画一个矩形。
这样,当系统的其余部分请求画一个几何图形时,消息中给出的操作名同样都是“绘图”(因而消息的书写方式可以统一),而椭圆、多边形、矩形等类的对象在接收到这个消息时却各自执行不同的绘图算法。
14、简要分析过程抽象与数据抽象
过程抽象是指,任何一个完成确定功能的操作序列,其使用者都可把它看做一个单一的实体,尽管实际上它可能是由一系列更低级的操作完成的。
运用过程抽象,软件开发着可以把一个复杂的功能分解成一些子功能,如果子功能仍然比较复杂可以进一步分解,这使得开发着可以在不同的抽象层次上考虑问题。
数据抽象是根据施加于数据之上的操作来定义数据类型,并限定数据的值只能由这些操作来修改和观察。
数据抽象是OOA的核心原则,它强调把数据和操作结合为一个不可分的系统单位即对象,对象的外部只需知道它做什么,而不必知道它如何做。
15、给出主流的OOA方法并分析
OA/OOD的一些较有代表性的工作有Gray.Booch的OOAD方法,Coad&Yourdon的
OOA和OOD方法,Shlaer&Mellor的OOA方法,Rumbaugh的OOAD方法等。
如,Coad&Yourdon在其方法中引入了主题的概念;Wirfs&Brock在其方法中引入了子系统的概念。
16、指出属性的详细说明方法
对每个对象的每个属性详细说明:
名字、类型,如果属性不是很直观或者有约束(例如,每个对象的该属性必须有一个唯一的值或者值域是有限正整数等)。
17、Booch方法
Booch最先描述了面向对象的软件开发方法的基础问题,指出面向对象开发是一种根本不同于传统的功能分解的设计方法。
面向对象的软件分解更接近人对客观事务的理解,而功能分解只通过问题空间的转换来获得。
18、服务的详细说明方法
19、简述建立实例连接的过程
20、分别叙述ooa和ood过程的主要活动
21、分析两种观点a用c++开发的软件系统是面向对象的应用系统
b面向对象的应用系统一定要用面向对象的程序设计语言实现
应该说,原型开发技术并不是一定要采用面向对象方法,但面向对象方法无疑是非常适合用原型技术开发的。
采用面向对象有非常好的扩充性,如可以先以基类进行原型开发,一旦得到确认就可以以派生类方式逐步深化该系统。
2003年4月
画图题,打电话过程,超市销售系统
2003年10月
1、收款机的usecase和交互图
2004年4月
22、电梯运行的状态图,用状态图描述它的各种状态和可能的转移
23、图书销售管理系统建模,并给出付款的usecase
2004年10月
24、画出图书销售管理系统的对象层图。
25、画出小刘给小王打电话的顺序图。
小刘提起电话,听见电话响声,小王接电话,通话,通话完毕小王挂电话,小刘挂电话。
2005年4月
2006年4月
26、构造图书超市销售管理系统的类图
27、用状态图描述一个汽车的各种运动状态可能的转移
状态图例子
2007年4月
1、大概是问多态的概念的简答题
2、给出超市系统的主题图
2008年4月
28、图书超市管理系统的用例图
29、根据一个主题,作ooa模型(关于监控系统的对象图)
图1销售管理系统业务用例框图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 浙江大学 计算机 考博试题 面向对象及答案 试题 面向 对象 答案