当前位置:文档之家› 第10章 面向对象设计

第10章 面向对象设计

第10章 面向对象设计
第10章 面向对象设计

第10章面向对象设计

10.1 软件模块之间的依赖性可以从哪些角度和抽象层次进行分析?

在面向对象软件中,常见的软件模块有类、接口、包、构件。因此,分析软件模块之间的依赖性就可以从类、接口、包和构件的角度和层次进行分析。

10.2 消除包之间循环依赖性的方法是什么?

本质上,两个包之间的依赖性来自于两个包中类之间的依赖性。类之间的循环依赖性是个特别棘手的问题,好在大多数情况下可以通过重新设计避免循环依赖性。具体方法是增加新包。举例说明如下:

在下图中,包A依赖于包B,反过来包B又依赖包A,构成了循环依赖。具体解决办法是:将包B依赖的包A中的元素从包A中分离出来,组成包C,使得包B不再依赖包A,而是依赖包C。

10.3 请给出构件的一般性定义,然后给出传统的软件工程环境及面向对象的软件工程环境中构件的定义,最后选择你熟悉的编程语言说明怎样定义一个构件。

软件构件是一种组装单元,它具有规范的接口规格说明和显式的语境依赖。软件构件可以被独立部署,并由第三方任意组装。OMG UML规范中将构件定义为“系统中某一定型化的、可配置的和可替换的部件,该部件封装了实现并暴露一系列接口”。

在传统的软件工程环境中,一个构件就是程序的一个功能要素,程序由处理逻辑和实现处理逻辑所需的内部数据结构以及能够保证构件被调用和实现数据传递的接口构成。传统的构件也称为模块,是软件体系结构的一部分。

在面向对象的软件工程环境中,面向对象技术已达到了类级复用,而构件级复用则是比类级复用更高一级的复用,它是对一组类的组合进行封装(当然,在某些情况下,一个构件可能只包含一个单独的类),并代表完成一个或多个功能的特定服务,也为用户提供了多个接口。一个构件可以是一个编译的类,可以是一组编译的类,也可以是其他独立的部署单元,如一个文本文件、一个图片、一个数据文件、一个脚本等。

选择你熟悉的编程语言说明怎样定义一个构件。(略)

10.4 典型的面向对象设计模型在逻辑上由哪几部分组成?对每一部分进行设计时所包含的主要内容是什么?

典型的面向对象设计模型在逻辑上将系统划分为4个部分,分别是问题域部分、人机交互部分、任务管理部分及数据管理部分。

1)问题域部分的设计

在面向对象设计过程中,可能要对面向对象分析所得出的问题域模型进行补充或调整。例如,调整需求、复用已有的类、把问题域类组合在一起、增添泛化类以建立类间的协议、调整继承的支持级别、改进性能等。

2)人机交互部分的设计

人机交互界面的设计质量直接影响到用户对软件的使用。在设计阶段,必须根据需求把交互细节加入到用户界面设计中,包括人机交互所必需的实际显示和输入。

3)任务管理部分的设计

任务管理主要包括任务的选择和调整。常见的任务有事件驱动型任务、时钟驱动型任务、优先任务、关键任务和协调任务等。

设计任务管理子系统时,需要确定各类任务,并将任务分配给适当的硬件或软件去执行。

4)数据管理的设计

在采用面向对象方法进行软件开发时,数据的存储还是普遍使用关系数据库。在面向对象设计中,可以将UML类图看作是数据库的概念模型,一个类可以映射为一个表或多个表,此外,还要考虑类之间的关联关系、继承关系的映射。

10.5 用面向对象方法设计网上购书系统的软件结构,网上购书系统的业务如下:

某书店为方便客户通过Internet购买相关图书,开发一个“网上购书系统”,客户可以通过Web页面注册并登录“网上购书系统”,通过Web页面查看、选择图书,系统根据用户选择的图书单价、数量,系统自动生成订单,并计算总价格。

客户在提交订单之前,必须填写关于寄送地址和发票及付款方式等细节,一旦订单被提交,系统显示确认信息,并附上订单的详细信息。客户可以在线查询订单的状态。

系统管理人员查看客户的订单,验证客户的信用和付款方式,向仓库请求所购图书,打印发票并发货。

答:本系统从逻辑结构上分为三层,Web页面层,业务逻辑层和数据库层。Web页面层负责接收用户的请求,业务逻辑层在获知用户请求后,执行相应的业务逻辑,向数据库层发出数据请求,获得所需要的数据后,通知Web页面层将数据呈现给用户。

10.6 对10.5中的网上购书系统设计其问题域的类图。

问题域类包括客户类、系统管理员类、购物车类、订单类、图书类和发票类。用户分为客户和系统管理员两种,所以是泛化关系。客户和系统管理员都要对订单进行操作,所以和订单的关系是依赖关系。购物车中存放的是用户选购的图书,是聚集关系。具体见下图:

10.7 一所大学下设多个系,每个系包含多个教研室和多个学生班级。每位教师只能归属于一个教研室。学生分为本科生和研究生两种。每位教师可以承担多门课程的教学任务,每个学生可以选修多门课程。请根据以上问题描述画出类图。

