600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 软考软件设计师中级考试大纲(附题型举例)

软考软件设计师中级考试大纲(附题型举例)

时间:2018-12-27 04:25:31

相关推荐

软考软件设计师中级考试大纲(附题型举例)

软件设计师考试大纲

一、考 试 说 明

1.考试目标

通过本考试的合格人员能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档,组织和指导程序员编写、调试程序,并对软件进行优化和集成测试,开发出符合系统总体设计要求的高质量软件;具有工程师的实际工作能力和业务水平。

2.考试要求

(1)掌握计算机内的数据表示、算术和逻辑运算方法;

(2)掌握相关的应用数学及离散数学基础知识;

(3)掌握计算机体系结构以及各主要部件的性能和基本工作原理;

(4)掌握操作系统、程序设计语言的基础知识,了解编译程序的基本知识;

(5)熟练掌握常用数据结构和常用算法;

(6)熟悉数据库、网络和多媒体的基础知识;

(7)掌握C程序设计语言,以及C++、Java中的一种程序设计语言;

(8)熟悉软件工程、软件过程改进和软件开发项目管理的基础知识;

(9)掌握软件设计的方法和技术;

(10)了解信息化、常用信息技术标准、安全性,以及有关法律、法规的基础知识;

(11)正确阅读和理解计算机领域的英文资料。

3.考试科目设置

(1)计算机与软件工程知识,考试时间为150分钟,笔试,选择题;

(2)软件设计,考试时间为150分钟,笔试,问答题。

二、考 试 范 围

考试科目1:计算机与软件工程知识

1.计算机科学基础知识

1.1 数制及其转换

二进制、八进制、十进制和十六进制等常用数制及其相互转换

1.2 计算机内数据的表示

数的表示非数值表示(字符和汉字表示、声音表示、图像表示)

1.3 算术运算和逻辑运算

计算机中的二进制数运算方法逻辑代数的基本运算

1.4 其他数学基础知识

常用数值计算排列组合,概率论应用,应用统计(数据的统计分析)编码基础命题逻辑、谓词逻辑、形式逻辑的基础知识运筹基本方法

2.计算机系统知识

2.1 计算机硬件基础知识

2.1.1 计算机系统的组成、体系结构分类及特性

CPU、存储器的组成、性能和基本工作原理常用I/O设备、通信设备的性能以及基本工作原理I/O接口的功能、类型和特性CISC/RISC,流水线操作,多处理机,并行处理

2.1.2 存储系统

虚拟存储器基本工作原理,多级存储体系RAID类型和特性

2.1.3 可靠性与系统性能评测基础知识

诊断与容错系统可靠性分析评价计算机系统性能评测方法

2.2 计算机软件知识

2.2.1 数据结构与算法知识

数组链表队列、栈树图的定义、存储和基本操作杂凑(Hash表)常用的排序算法、查找算法、数值计算、字符串处理、数据压缩算法、递归算法、图的相关算法算法描述和分析

2.2.2 操作系统知识

操作系统的内核处理机管理存储管理设备管理文件管理作业管理网络操作系统和嵌入式操作系统基础知识操作系统的配置

2.2.3 程序设计语言和语言处理程序知识

汇编、编译、解释系统的基础知识和基本工作原理程序设计语言的基本成分(数据、运算、控制和传输),程序调用的实现机制各类程序设计语言的主要特点和适用情况

2.2.4 数据库知识

数据库模型(概念模式、外模式、内模式)数据模型,ER图,规范化数据操作数据库语言数据库管理系统的功能和特征数据库的控制功能数据仓库和分布式数据库基础知识

2.3 计算机网络知识

网络体系结构传输介质,传输技术,传输方法,传输控制常用网络设备和各类通信设备的特点Client-Server结构,Browser-Server结构LAN(拓扑,存取控制,组网,网间互连)Internet 和Intranet 基础知识以及应用网络软件网络管理,网络性能分析

2.4 多媒体基础知识

