面向对象设计之8-图书管理系统

面向对象设计之8-图书管理系统
面向对象设计之8-图书管理系统

案例:“图书管理系统”面向对象分析与设计

例如,“图书管理系统”面向对象分析与设计大致过程如下:

1.需求调查分析

需求调查分析的结果一般用文字描述,必要时也可用业务流程图辅助描述。“图书管理系统”需求陈述如下:

在图书管理系统中,管理员要为每个读者建立借阅账户,并給读者发放不同类别的借阅卡(借阅卡可提供卡号、读者姓名),账户内存储读者的个人信息和借阅记录信息。持有借阅卡的读者可以通过管理员(作为读者的代理人与系统交互)借阅、归还图书,不同类别的读者可借阅图书的范围、数量和期限不同,可通过互联网或图书馆内查询终端查询图书信息和个人借阅情况,以及续借图书(系统审核符合续借条件)。

借阅图书时,先输入读者的借阅卡号,系统验证借阅卡的有效性和读者是否可继续借阅图书,无效则提示其原因,有效则显示读者的基本信息(包括照片),供管理员人工核对。然后输入要借阅的书号,系统查阅图书信息数据库,显示图书的基本信息,供管理员人工核对。最后提交借阅请求,若被系统接受则存储借阅纪录,并修改可借阅图书的数量。归还图书时,输入读者借阅卡号和图书号(或丢失标记号),系统验证是否有此借阅纪录以及是否超期借阅,无则提示,有则显示读者和图书的基本信息供管理员人工审核。如果有超期借阅或丢失情况,先转入过期罚款或图书丢失处理。然后提交还书请求,系统接受后删除借阅纪录,并登记并修改可借阅图书的数量。

图书管理员定期或不定期对图书信息进行入库、修改、删除等图书信息管理以及注销(不外借),包括图书类别和出版社管理。

2. 用例建模

(1)确定执行者

通过对系统需求陈述的分析,可以确定系统有两个执行者:管理员和读者。简要描述如下:

1)管理员:管理员按系统授权维护和使用系统不同功能,可以创建、修改、删除读者

信息和图书信息即读者管理和图书管理,借阅、归还图书以及罚款等即借阅管理。

2)读者:通过互联网或图书馆查询终端,查询图书信息和个人借阅信息,还可以在符

合续借的条件下自己办理续借图书。

(2)确定用例

在确定执行者之后,结合图书管理的领域知识,进一步分析系统的需求,可以确定系统的用例有:

?借阅管理:包含借书、还书(可扩展过期和丢失罚款)、续借、借阅情况查询;

?读者管理:包含读者信息和读者类别管理;

?图书管理:包含图书信息管理、图书类别管理、出版社管理、图书注销和图书信息查询。

下面是借阅情况查询、读者信息管理、读者类别管理、图书类别管理、出版社管理和图书信息查询等用例的简要描述:

1)借阅情况查询:读者通过互联网或图书查询终端登录系统后,查阅个人的所有借

阅纪录。

2)读者信息管理:管理员登录后,对读者详细信息进行增、删、改等维护管理。

3)读者类别管理:管理员登录后,对读者类别进行增、删、改等维护管理。

4)图书类别管理:管理员登录后,对图书类别进行增、删、改等维护管理。

5)出版社信息管理:管理员登录后,对出版社详细信息进行增、删、改等维护管理。

6)图书信息查询:读者或管理员通过互联网或图书查询终端登录后,查询所需要的

图书信息。

下面是借书、还书、续借、图书信息管理、图书注销等用例的详细描述:

1) 借书

用例名称:借书

参与的执行者:管理员

前置条件:一个合法的管理员已经登录到这个系统

事件流:

A.输入读者编号;

提示超期未还的借阅记录;

B.输入图书编号;

If 选择“确定” then

If 读者状态无效或改书“已”注销或已借书数>=可借书数 Then

给出相应提示;

Else

添加一条借书记录;

“图书信息表”中“现有库存量”-1;

“读者信息表”中“已借书数量”+1;

提示执行情况;

Endif

清空读者、图书编号等输入数据;

Endif

If 选择“重新输入”then

清空读者、图书编号等输入数据;

Endif

If 选择“退出”then

返回上一级界面;

Endif

返回A.等待输入下一条;

后置条件:如果是有效借书,在系统中保存借阅纪录,并修改图书库存量和读者借书数量。

2) 还书

用例名称:还书

参与的执行者:管理员