从问题描述中,可得到大学、系、教研室、学生班级、教师、学生、教学任务、课程、本科生和研究生这10个类。大学与系、系与教研室、学生班级、教研室与教师、学生班级与学生都是聚集关系,也可以看做关联关系。学生同本科生、研究生之间是泛化关系。具体见下图:

10.8 如何将含有继承关系的类图映射为关系数据库?针对10.6中设计的类图设计关系数据库。

通常使用以下两种方法来映射继承关系:

1)将基类映射到一张表,每个子类映射到一张表。在基类对应的表中定义主键,而在子类对应的表中定义外键。

2)将每个子类映射到一张表,没有基类表。在每个子类的表中包括基类的所有属性。这种方法适用于子类的个数不多,基类属性比较少的情况。

在10.6题的类图中,共有7个类。其中,用户同客户和系统管理员类是泛化关系,可映射为两个表——客户信息表和系统管理员信息表;如果客户类和系统管理员类二者的属性基本相同,也可以映射为一个表,只需在表中添加一个新属性来区分客户和系统管理员即可。

购物车、图书、订单和发票可分别映射得到一个表。

《面向对象程序设计》第10章在线测试

《面向对象程序设计》第10章在线测试 A B C D 、关于异常对象的说法正确的是( A B 对象 C、以引用方式传递异常对象时,抛出的是局部静态对象 D 对象 A块相当于一个以类型为单一参数的函数 B 以捕捉 C块中可以声明变量,该变量可以在块外使用 D 数值 A B C D 、为保证程序中的全局变量不与开发商提供的全局变量重名,可以采取的措施是( A B C D

C、C++程序绝对不能出现错误 D、异常处理使C++程序在出现错误的情况下仍能继续运行 2、下面说法正确的是() A、C++程序中可以存在多个名字空间 B、不同的名字空间中不能出现名字相同的变量 C、名字空间能避免名字冲突 D、C++程序中也可以不定义名字空间 3、关于异常处理的说法正确的是() A、将异常的检测与处理分离 B、异常就是错误 C、异常由函数调用引起 D、在上层调用函数中使用try检测函数调用是否引发异常 4、下面与异常处理相关的关键字有() A、Throw B、throw C、try D、Try 5、下面的说法正确的是() A、引发异常用关键字throw B、在被调用函数中检测到异常条件用throw都可以引发异常 C、被调用函数只有在try块中用throw才可以引发异常 D、检测到的异常由catch捕获并处理 第三题、判断题(每题1分,5道题共5分) 1、抛出异常的模块并不负责异常的处理,该异常的处理可以程序中的任何位置。

正确错误、异常处理器根据抛出异常模块的报告来处理异常。 正确错误、异常信号传递方式有三种:传值方式、引用方式和指针方式。 正确错误表示函数将会抛出所有类型的异常 正确错误处理程序的出现次序无关紧要。 正确错误

第10章 面向对象设计

第10章面向对象设计 10.1 软件模块之间的依赖性可以从哪些角度和抽象层次进行分析? 在面向对象软件中,常见的软件模块有类、接口、包、构件。因此,分析软件模块之间的依赖性就可以从类、接口、包和构件的角度和层次进行分析。 10.2 消除包之间循环依赖性的方法是什么? 本质上,两个包之间的依赖性来自于两个包中类之间的依赖性。类之间的循环依赖性是个特别棘手的问题,好在大多数情况下可以通过重新设计避免循环依赖性。具体方法是增加新包。举例说明如下: 在下图中,包A依赖于包B,反过来包B又依赖包A,构成了循环依赖。具体解决办法是:将包B依赖的包A中的元素从包A中分离出来,组成包C,使得包B不再依赖包A,而是依赖包C。 10.3 请给出构件的一般性定义,然后给出传统的软件工程环境及面向对象的软件工程环境中构件的定义,最后选择你熟悉的编程语言说明怎样定义一个构件。 软件构件是一种组装单元,它具有规范的接口规格说明和显式的语境依赖。软件构件可以被独立部署,并由第三方任意组装。OMG UML规范中将构件定义为“系统中某一定型化的、可配置的和可替换的部件,该部件封装了实现并暴露一系列接口”。 在传统的软件工程环境中,一个构件就是程序的一个功能要素,程序由处理逻辑和实现处理逻辑所需的内部数据结构以及能够保证构件被调用和实现数据传递的接口构成。传统的构件也称为模块,是软件体系结构的一部分。 在面向对象的软件工程环境中,面向对象技术已达到了类级复用,而构件级复用则是比类级复用更高一级的复用,它是对一组类的组合进行封装(当然,在某些情况下,一个构件可能只包含一个单独的类),并代表完成一个或多个功能的特定服务,也为用户提供了多个接口。一个构件可以是一个编译的类,可以是一组编译的类,也可以是其他独立的部署单元,如一个文本文件、一个图片、一个数据文件、一个脚本等。 选择你熟悉的编程语言说明怎样定义一个构件。(略) 10.4 典型的面向对象设计模型在逻辑上由哪几部分组成?对每一部分进行设计时所包含的主要内容是什么? 典型的面向对象设计模型在逻辑上将系统划分为4个部分,分别是问题域部分、人机交互部分、任务管理部分及数据管理部分。

软件工程 第八章 面向对象的设计方法

第八章面向对象的设计方法 本章采用基于UML的面向对象设计方法的将分析模型转换为设计模型。如第五章所述,面向对象的分析模型主要由顶层架构图、用例与用例图、领域概念模型构成;设计模型则包含以包图表示的软件体系结构图、以交互图表示的用例实现图、完整精确的类图、针对复杂对象的状态图和用以描述流程化处理过程的活动图等。为完成这一转换过程,设计人员必须处理以下任务: (1)针对分析模型中的用例,设计实现方案。实现方案用 UML交互图表示。 (2)设计技术支撑设施。在大型软件项目中,往往需要一些技术支撑设施来帮助业务需求层面的类或子系统完成其功能。这些设施本身并非业务需求的一部分,但却为多种业务需求的实现提供公共服务。例如,数据的持久存储服务、安全控制服务和远程访问服务等。在面向对象设计中,需要研究这些技术支撑设施的实现方式以及它们与业务需求层面的类及子系统之间的关系。 (3)设计用户界面。 (4)针对分析模型中的领域概念模型以及第(2)、(3)两个步骤引进的新类,完整、精确地确定每个类的属性和操作,并完整地标示类之间的关系。此外,为了实现软件重用和强内聚、松耦合等软件设计原则,还可以对前面形成的类图进行各种微调,最终形成足以构成面向对象程序

设计的基础和依据的详尽类图。 面向对象的软件设计过程如图8-1-1所示。 图 8-1-1 面向对象的软件设计过程 第一节设计用例实现方案 UML 的交互图(顺序图、协作图)适于用例实现方案的表示。因此,本节首先介绍交互图的语言机制,然后探讨用例实现方案的设计方法。该设计方法包含如下3个步骤: (1)提取边界类、实体类和控制类; (2)构造交互图; (3)根据交互图精华类图。 一、顺序图 顺序图用来描述对象之间动态的交互关系,着重表现对象间消息传递的时间顺序。在顺序图中,参与交互的对象位于顶端的水平轴上,垂直轴表示时间,时间推移的方向是自上而下的。顺序图中的对象一般以“对象

第七章 面向对象的程序设计

第七章面向对象的程序设计 本章是面向对象的程序设计。与第五章介绍的面向过程的结构化程序设计不同,主要介 绍面向对象程序设计的基础知识,包括面向对象的基本概念以及Visual FoxPro支持的面向对 象的编程技术,详尽介绍了对各类控件的选择与使用方法。在对诸如表单等各类控件对象的设 计、操作上,面向对象的编程技术有自己的独特之处,但在所有对象的各种事件和方法的程序 代码设计中,仍然使用到结构化的程序设计方法。本章的主要内容是面向对象程序设计的理论 基础,其程序设计的基本目标是设计出能在可视化环境下运行的应用程序窗口界面—表单。 7.1 学习提要 1.学习目标与要求 通过本章学习,读者应达到以下要求: ⑴了解对象、类等基本概念; ⑵理解对象的属性、方法和事件; ⑶熟练掌握表单的基本设计、操作和应用; ⑷掌握常用控件的设计与使用。 ⑸熟练掌握常用事件、方法的过程代码的设计方法。 ⑹了解自定义类的创建和使用方法。 2.重点与难点: ⑴本章重点:对象与类以及属性、方法和事件等基本概念;表单的设计与应用;常用控 件属性、事件和方法的选择与运用。 ⑵本章难点:本章的重点即为本章的难点 3.主要知识点 ⑴面向对象的概念 ①对象、类 ②属性、方法、事件 ③Visual FoxPro 中的基类 ⑵表单的创建与基本操作 ①表单的创建 使用“窗体设计器”或“表单向导”创建表单。 ②表单的修改、运行 使用“窗体设计器”编辑修改表单。使用菜单或命令方式运行表单。 ③表单的属性、事件和方法

表单常用属性的设置,表单的常用事件、常用方法。 ④设置表单的数据环境 数据环境的概念,数据环境的设置。 ⑶表单常用控件 ①表单常用控件的基本操作 控件对象的选定,移动位置,改变大小,剪切、复制与粘贴,删除,布局设置。 ②常用控件对象 标签控件,命令按钮与命令按钮组控件,文本框与编辑框控件,选项组和复选框控件,列表框和组合框控件,容器与表格控件,页框控件,计时器与微调控件,图像控件等。 ③控件对象的常用属性设置 Caption属性,Name属性,Alignment属性,ButtonCount属性,BackColor属性,BorderColor属性,BorderStyle属性,Enabled属性,ForeColor属性,InputMask属性,PasswordChar属性,Picture属性,Height属性,Width属性,Left属性,Top属性,Value属性,Visible属性,FontName属性,FontSize属性,ControlSource属性。 ④控件对象的常用事件的使用 Load事件,Init事件,Destroy事件,Unload事件,Error事件,Click事件, DblClick事件,RightClick事件。 ⑤控件对象的常用方法的使用 SetFocus方法,Release方法,Refresh方法,Show方法,Hide方法。 ⑷类的建立 使用“类设计器”创建类。 7.2 习题 一、单项选择题 1.以下关于Visual FoxPro类的说法,不正确的是() A)类具有继承性 B)用户必须给基类定义属性,否则出错 C)子类一定具有父类的全部属性 D)用户可以按照已有的类派生出多个子类 2.下列基类中是容器类的是() A)表单B)命令按钮C)列表框D)单选按钮 3.下列关于“类”的叙述中,错误的是() A)类是对象的集合,而对象是类的实例 B)一个类包含了相似对象的特征和行为方法 C)类并不实行任何行为操作,它仅仅表明该怎样做 D)类可以按其定义的属性、事件和方法进行实际的行为操作