多媒体系统基础知识简单图形的绘制,图像文件的处理方法音频和视频信息的应用多媒体应用开发过程

3.系统开发和运行知识

3.1 软件工程知识

软件生存周期与软件生存周期模型软件开发方法软件开发项目管理软件工具与软件开发环境

3.2 系统分析基础知识

系统分析的主要步骤结构化分析方法

3.3 系统设计基础知识

概要设计与详细设计的基本任务系统设计的基本原理系统模块结构设计结构化设计方法面向数据结构的设计方法系统详细设计

3.4 系统实施基础知识

系统实施的基本内容程序设计方法程序设计的基本模块系统测试系统转换

3.5 系统运行和维护基础知识

系统可维护性的概念系统维护的类型系统评价的概念与类型

3.6 软件质量管理基础知识

软件质量特性(ISO/IEC 9126软件质量模型)软件质量保证软件复杂性的概念及度量方法(McCabe度量法)软件评审(设计质量评审、程序质量评审)软件容错技术

3.7 软件过程改进基础知识

软件能力成熟度模型CMM统一过程(UP)与极限编程(XP)的基本概念

4.面向对象基础知识

面向对象的基本概念面向对象分析与设计知识分析模式与设计模式知识面向对象程序设计知识面向对象数据库、分布式对象基础知识

5.信息安全知识

信息系统安全基础知识信息系统安全管理保障完整性与可用性的措施加密与解密机制基础知识风险管理(风险分析、风险类型、抗风险措施和内部控制)计算机安全相关的法律、法规基础知识

6.标准化、信息化和知识产权基础知识

6.1 标准化基础知识

标准化意识,标准化组织机构,标准的内容、分类、代号与编号规定,标准制订过程国际标准、国家标准、行业标准、企业标准代码标准、文件格式标准、安全标准、互联网相关标准、软件开发规范和文档标准、基于构件的软件标准

6.2 信息化基础知识

全球信息化趋势、国家信息化战略、企业信息化战略和策略互联网相关的法律、法规知识个人信息保护规则远程教育、电子商务、电子政务等基础知识企业信息资源管理基础知识

6.3 知识产权基础知识

保护知识产权有关的法律、法规

7.计算机专业英语

具有工程师所要求的英语阅读水平理解本领域的英语术语

考试科目2:软件设计

1.外部设计

1.1 理解系统需求说明

1.2 准备进行系统开发

选择开发方法、准备开发环境、制订开发计划

1.3 设计系统功能

选择系统结构设计各子系统的功能和接口设计安全性策略、需求和实现方法制订详细的工作流和数据流

1.4 设计数据模型

设计ER模型及其他数据模型

1.5 编写外部设计文档

系统配置图、各子系统关系图系统流程图、系统功能说明书输入输出规格说明、数据规格说明、用户手册框架设计系统测试要求

1.6 外部设计的评审

2.内部设计

2.1 设计软件结构

按构件分解,确定构件功能、规格以及构件之间的接口数据结构与算法设计采用中间件和工具

2.2 设计输入输出

2.3 设计物理数据

2.4 构件的创建和重用

创建构件、重用构件使用子程序库或类库

2.5 编写内部设计文档

构件划分图、构件间的接口、构件处理说明屏幕界面设计文档、报表设计文档、文件设计文档、数据库设计文档

2.6 内部设计的评审

3.数据库应用分析与设计

设计关系模式数据库语言(SQL)数据库访问

4.程序设计

4.1 模块划分

4.2 编写程序设计文档

4.3 程序设计评审

5.系统实施

5.1 配置计算机系统及环境

5.2 选择合适的程序设计语言

5.3 用C程序设计语言以及C++、Java中的任一种程序设计语言进行程序设计

5.4 系统测试

指导程序员进行模块测试,并进行验收准备系统集成测试环境和测试工具准备测试数据写出测试报告

6.软件工程应用

6.1 软件开发周期模型

6.2 需求分析

6.3 软件设计