前置条件:一个合法的管理员已经登录到这个系统

事件流:

A.输入读者编号;

提示超期未还的借阅记录;

If 有超期 then

提示,调用“计算超期罚款金额”;

Endif

If 丢失 then

选择该书借阅记录;

调用“计算丢失罚款金额”+调用“计算超期罚款金额”;

Endif

If 选择“确定” 还书then //要先交罚款后才能还

B.输入图书编号;

If 读者状态无效或该图书标号不在借书记录中then

提示该读者借书证无效或该图书不是该读者借阅的;

Else

添加一条还书记录;

删除该借书记录;

“图书信息表”中“现有库存量”+1;

“读者信息表”中“已借书数量”-1;

提示执行情况;

Endif

清空读者、图书编号等输入数据;

Endif

If 选择“重新输入”then

清空读者、图书编号等输入数据;

Endif

If 选择“退出”then

返回上一级界面;

Endif

返回A.等待输入下一条;

后置条件:如果是有效还书,在系统中删除借阅纪录,并修改图书库存量和读者借书数量。

3) 续借

用例名称:续借

参与的执行者:管理员、读者

前置条件:一个合法的管理员或读者已经登录到这个系统

事件流:

A.输入读者编号;

提示超期未还的借阅记录;

If 有超期 then

提示,调用“计算超期罚款金额”;

Endif

选择该书借阅记录;

Endif

If 选择“确定” 续借then

If 该图书已超期或该图书续借次数>=可续借次数then

提示该读者该图书已超期或该图书续借次数>可续借次数,不能续借;

Else

修改该书借阅记录中的“应归还日期”;

图书续借次数+1;

提示执行情况;

Endif

清空读者、图书编号等输入数据;

Endif

If 选择“重新输入”then

清空读者书编号等输入数据;

Endif

If 选择“退出”then

返回上一级界面;

Endif

返回A.等待输入下一条;

后置条件:如果是有效续借,在系统中修改借阅纪录。

4) 图书信息管理

用例名称:图书信息管理

参与的执行者:管理员

前置条件:一个合法的管理员已经登录到这个系统

事件流:

(参见附录D“图书管理系统软件设计规格说明书”中“书籍信息管理”模块详细设计,这里略)

后置条件:如果是有效操纵,在系统中增加、修改、删除图书信息纪录。

5) 图书注销

用例名称:图书注销

参与的执行者:管理员

前置条件:一个合法的管理员已经登录到这个系统

事件流:

A.查询要注销的图书信息;

B.选择要注销的图书信息记录;

If 选择“确定”注销 then

If 该书有借阅记录 then

提示该书有人已借阅,不能注销;

Else

添加一条注销记录;

“图书信息表”中设定该书“已”注销;

提示执行情况;

Endif

Endif

If 选择“退出”then

返回上一级界面;

Endif

返回A.等待选择下一条或重新查询;

后置条件:如果是有效注销,在系统中保存注销纪录,并对图书信息做标记。

(3)确定用例之间的关系

确定执行者和用例之后,进一步确定用例之间的关系,如图7-35所示。

3.静态建模图7-35 “图书管理系统“用例

读者

首先使用本章介绍的CRC或OMT技术,通过寻找系统需求陈述中的名词,结合图书管理的领域知识,首先给出候选的对象类,经过筛选、审查,可确定“图书管理系统”的类有:读者、图书、借阅记录、图书注销记录、读者类别、图书类别、出版社等。然后,经过标识责任、标识协作者和复审,定义类的属性、操作和类之间的关系。

这里仅以“读者”类为例列出该类的属性和操作,其它类的属性可参阅附录D“图书管理系统软件设计规格说明书

”中4.2“数据表结构”,操作与“读者”类的类似。

“读者”类

?私有属性

读者编号(借书证号码和用户名与此同):文本

读者姓名:文本

读者类别编号:文本

读者性别:文本

出生日期:时间/日期

读者状态:文本

办证日期:时间/日期

已借图书数量:数值

证件名称:文本

证件号码:文本

读者单位:文本

联系地址:文本

联系电话:文本

EMAIL:文本

用户密码:文本

办证操作员:文本

备注:文本

?公共操作

永久写入读者信息

永久读取读者信息

新增读者

删除读者

修改读者信息

获取读者信息

查找读者信息

返回借阅数量

类之间的关系如图7-36所示。

《面向对象程序设计》第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章例题分析与解答 作者:不详来源: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的描述错误的是。

相关文档
最新文档