第10章面向对象讲解

第10章面向对象分析 10.1面向对象分析的基本过程 不论采用哪种软件工程方法开发软件,需求分析的主要工作都是:理解需求、表达需求和验证需求,下面的图概括地表示了参照当前系统建立目标系统的过程。 图:参照当前系统建立目标系统 面向对象分析(Object-Oriented Analysis,简称OOA)的关键就是识别出对象与类,并分析它们之间的关系,最终建立对象模型、动态模型和功能模型。

10.1.1 概述 系统分析员要善于学习、勇于实践,更重要的是一切从实际出发。 [[注注]]“OOA 就是抽取和整理用户需求并建立问题域精精确确模模型型的过程。”(P231)——这在一开始能做到吗?——扯蛋 10.1.2 3个子模型与5个层次 面向对象建模需建立包含系统的三个要素:1)静态结构(对象模型)、2)交互次序(动态模型)、3)数据交换(功能模型)。 建立系统模型的过程是一个迭代(iterations )式的自顶向下的求精过程。对于一个大型复杂系统来说对对象象模模型型一般由下述5个层次组成:

图10.2 复杂问题的对象模型的5个层次 其中主题层是指从一个更高(高于“类”)的抽象层次来描述对象模型(即从一个相当高的层次上描述总体模型),通过划分“主题”把一个复杂系统的对象模型分解成几个不同的概念范畴。 其实上述5个层次就是OOA中建立对象模型的5项主要工作:找出类和对象,识别结构(类或对象之间的关系),识别主题、定义属性、定义服务。我们知道动态模型和功能模型中都包含了对象模型中的操作,因此人们在定义每个类中的服务前,往往先建立起动态模型和功能模型,这样说来OOA大体上可按下列顺序进行: (1)确定类和对象 (2)确定关联 (3)划分主题 (4)定义属性 (5)确定继承关系 (6)建立动态模型