软件设计的基本原则软件设计方法程序设计(结构化程序设计、面向对象程序设计)

6.4 软件测试的原则与方法

6.5 软件质量(软件质量特性、软件质量控制)

6.6 软件过程评估基本方法、软件能力成熟度评估基本方法

6.7 软件开发环境和开发工具

6.8 面向对象技术

面向构件技术统一建模语言(UML)软件过程改进模型和方法

6.9 网络环境软件技术

题型举例

考试科目1:计算机与软件工程知识

1.在计算机中,最适合进行数字加减运算的数字编码是(1),最适合表示浮点数阶码的数字编码是(2)

(1)A.原码 B.反码 C.补码 D.移码

(2)A.原码 B.反码 C.补码 D.移码

2.某计算机系统由下图所示的部件构成,假定每个部件的千小时可靠度都为R,则该系统的千小时可靠度为(3)

(3)A.R+2R/4 B.R+R2/4 C.R(1-(1-R)2) D.R(1-(1-R)2)2

3.指令系统中采用不同寻址方式的目的是(4)。

(4)A.提高从内存获取数据的速度 B.提高从外存获取数据的速度

C.降低操作码的译码难度D.扩大寻址空间并提高编程灵活性

4.用户A从CA获得用户B的数字证书,并利用(5)验证数字证书的真实性

(5)A.B的公钥 B.B的私钥 C.CA的公钥 D.CA的私钥

5.模块A直接访问模块B的内部数据,则模块A和模块B的耦合类型为(6)

(6)A.数据耦合 B.标记耦合 C.公共耦合 D.内容耦合

6.某软件公司研发的财务软件产品在行业中技术领先,具有很强的市场竞争优势。为确保其软件产品的技术领先及市场竞争优势,公司采取相应的保密措施,以防止软件技术秘密的外泄。并且,还为该软件产品冠以“用友”商标,但未进行商标注册。此情况下,公司仅享有该软件产品的(7)。

(7)A.软件著作权和专利权 B.商业秘密权和专利权

C.软件著作权和商业秘密权D.软件著作权和商标权

7.某进程有5个页面,页号为0~4,页面变换表如下所示。表中状态位等于0和1分别表示页面不在内存或在内存。若系统给该进程分配了3个存储块,当访问的页面3不在内存时,应该淘汰表中页号为(8)的页面。假定页面大小为4K,逻辑地址为十六进制2C25H,该地址经过变换后,其物理地址应为十六进制(9)。

(8)A.0 B.1 C.2 D.4

(9)A.2C25H B.4096H C.4C25H D.8C25H

8.假设某磁盘的每个磁道划分成9个物理块,每块存放1个逻辑记录。逻辑记录RO,R1,…,R8存放在同一个磁道上,记录的安排顺序如下表所示:

如果磁盘的旋转速度为27ms/周,磁头当前处在RO的开始处。若系统顺序处理这些记录,使用单缓冲区,每个记录处理时间为3ms,则处理这9个记录的最长时间为(10);若对信息存储进行优化分布后,处理9个记录的最少时间为(11)。

(10)A.54ms B.108ms C.222ms D.243ms

(11)A.27ms B.54ms C.108ms D.216ms

9.下图是一个软件项目的活动图,其中顶点表示项目里程碑,连接顶点的边表示活动,边的权重表示活动的持续时间,则里程碑(12)在关键路径上。活动GH的松弛时间是(13)。

(12)A.B B.E C.C D.K

(13)A.0 B.1 C.2 D.3

10.一个功能模块M1中的函数F1有一个参数需要接收指向整型的指针,但是在功能模块M2中调用F1时传递了一个整型值,在软件测试中,(14)最可能测出这一问题。

(14)A.Ml的单元测试B.M2的单元测试

C.Ml和M2的集成测试 D.确认测试

11.编译程序对C语言源程序进行语法分析时,可以确定(15)。

(15)A.变量是否定义(或声明) B.变量的值是否正确

C.循环语句的执行次数 D.循环条件是否正确

