面向对象分析与设计试题(满分80分)一、选择题(每项选择1.5分总分21分)1、在确定类时,候选的类是所有的________。A)名词B)形容词C)动词D)代词2、在面向对象的设计中,我们应遵循的设计准则除了模块化、抽象、低耦合、高内聚以外,还有________。A)隐藏复杂性B)类的开发C)经常类的复用D)信息隐蔽3、面向对象的主要特征除对象惟一性、封装、继承外,还有________。A)多态性B)完整性C)可移植性D)兼容性4、软件开发过程中,抽取和整理用户需求并建立问题域精确模型的过程叫________。A)生存期B)面向对象设计C)面向对象程序设计D)面向对象分析5、汽车有一个发动机。汽车和发动机之间的关系是_______关系。A)一般具体B)整体部分C)分类关系D)主从关系6、软件开发中的瀑布模型典型地刻画了软件生存周期的阶段划分,与其最相适应的软件开发方法是______。A)构件化方法B)结构化方法C)面向对象方法D)快速原型方法7、软件部件的内部实现与外部可访问性分离,这是指软件的________。A)继承性B)共享性C)封装性D)抽象性8、状态是对象________的抽象。A)属性值B)方法C)功能D)行为9、面向对象方法学的出发点和基本原则是尽可能模拟人类习惯的思维方式,分析、设计和实现一个软件系统的方法和过程,尽可能接近于人类认识世界解决问题的方法和过程。因此面向对象方法有许多特征,如软件系统是由对象组成的;________;对象彼此之间仅能通过传递消息互相联系;层次结构的继承。A)开发过程基于功能分析和功能分解B)强调需求分析重要性C)把对象划分成类,每个对象类都定义一组数据和方法D)对既存类进行调整10、在面向对象技术中,一个子类的对象同时又属于父类,它继承了父类的一切属性,这种多态性称为___(1)___。同一个算子在不同的表达式中可能有不同的操作意义,这种多态性称为___(2)___。编译程序根据上下文判定算子的操作意义,这称为___(3)___。(1)A)参数多态B)过载多态C)包含多态D)隐含多态(2)A)参数多态B)过载多态C)包含多态D)隐含多态(3)A)算子鉴别B)算子操作C)算子定义D)算子运算在面向对象分析过程中,用概念模型来详细描述系统的问题域,用___(4)___来表示概念模型;用___(5)___来描述对象行为。(4)A)序列图B)类图C)协作图D)用例图(5)A)序列图和协作图B)用例图和活动图C)状态图和活动图D)用例图和构件图二、概念与简答题(每题4分总分20分)1、面向对象分析与设计方法与面向功能(结构化)分析与设计方法的区别是什么?(4分)2、简述一下对象要素中抽象和封装的含义?(4分)3、什么是对象?什么是类?类与对象的关系是什么?(4分)4、在介绍的GRASP模式中,哪些模式属于评估模式?在实际工程中降低程序耦合度的方法有哪些?(5分)5、设计模式在软件开发中属于什么层面的方法?程序员使用设计模式的主要目的是什么?(3分)三、论述题(总分5分)通过面向对象分析与设计这门课程的学习,你对面向对象的思想有怎样的理解?它能为我们实际的系统开发、设计、维护工作带来什么好处?四、分析与设计实践题(总分34分)1、分析综合题(12分)某电话公司决定开发一个管理所有客户信息的交互式网络系统。系统的功能如下:1.浏览客户信息:任何使用Internet的网络用户都可以浏览电话公司所有的客户信息(包括姓名、住址、电话号码等)。2.登录:电话公司授予每个客户一个帐号。拥有授权帐号的客户,可以使用系统提供的页面设置个人密码,并使用该帐号和密码向系统注册。3.修改个人信息:客户向系统注册后,可以发送电子邮件或者使用系统提供的页面,对个人信息进行修改。4.删除客户信息:只有公司的管理人员才能删除不再接受公司服务的客户的信息。系统采用面向对象方法进行开发,在开发过程中认定出的类如下表所示:编号类名描述1InternetClient网络用户2CustomerList客户信息表,记录公司所有客户的信息3Customer客户信息,记录单个客户的信息4CompanyCustomer公司客户5InternalClient公司的管理人员图1:系统用例模型图2:系统概念模型[问题1]在需求分析阶段,采用UML的用例图(usecasediagram)描述系统功能需求,如图1所示。请指出图中的A、B、C和D分别是哪个用例?[问题2]在UML中,重复度(Multiplicity)定义了某个类的一个实例可以与另一个类的多少个实例相关联。通常把它写成一个表示取值范围的表达式或者一个具体的值。例如图2中的类InternetClient和CustomerList,InternetClient端的“0..*”表示:一个Custo~erList的实例可以与0个或多个InternetClient的实例相关联;CustomerList端的“1”表示:一个InternetClient的实例只能与一个CustomerList的实例相关。请指出图2中(1)到(4)处的重复度分别为多少?2、分析建模题(10分)一本书的组成有一个封面,一个目录,一个前言,若干章,每章有若干节,每节有若干段,每段有若干句子,每节有0个或多个插图,还有0个或多个表格,最后有一个附录。要求:1、创建该书的概念模型。(概念名称、属性、操作可以用中文,也可以用英文。用英文要能清晰表达出概念的含义)2、在概念模型中要包括概念间的关联,并表示出概念间的关联多重性。3、设计题(12分)一个完善的软件系统,必须要对出现的错误进行相应的处理,只有这样才能使系统足够的健壮。现在以软件系统中对于错误的处理为例,以面向对象的设计方法和原则对现有设计进行改进。在一个软件系统中,一个操作往往不会一定成功,常常会因为这样或者那样的原因失败,此时我们就要根据失败的原因相应的处理,使错误的影响局限在最小的范围内,最好能够恢复而不影响系统的正常运行。在对错误进行处理和记录的同时,还要通知系统的管理员,只有管理员才有能力对错误进行进一步的分析,从而查找出错误的根源,从根本上解决错误。下面针对错误处理通告管理员功能,假定一个在分布式环境访问数据库的操作,那么就有可能因为通信的原因或者数据库本身的原因失败,此时要通过用户界面来通知管理员发生的错误。简化了的代码示例如下:/*错误码定义*/classErrorConstant{publicstaticfinalintERROR_DBACCESS=100;publicstaticfinalintERROR_COMMUNICATION=101;}/*省略了用户界面中的其他的功能*/classGUISys{publicvoidannounceError(interrCode){switch(errCode){caseErrorConstant.ERROR_DBACCESS:/*通告管理者数据库访问错误的发生*/break;caseErrorConstant.ERROR_COMMUNICATION:/*通告管理者通信错误的发生*/break;}}}问题:1)上面的设计方案主要存在什么问题?违反了什么设计原则?(2分)2)现在针对这一功能,根据面向对象的设计方法和设计原则重新进行设计,画出设计类图,用文字大致描述一下你的设计方案,最后写出实现代码(代码与上述代码一样,只需要写出主要方法和描述出这一方法的解释,不需要对方法进行详细实现)。(10分)