面向对象程序设计第10章在线测试

《面向对象程序设计》第10章在线测试剩余时间:59:51 答题须知:1、本卷满分20分。 2、答完题后,请一定要单击下面的“交卷”按钮交卷,否则无法记录本试卷的成绩。 3、在交卷之前,不要刷新本网页,否则你的答题结果将会被清空。 第一题、单项选择题(每题1分,5道题共5分) 1、throw后面的表达式不可以是() A、常量 B、变量 C、对象 D、数组 2、关于异常的说法,正确的是() A、异常就是错误 B、有了异常处理机制,出现错误也没有关系 C、异常在C++中以消息的形式传递 D、程序中出现的错误都可以用catch块来捕捉处理 3、关于catch(。。。)的说法错误的是() A、catch(。。。)可以捕捉所有类型的异常 B、catch(。。。)必须放在所有catch块的后面 C、catch(。。。)可以避免出现没有被捕捉的异常 D、catch(。。。)不能单独使用 4、C++中异常处理的默认模式是() A、终止模式 B、恢复模式 C、挂起模式 D、暂停模式 5、关于重新抛出错误的说法是() A、重新抛出是指抛出原来的异常 B、用throw语句再次抛出原来的异常 C、只能在catch块中抛出 D、重新抛出时不能改变异常信号的值 第二题、多项选择题(每题2分,5道题共10分) 1、关于异常处理的说法正确的是() A、将异常的检测与处理分离 B、异常就是错误 C、异常由函数调用引起 D、在上层调用函数中使用try检测函数调用是否引发异常

2、try子句的作用是() A、代码的保护段 B、如果预料某段程序代码可能发生异常,就将该段代码放在try子句之后 C、try子句产生异常 D、try子句中的throw表达式产生异常 3、catch子句的说法正确的是() A、catch子句后的复合语句是异常处理程序 B、catch子句捕获throw表达式抛出的异常 C、catch子句的异常类型说明只能是类型,不能是数值 D、catch子句的异常类型不能是自定义类 4、异常处理的执行过程是() A、程序执行try语句块内的保护段,如果发现异常则退出 B、如果在try语句内的程序段抛出异常,程序控制转入try块后的catch块 C、throw抛出的异常对象如果与catch子句异常类型的值一致,则执行对应的异常处理程序 D、如果没有匹配的catch子句,自动调用terminate终止程序 5、关于catch(…)语句的说法正确的是() A、catch(…)语句可以捕获任何异常 B、catch(…)语句可以放在catch子句的任何位置 C、catch(…)语句必须放在catch子句的最后 D、catch(…)语句捕获空的异常 第三题、判断题(每题1分,5道题共5分) 1、异常(Exception)是程序运行过程中,由于环境变化、用户操作失误以及其它方面的原因而产生的运行时不正常的情况. 正确错误 2、抛出异常的模块只是报告某个地方存在错误,这个报告可以帮助异常处理器解决这个错误。 正确错误