12.不同的对象收到同一消息可以产生完全不同的结果,这一现象叫作(16)。绑定是一个把过程调用和响应调用所需要执行的代码加以结合的过程。在一般的程序设计语言中,绑定在编译时进行,叫作(17);而(18)则在运行时进行,即一个给定的过程调用和执行代码的结合直到调用发生时才进行。

(16)A.继承 B.多态 C.动态绑定 D.静态绑定

(17)A.继承 B.多态 C.动态绑定 D.静态绑定

(18)A.继承 B.多态 C.动态绑定 D.静态绑定

13.在统一建模语言(UML)中,(19)用于描述系统与外部系统及用户之间的交互。

(19)A.类图 B.用例图 C.对象图 D.协作图

14.下列设计模式中,(20)模式既是类结构型模式又是对象结构型模式。此模式与(21)模式类似的特征是,都给另一个对象提供了一定程度上的间接性,都涉及从自身以外的一个接口向这个对象转发请求

(20)A.桥接(Bridge) B.适配器(Adapter) C.组成(Composite) D.装饰器(Decorator)

(21)A.桥接(Bridge) B.适配器(Adapter) C.组成(Composite) D.装饰器(Decorator)

15.(22)表示了系统与参与者之间的接口。在每个用例中,该对象从参与者处收集信息,并将之转换为一种被实体对象和控制对象使用的形式

(22)A.边界对象 B.可视化对象 C.抽象对象 D.实体对象

16.如下UML类图表示的是(23)设计模式。以下关于该设计模式的叙述中,错误的是(24)。

(23)A.工厂方法 B.策略 C.抽象工厂 D.观察者

(24)A.提供创建一系列相关或相互依赖的对象的接口,而无须指定这些对象所属的具体类

B.可应用于一个系统要由多个产品系列中的个来配置的时候

C.可应用于强调一系列相关产品对象的设计以便进行联合使用的时候

D.可应用于希望使用已经存在的类,但其接口不符合需求的时候

17.UML中有多种类型的图,其中,(25)对系统的使用方式进行分类,(26)显示了类及其相互关系(27)显示人或对象的活动,其方式类似于流程图,通信图显示在某种情况下对象之间发送的消息,(28)与通信图类似,但强调的是顺序而不是连接。

(25)A.用例图 B.顺序图 C.类图 D.活动图

(26)A.用例图 B.顺序图 C.类图 D.活动图

(27)A.用例图 B.顺序图 C.类图 D.活动图

(28)A.用例图 B.顺序图的C.类图 D.活动图

18.为了保证数据库中数据的安全可靠和正确有效,系统在进行事务处理时,对数据的插入、删除或修改的全部有关内容先写入(29);当系统正常运行时,按一定的时间间隔,把数据库缓冲区内容写入(30);当发生故障时根据现场数据内容及相关文件来恢复系统的状态

(29)A.索引文件 B.数据文件 C.日志文件 D.数据字典

(30)A.索引文件 B.数据文件 C.日志文件 D.数据字典

19.要使4个连续的C类网络汇聚成一个超网,则子网掩码应该为(31)。

(31)A.255.240.0.0 B.255.255.0.0 C.255.255.252.0 D.255.255.255.252

20.Ravi, like many project(32),had studied the waterfall model of softwaredevelopment as theprimary software life-cycle(33).He was allset to use it for an upcoming project, his first assignment. However, Ravifound that the waterfall model couldnot be used because the customer wanted thesoftware delivered in stages, something that implied that the system had to bedelivered and built in(34)and not as(35).

The situationin many other projects is not very different.The real world rarely presents aproblem in which a standard process, or the process used in a previous project,is the best choice. To be the most suitable, an existing process must be(36)to the new problem.

A developmentprocess, even after tailoring, generally cannot handle change requests.Toaccommodate change requests without losing control of the project, you mustsupplement the development process with a requirement change managementprocess.

(32)A.customersB.managers C.users D.administrators

(33)A.activityB.procedure C.processD.progress

(34)A.partsB.modules C.softwareD.a whole

(35)A.partsB.modules C.softwareD.a whole

(36)A.modifiedB.used C.suitedD.tailored

考试科目2:软件设计

试题一(15分)

阅读以下说明和数据流图,回答问题1至问题4,将解答填入答题纸的对应栏内。

【说明】

某慕课教育平台欲添加在线作业批改系统,以实现高效的作业提交与批改,并进行统计。学生和讲师的基本信息已经初始化为数据库中的学生表和讲师表。系统的主要功能如下。

(1)提交作业。验证学生标识后,学生将电子作业通过在线的方式提交,并进行存储。系统给学生发送通知表明提交成功,通知中包含唯一编号,并通知讲师有作业提交

(2)下载未批改作业。验证讲师标识后,讲师从系统中下载学生提交的作业。下载的作业将显示在屏幕上。

(3)批改作业。讲师按格式为每个题目进行批改打分并进行整体评价

(4)上传批改后的作业。将批改后的作业(包括分数和评价)返回给系统,进行存储

(5)记录分数和评价。将批改后的作业的分数和评价记录在学生信息中,并通知学生作业已批改

(6)获取已批改作业。根据学生标识,给学生查看批改后的作业,包括提交的作业、分数和评价

(7)作业抽检。根据教务人员标识抽取批改后的作业样本,给出抽检意见,并形成抽检报告给讲师。

现采用结构化方法对在线作业批改系统进行分析与设计,获得如图1-1所示的上下文数据流图和图1-2所示的0层数据流图。

【问题1】(3分)

使用说明中的词语,给出图1-1中的实体E1~E3的名称

【问题2】(4分)

使用说明中的词语,给出图1-2中的数据存储D1~D4的名称

【问题3】(6分)

根据说明和图中术语,补充图1-2中缺失的数据流及其起点和终点

【问题4】(2分)

若发送给学生和讲师的通知是通过第三方Email系统进行的,则需要对图1-1和图1-2进行哪些修改?用100字以内文字加以说明

试题二(共15分)

阅读下列说明,回答问题1至问题3,将解答填入答题纸的对应栏内

【说明】

某集团公司在全国不同城市拥有多个大型超市,为有效管理各个超市的业务工作,需要构建一个超市信息管理系统

【需求分析结果】

(1)超市信息包括:超市名称、地址、经理和电话,其中超市名称唯一确定超市关系的每一个元组。每个超市只有一名经理

(2)超市设有计划部、财务部、销售部等多个部门,每个部门只有一名部门经理,有多名员工,每个员工只属于一个部门。部门信息包括:超市名称、部门名称、部门经理和联系电话。超市名称、部门名称唯一确定部门关系的每一个元组

(3)员工信息包括:员工号、姓名、超市名称、部门名称、职位、联系方式和工资。其中职位信息包括:经理、部门经理、业务员等。员工号唯一确定员工关系的每一个元组

(4)商品信息包括:商品号、商品名称、型号、单价和数量。商品号唯一确定商品关系的每一个元组。一名业务员可以负责超市内多种商品的配给种商品可以由多名业务员配给

【概念模型设计】

根据需求分析阶段收集的信息,设计的实体联系图和关系模式(不完整)如下:

【关系模式设计】

超市(超市名称,经理,地址,电话)

部门((a), 部门经理,联系电话)

员工((b), 姓名,联系方式,职位,工资)

商品( 商品号,商品名称,型号,单价,数量)

配给((c), 配给时间,配给数量,业务员)

【问题1】(4分)

根据问题描述,补充四个联系,完善图2-1的实体联系图。联系名可用联系1、联系2、联系3和联系4代替,联系的类型分为1:1、1:n和mn(或1:1、1:*和*:*)

【问题2】(7分)

(1)根据实体联系图,将关系模式中的空(a) ~(c)补充完整

(2)给出部门和配给关系模式的主键和外键