UML面向对象分析与设计教程课后习题答案简答题部分

简答题 第一章 1.面向对象设计的基本特征有哪些这些特征对软件设计有何帮助 封装性继承性多态性 在由封装,继承,多态所组成的环境中,程序员可以编写出比面向过程模型更健壮,更具扩展性的程序.经过仔细设计的类层次结构是重用代码的基础.封装能让程序员不必修改公有接口的代码即可实现程序的移植.多态能使程序员开发出简洁,易懂,易修改的代码. 2.类与对象的区别是什么 类是抽象的,不具体的。就像有些东西可以归为一类,比如说狗,猫,猪。它们都是动物,我们就可以归为一类。 而猫,狗就是动物类中的一个对象。 3.什么是软件生命周期生命周期包括几个阶段 软件的生命周期,亦称软件的生存周期。它是按开发软件的规模和复杂程度,从时间上把软件开发的整个过程(从计划开发开始到软件报废为止的整个历史阶段)进行分解,形成相对独立的几个阶段,每个阶段又分解成几个具体的任务, 然后按规定顺序依次完成各阶段 的任务并规定一套标准的文档作为各个阶段的开发成果,最后生产出高质量的软件。 分为:一般分为定义,开发,维护三大阶段, 定义阶段有可行性论证和开发计划,需求分析, 开发阶段有概要设计,详细设计和编码,维护阶段有测试,运行维护 4.面向对象与uml的关系 umL是统一建模图,用于便于描述类之间的关系等,是用来帮助你更好进行面向对象的设计。 5.面向对象设计与传统软件相比,有何优点 更有针对性更容易让客户满意减少修改提高效率 第二章 模型元素有哪些 UML中模型元素太多了,比如用例图中的元素有用例,角色,扩展关系,包含关系,类图中的元素有类,接口,关联等等,每一种框图都有各自独有的元素 2.简述uml通用机制组成以及它的作用 一、修饰。 在使用UML语言建模时,可以将图形修饰附加到UML图中的模型元素上。比如,当一个元素代表某种类型的时候,它的名称可以用粗体字形类显示;当同一元素表示该类型的实例时,该元素的名称用一条下划线修饰。 二、注释。 UML语言中用一条虚线将注释连接到它为之解释的或细化的元素上。 三、通用划分。 UML语言对其模型元素规定了两种类型的通用划分:型-实例(值)和接口-实现。 1、型-实例(Type-Instance):描述一个通用描述符与单个元素项之间的对应关系。实例元素使用与通用描述符相同的表示图形,但是名字的表示与通用描述符不同:实例元素名字带有下划线,而且后面还要加上冒号和通用描述符的名字。 2、接口-实现:接口声明了一个规定了服务的约定,接口的实现负责执行接口的全部语义定义并实现该项服务。

面向对象的c++程序设计第六版课后习题答案第十章

Chapter 10 DEFINING CLASSES AND ABSTRACT DATA TYPES 1. Solutions for and Remarks on Selected Programming Problems This chapter can be done after Chapter 7, Arrays. However, I have not used anything from that chapter in these solutions. Several of these solutions could be simplified in good measure if arrays were used instead of the extensive switch and nested if else statements. 1. Class grading program I have put statements of programming strategy and of the problem in the program comments. One struct StudentRecord { int studentNumber; double quiz1; double quiz2; double midterm; double final; double average; char grade; };

void input(StudentRecord& student); void computeGrade(StudentRecord& student); void output(const StudentRecord student); int main() { StudentRecord student[CLASS_SIZE]; for(int i = 0; i < CLASS_SIZE; i++) input(student[i]); << "These are 100 point tests\n"; cin >> >> ; cout << << " " << << endl << endl; } void computeGrade(StudentRecord& student) { n"; abort(); } = letterGrade[index]; } void output(const StudentRecord student)

第章面向对象程序设计习题

第6章面向对象程序设计 一.选择题 1.下面有关类和对象的说法中,不正确的是【】。 A) 类是系统提供的一种数据类型B) 对象是类的实例 C) 类和对象的关系是抽象和具体的关系D) 任何一个对象只能属于一个具体的类 2.面向对象的特点主要概括为【】。 A) 可分解性、可组合型性和可分类性B) 继承性、封装性和多态性 C) 封装性、易维护性、可扩展性和可通用性D) 抽象性、继承性和封装性3.要使一个类能被同一命名空间中的其他类访问,但不能被这个命名空间以外的类访问,该类可以【】。 A) 不使用任何修饰符B) 使用private修饰符 C) 使用public修饰符D) 使用internal修饰符 4.在C#中,【】访问修饰符修饰的字段只能由当前程序集访问。 A) private B) public C) protected D) internal 5.类的字段和方法的默认访问修饰符是【】。 A) public B) private C) protected D) internal 6.下列关于构造函数的描述中,不正确的是【】。 A) 构造函数中,不可以包含return语句B) 一个类只能有一个构造函数 C) 实例构造函数在生成类实例时被自动调用D) 用户可以定义无参构造函数7.下列关于构造函数的描述中,【】是正确的。 A) 构造函数名必须与类名相同B) 构造函数不可以重载 C) 构造函数不能带参数D) 构造函数可以声明返回类型8.下列的【】不是构造函数的特征。 A) 构造函数的函数名与类名相同B) 构造函数可以重载 C) 构造函数可以带有参数D) 可以指定构造函数的返回值类型 9.类ClassA有一个名为M1的方法,在程序中有如下一段代码,假设该段代码是可以执行的,则声明M1方法时一定使用了【】修饰符。 ClassA Aobj=new ClassA(); ClassA.M1(); A) public B) public static C) private D) virtual 10.在C#中,从属性的读写特性上来进行分类,可以划分为以下3种,除了【】。 A) 只读属性B) 只写属性C) 读写属性D) 不可读不可写属性 11.在C#中,以下关于属性的描述中正确的是【】。 A) 属性是以public关键字修饰的字段,以public关键字修饰的字段也可称为属性 B) 属性是访问字段值的一种灵活机制,属性更好地实现了数据的封装和隐藏 C) 要定义只读属性只需在属性名前加上readonly关键字 D) C#的类中不能自定义属性 12.以下类MyClass的属性count属于【】属性。 class MyClass

第7章 面向对象的程序设计基础

第7章面向对象的程序设计基础 一、单项选择题 1.Visual FoxPro 6.0不但支持传统的面向过程的编程方法,而且全面引入了_______的程序设计方法,将FoxPro系列提升到真正的关系数据库世界。(§7.1 理解) A)结构化 B) 非过程化 C)面向数据库 D)面向对象 2.从可视化编程的角度看,对象是一个具有属性和方法的实体。一旦对象建立以后,其操作就通过与对象有关的_______来描述。(§7.1 理解) A)属性、事件和方法 B)实体、类 C)封装性、继承性 D)数据 3._______也是一种对象,他将一些特殊的对象进行更严格的封装,定制成用以显示数据、执行操作的一种图形对象。(§7.1 理解) A)类 B)父类 C)子类 D)控件 4.下列_______组是类。(§7.1 理解) A)篮球、饭桌、人、房子 B)篮球、饭桌、工人、厨房 C)文本框、命令按钮 D)球、桌子、人、房子 5.下列关于面向对象程序设计(OOP)的说法,错误的是_______。(§7.1 理解) A)OOP以编写程序代码为中心工作 B)OOP以“对象”表示各种事物,以“类”表示对象的抽象 C)OOP以“方法”表现处理事物的过程 D)OOP以对象及其数据结构为中心展开工作 6.任何对象都有自己的属性,下列关于属性的叙述中,正确的是_______。(§7.1 理解) A) 属性用于描述对象所具有的性质和特点,通常用各种类型的数据来表示 B)属性用于描述对象所具有的内部特征,通常用各种类型的数据来表示 C)属性用于描述对象所具有的外部特征,通常用各种类型的数据来表示 D)属性用于描述对象所具有的固有方法,通常用各种程序代码来表示 7.下列关于事件的说法中,错误的是_______。(§7.1 理解) A)事件代码也可以像方法一样被显式调用 B)事件是对象触发的行为描述,是一种预先定义好的特定动作 C)事件可以持续完成。 D)事件由用户或者系统激活 8.下列关于方法的说法中,错误的是_______。(§7.1 理解) A)方法是与对象相关的过程 B)方法是指对象为完成一定功能而编写的一段程序代码 C)方法与事件有着紧密联系,一个时间必定有一个与之相对应的方法 D)方法与事件相同,用户不可以扩充方法。 9.下列关于创建新类的叙述中,错误的是_______。(§7.2 应用) A)从“项目管理器”里选择“类”| “新建” B)从系统菜单上选择“文件”|“新建”|“类”|“新建文件” C)可以在命令窗口输入ADD CLASS命令,进入“类设计器” D)在命令窗口里执行CREATE CLASS命令 10. 下列关于“继承性”的说法,错误的是_______。(§7.1 理解)

第10章 面向对象的方法

第10章例题分析与解答 https://www.doczj.com/doc/1d6373137.html,作者:不详来源:2006年9月4日发表评论进入社区 一、填空题 1.面向对象方法认为系统是由应用域的______组成。 2.对象具有状态,描述对象的状态用它的______。 3.对象的抽象是______。 4.类之间有两种结构关系,它们是分类关系和______关系。 5.面向对象程序设计语言与其他程序设计语言的最主要差别是它具有______。 6.动态模型描述了系统的______。 二、选择题 1.火车是一种陆上交通工具,火车和陆上交通工具之间的关系是( )关系。 A.组装 B.整体成员 C.has a 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.词组 三、应用题 1.建立窗口系统的对象模型。问题陈述如下: 窗口分为对话窗、图形窗、滚动窗三种;对话窗中有若干对话项,由唯一的项名字来确定,对话项分为按钮、选择项、正文项三种,选择项中有若干对话项入口;图形窗中有若干形状元素,形状元素分为一维形状和二维形状,一维形状又分为直线、圆弧、折线;二维形状分为圆、椭圆、矩形、多边形,其中多边形和折线由若干有序顶点组成,正文窗是滚动窗的一种,而图形滚动窗既是一种图形窗又是一种滚动窗。 2.在学校教学管理系统中,学生查询成绩就是系统中的一次交互,请用状态图来描述这种查询的交互行为。 答案: 一、填空题 1.对象 2.属性值 3.类 4.组装 5.继承性 6.动态行为