【问题3】(4分)

(1)超市关系的地址可以进一步分为邮编、省、市、街道,那么该属性是属于简单属性还是复合属性?请用100字以内文字说明

(2)假设超市需要增设一个经理的职位,那么超市与经理之间的联系类型应修改为(d),超市关系应修改为(e).

试题三(共15分)

阅读以下说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内

【说明】

某物品拍卖网站为参与者提供物品拍卖平台,组织拍卖过程,提供在线或线下交易服务。网站主要功能描述如下:

(1)拍卖参与者分为个人参与者和团体参与者两种。不同的团体也可以组成新的团体参与拍卖活动。网站记录每个参与者的名称

(2)一次拍卖中,参与者或者是买方,或者是卖方。

(3)一次拍卖只拍出来自一个卖方的一件拍卖品;多个买方可以出价;卖方接受其中一个出价作为成交价,拍卖过程结束。

(4)在拍卖结算阶段,买卖双方可以选择两种成交方式:线下成交,买卖双方在事先约定好的成交地点,当面完成物价款的支付和拍卖品的交付;在线成交,买方通过网上支付平台支付物价款,拍卖品由卖方通过快递邮寄给买方。

一次拍卖过程的基本事件流描述如下:

(1)卖方在网站上发起一次拍卖,并设置本次拍卖的起拍价

(2)确定拍卖标的以及拍卖标的保留价(若在拍卖时间结束时,所有出价均低于拍卖标的保留价,则本次拍卖失败)

(3)在网站上发布本次拍卖品的介绍

(4)买方参与拍卖,给出竞拍价。

(5)卖方选择接受一个竞拍价作为成交价,结束拍卖。

(6)系统记录拍卖成交价,进入拍卖结算阶段。

(7)卖方和买方协商拍卖品成交方式,并完成成交

现采用面向对象方法对系统进行分析与设计,得到如表3-1所示的类列表以及如图3-1所示的类图,类中关键属性与方法如表3-2所示

【问题1】(7分)

根据说明中的描述,给出图3-1中(1) ~(7)所对应的类名(类名使用表3-1中给出的序号)。

【问题2】(5分)

根据说明中的描述,确定表3-2中的属性/方法分别属于哪个类(类名、方法/属性名使用表3-1、3-2中给出的序号)。

【问题3】(3分)

在图3-1采用了何种设计模式?以100字以内文字说明采用这种设计模式的原因

试题四(共15分)

阅读下列说明和C代码,回答问题1至问题3,将解答写在答题纸的对应栏内

【说明】

计算一个整数数组a的最长递增子序列长度的方法描述如下:

假设数组a的长度为n,用数组b的元素b[i]记录以a[i] (0≤i≤n)为结尾元素的最长递增子序列的长度,则数组a的最长递增子序列的长度为;其中b[i]满足最优子结构,可递归定义为:

【C代码】

下面是算法的C语言实现

(1)常量和变量说明

a:长度为n的整数数组,待求其最长递增子序列

b:长度为n的数组,b[i]记录以a[i](0≤i<n)为结尾元素的最长递增子序列的长度,其中0≤i<n

len:最长递增子序列的长度

i,j:循环变量

tmp:临时变量

(2)C程序

#include<stdio.h>

Int maxL(int*b,int n){

inti, temp=0;

for(i=0;i<n; i++){

if(b[i]> temp)

temp=b[i];

}

returntemp;

}

int main(){

intn, a[100], b[100] , i, j, len;

scanf(%"d", &n);

for(i=0;i<n; i++){

scanf(%"d", &a[i]);

}

( 1);

for(i=0; i<n; i++){

for(j=0, len=0;(2); j++){

if((3)&&len<b[j] )

len=b[i];

}

(4);

}

printf("len:%d\n" , maxl(b,n));

printf("\n");

}

【问题1】(8分)

根据说明和C代码,填充C代码中的空(1)~(4)。

【问题2】(4分)