《面向对象程序设计》第10章在线测试

A B C D 、关于异常的说法,正确的是( A B C D catch(。。。)的说法错误的是( A B C(。。。)可以避免出现没有被捕捉的异常D 中异常处理的默认模式是( A B C D 、关于重新抛出错误的说法是( A B C D

A、代码的保护段 B、如果预料某段程序代码可能发生异常,就将该段代码放在try子句之后 C、try子句产生异常 D、try子句中的throw表达式产生异常 3、catch子句的说法正确的是() A、catch子句后的复合语句是异常处理程序 B、catch子句捕获throw表达式抛出的异常 C、catch子句的异常类型说明只能是类型,不能是数值 D、catch子句的异常类型不能是自定义类 4、异常处理的执行过程是() A、程序执行try语句块内的保护段,如果发现异常则退出 B、如果在try语句内的程序段抛出异常,程序控制转入try块后的catch块 C、throw抛出的异常对象如果与catch子句异常类型的值一致,则执行对应的异常处理程序 D、如果没有匹配的catch子句,自动调用terminate终止程序 5、关于catch(…)语句的说法正确的是() A、catch(…)语句可以捕获任何异常 B、catch(…)语句可以放在catch子句的任何位置 C、catch(…)语句必须放在catch子句的最后 D、catch(…)语句捕获空的异常 第三题、判断题(每题1分,5道题共5分) 1、异常(Exception)是程序运行过程中,由于环境变化、用户操作失误以及其它方面的原因而产生的运行时不正常的情况. 正确错误 2、抛出异常的模块只是报告某个地方存在错误,这个报告可以帮助异常处理器解决这个错误。 正确错误 3、C++引入了关键字throw和catch,用于进行异常处理。

《面向对象程序设计》第04章在线测试

A B D C 员 A B C D 、下面的语句中能将类 A B C D 是类A f(A tmp)是类 A B C D 、下面对于友元函数描述正确的是 A B C D

D、没有this指针,也就没有默认操作的对象 2、下面关于友元的说法正确的是() A、友元函数是拥有成员函数一切权利 B、友元是一种成员函数 C、友元可以直接访问类的所有成员 D、友元不能访问类的私有成员 3、下面关于友元函数正确的说法是() A、在类中用关键词friend声明友元函数 B、友元函数说明的位置只能在类的public区 C、友元函数的定义只能放在类的外部 D、友元函数不是类的成员函数 4、关于友元函数的说法正确的是() A、友元函数可以是普通函数,可以是其他类的成员函数,也可以是本类的成员函数 B、友元函数可以访问多个类的私有成员和保护成员 C、在调用友元函数的时候需要使用“.”运算符 D、如果友元函数是某个类的成员函数,在定义这个友元函数的时候要使用类前缀。 5、下面关于友元函数使用特点的说明正确的是() A、友元函数可以绕开成员函数直接访问类的私有和保护成员,避免调用成员函数相关的开销 B、友元函数虽然不是类的成员函数,但是因为友元函数是在类内说明的,所以也带有用this指针 C、友元函数可以以使用类内的所有成员,因此破坏了数据的安全性 D、友元函数的形参如果是类对象,可以用对象名,对象的引用或者对象指针 第三题、判断题(每题1分,5道题共5分) 1、友元只能访问类中的公有成员,不能访问私有成员。 正确错误 2、友元函数的定义只能放在类的外部,与类的成员函数放在一起。

正确错误 f()要操作类A的成员函数,把类 正确错误 、友元具有传递性,单向性和继承性的特点。 正确错误 、一个函数可以是多个类的友元函数。 正确错误 恭喜,交卷操作成功完成!你本次进行的《面向对象程序设计》第04章在线测试的得分为 20分(满分20分),本次成绩已入库。若对成绩不满意,可重新再测,取最高分。 测试结果如下: ? 1.1 [单选] [对] 若B类为A类的友元类,则下面的说法正确的是() ? 1.2 [单选] [对] 一个类的友元不是该类的成员,与该类的关系密切,所以它()。 ? 1.3 [单选] [对] 下面的语句中能将类B 定义为类A的友元类的是() ? 1.4 [单选] [对] 如果类B 是类A的友元类,n是类A的私有数据成员,函数f(A tmp)是类B的公有成员函数,a是类A的对象, b是B类的对象,下面语句正确的 是() ? 1.5 [单选] [对] 下面对于友元函数描述正确的是 ? 2.1 [多选] [对] 一个类的友元不是该类的成员,与该类的关系密切,所以下面它的说法错误的是()。 ? 2.2 [多选] [对] 下面关于友元的说法正确的是() ? 2.3 [多选] [对] 下面关于友元函数正确的说法是() ? 2.4 [多选] [对] 关于友元函数的说法正确的是() ? 2.5 [多选] [对] 下面关于友元函数使用特点的说明正确的是() ? 3.1 [判断] [对] 友元只能访问类中的公有成员,不能访问私有成员。 ? 3.2 [判断] [对] 友元函数的定义只能放在类的外部,与类的成员函数放在一起。 ? 3.3 [判断] [对] 如果函数f()要操作类A和类B的私有成员,可以把f()声明为类A的成员函数,把类A声明为类B的友元类。 ? 3.4 [判断] [对] 友元具有传递性,单向性和继承性的特点。 ? 3.5 [判断] [对] 一个函数可以是多个类的友元函数。

面向对象程序设计第11章在线测试

《面向对象程序设计》第11章在线测试剩余时间:59:52 答题须知:1、本卷满分20分。 2、答完题后,请一定要单击下面的“交卷”按钮交卷,否则无法记录本试卷的成绩。 3、在交卷之前,不要刷新本网页,否则你的答题结果将会被清空。 第一题、单项选择题(每题1分,5道题共5分) 1、STL中能够保存其他类型的对象的类是() A、容器 B、迭代器 C、算法 D、数组 2、双队列(deque)属于() A、顺序容器 B、关联容器 C、前向容器 D、双向容器 3、集合(set)属于( ) A、顺序容器 B、关联容器 C、前向容器 D、双向容器 4、多重集(multiset)属于( ) A、顺序容器 B、关联容器 C、前向容器 D、双向容器 5、映射(map)属于( ) A、顺序容器 B、关联容器 C、前向容器 D、双向容器 第二题、多项选择题(每题2分,5道题共10分) 1、下面属于适配器容器的是( ) A、优先队列 B、堆栈 C、集合 D、映射

2、下面属于容器的头文件是() A、vector B、list C、quene D、set 3、下面的说法正确的是()题太坑!!!对的也显示错误! A、容器用于存放数据对象 B、算法用于操作容器中的数据对象 C、迭代器是容器的代替 D、迭代器用于链接容器和算法 4、下面关于string类型的说法正确的是() A、使用string类型前,程序必须包含头文件string B、string类型是C++的一部分 C、string类型与char* 类型的作用一样 D、string相当于一个保存字符的序列容器 5、下面属于顺序容器的是() A、向量 B、双队列 C、堆栈 D、列表 第三题、判断题(每题1分,5道题共5分) 1、容器是能够保存其它类型的对象的类。 正确错误2、算法就是一个按照一组定义明确的步骤来解决某个问题的处理过程。 正确错误

第八章 面向对象程序设计

第八章面向对象程序设计 一、选择题 1、面向对象程序设计采用了以为中心的软件构造方法。 A)数据结构B)数据流C)功能分析D)算法 2、下面关于属性、方法和事件的叙述中,错误的是______。 A)属性用于描述对象的状态,方法用于表示对象的行为 B)基于同一个类产生的两个对象可以分别设置自己的属性值 C)事件代码也可以像方法一样被显示调用 D)在新建一个表单时,可以添加新的属性、方法和事件 3、在下面关于面向对象数据库的叙述中,错误的是______。 A)每个对象在系统中都有唯一的对象标识 B)事件作用于对象,对象识别事件并作出相应反应 C)一个子类能够继承其所有父类的属性和方法 D)一个父类包括其所有子类的属性和方法 4、每个对象都可以对一个被称为事件的动作进行识别和响应。下面对于事件的 描述中,_____是错误的。 A)事件是一种预先定义好的特定的动作,由用户或系统激活 B)VFP基类的事件集合是由系统预先定义好的,是唯一的 C)VFP基类的事件也可以由用户创建 D)可以激活事件的用户动作有按键、单击鼠标、移动鼠标等 5、_____是面向对象程序设计中程序运行的最基本实体。 A)对象B)类C)方法D)函数

6、创建类时首先要定义类的。 A)名称B)属性C)事件D)方法 7、有关窗口的操作,是正确的。 A) deactivate window命令挂起的窗口将从内存中清除 B) show window命令显示的窗口不一定是活动窗口,但活动窗口一定是显示 窗口 C) hide window命令将活动窗口在屏幕上隐藏起来,输出仍然面向该窗口 D)用release window删除的窗口还可以再重新显示或激活 8、有关窗口的叙述,是正确的。 A) ACTIV A TE WINDOW 命令激活窗口后,@…SA Y的 坐标是相对屏幕的物理坐标 B)当多次使用激活窗口命令时,则最后一个被激活的窗口是当前窗口 C)当前窗口是无法改变的 D)窗口休眠后第一个激活的窗口变为当前窗口 9、以下属于窗口类控件的是。 A)Text B) Form C) Lable D) CommandButton 10、以下属于非容器类控件的是。 A) Form B) Lable C) Page D) Container 11、以下属于容器类控件的是______。 A) Text B) Form C) Label D) CommandButton 12、面向对象的程序设计是近年来程序设计方法的主流方式,简称OOP。下面 这些对于OOP的描述错误的是。

相关主题
文本预览
相关文档 最新文档