根据说明和C代码,算法采用了( 5 )设计策略,时间复杂度为( 6 )(用O符号表示)

【问题3】(3分)

已知数组a={3,10,5,15,6,8},根据说明和C代码,给出数组b的元素值

面向对象程序设计样题【从试题五、六中任选一题】

试题五(共15分)

阅读下列说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

某图书管理系统中管理着两种类型的文献:图书和论文。现在要求统计所有馆藏文献的总页码(假设图书馆中有一本540页的图书和两篇各25页的论文,那么馆藏文献的总页码就是590页)。采用Visitor(访问者)模式实现该要求到如图5-1所示的类图。

【C++代码】

class Libraryvisitor;

class LibraryItemInterface{

public:

(1);

classArticle:publicLibraryItemInterface{

private:

stringm_title; //论文名

stringm_author;//论文作者

intm_start_page;

intm_end_page;

Public:

Article(stringp_author,stringp_title,intp_start_page,intp_end_page);

int getNumber0fpages();

voidaccept(Libraryvisitor*visitor);

};

classBook: public LibraryItemInterface{

private:

stringm_title;//书名

stringm_author; //作者

stringm_pages; //页数

public:

Book(stringp_author,stringp_title,int p_pages);

intgetNumberOfpages();

voidaccept(libraryvisitor*visitor);

};

classLibraryvisitor{

public:

(2);

(3);

Virtual void printSum()=0;

};

classLibrarySumPrintVisitor:public

Libraryvisitor { //打印总页数

Private:

intsum;

public:

LibrarySumPrintVisitor();

voidvisit(Book*p_book);

voidvisit(Article*p_article);

void printSum();

}

//visitor.cpp

intArticle::getNumberofpages(){

returnm_end_page-m_start_page;

}

voidArticle:accept(Libraryvisitor*visitor)

{(4);}

Book:Book(stringp_author,stringp_title,intp_pages){

m_title=p_title;

m_author=p_author;

m_pages=p_pages;

}

int Book::getNumberOfPages(){ return m_pages; }

void Book:accept( Libraryvisitor*visitor)

{(5);} //其余代码省略

试题六(共15分)

阅读下列说明和Java代码,将应填入(n)处的字句写在答题纸的对应栏内。

【说明】

某图书管理系统中管理着两种类型的文献:图书和论文。现在要求统计所有馆藏文献的总页码(假设图书馆中有一本540页的图书和两篇各25页的论文,那么馆藏文献的总页码就是590页)。采用Visitor(访问者)模式实现该要求得到如图6-1所示的类图。

【Java 代码】

import java.util.*;

interface Libraryvisitor{

(1);

(2);

voidprintSum();

}

classLibrarySumPrintVisitorimplements

Libraryvisitor { //打印总页数

privateintsum=0;

public void visit(Book p_book){

sum=sum+p_book.getnumberOfpages();

}

publicvoidvisit(Articlep_article){

sum=sum+p_article.getnumberOfPages();

}

publicvoidprintsum() {

systemoutprintin("SUM="+sum);

}

}

interfaceLibraryItemInterface {

(3);

}

classArticleimplementsLibraryItemInterface{

privatestringm_title; //论文名

privatestringm_author; //论文作者

privateintm_start_page

privateIntm_end_page

publicArticle(Stringp_author,Stringp_title,intp_start_page,intp_end_page){

m_title=p_title;

m_author=p_author;

m_start_page=p_start_page;

m_end_page-p_end_page;

}

public int getNumberOfPages(){

return m_end_page-m_statr_page;

}

public void accept (LibraryVisitor visitor){

(4);

}

}

class Book implementsLibrarryItemInterface{

private String m_title; //书名

private String m_author; //书作者

private int m_pages; //页数

publicBook(String p_author, String p_title, int p_pages ){

m_title=p_title;

m_author=p_author;

m_pages=p_pages;

}

publicint getNumberOfPages(){

returnm_pages;

}

publicvoid accept(LibraryVisitor Visitor){

(5);

}

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。