欢迎来到麦多课文档分享! | 帮助中心 海量文档,免费浏览,给你所需,享你所想!
麦多课文档分享
全部分类
  • 标准规范>
  • 教学课件>
  • 考试资料>
  • 办公文档>
  • 学术论文>
  • 行业资料>
  • 易语言源码>
  • ImageVerifierCode 换一换
    首页 麦多课文档分享 > 资源分类 > DOC文档下载
    分享到微信 分享到微博 分享到QQ空间

    [计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷53及答案与解析.doc

    • 资源ID:507222       资源大小:305KB        全文页数:17页
    • 资源格式: DOC        下载积分:2000积分
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    二维码
    微信扫一扫登录
    下载资源需要2000积分(如需开发票,请勿充值!)
    邮箱/手机:
    温馨提示:
    如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如需开发票,请勿充值!如填写123,账号就是123,密码也是123。
    支付方式: 支付宝扫码支付    微信扫码支付   
    验证码:   换一换

    加入VIP,交流精品资源
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    [计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷53及答案与解析.doc

    1、软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷 53及答案与解析 一、必答题(共 4道大题,每道大题 15分) 1 阅读下列说明,回答问题 1问题 4。【说明】 某超市的销售业务由一个销售业务管理系统进行管理,该系统每完成一次交易都需要提供顾客发票,其格式见表 6所示。 对于这样一个销售业务管理系统,分别给出了以下两种关系数据库的设计 (下划线表示主关键字 ) 设计一: 顾客 Customer(顾客代码 Cno,姓名 name,住址 address,联系电话 phone) 收银员 Salesman(收银员代码 Sno,身份证号 idno,姓名 name,住址 address,联系电

    2、话 phone) 商品 Merchandise(商品代码 Mno,商品名称 Mname,价格 price) 发票 Invoice(发票号码 Ino,交易日期 Idate,顾客代码 Cno,收银员代码 Sno,商品代码 Mno,单价 unitpfice,数量 amount) 设计二: 顾客 Customer(顾客代码 Cno,姓名 name,住址 address,联系电话 phone) 收银员 Salesman(收银员代码 Sno,身份证号 idno,姓名 name,住址 address,联 系电话 phone) 商品Memhandise(商品代码 Mno,商品名称 Mname,价格 price

    3、) 发票 Ivoice(发票号码Ino,交易日期 Idate,顾客代码 Cno,收银员代码 Sno) 发票明细 Invoicedetail(发票号码 Ino,商品代码 Mno,单价 unitprice,数量 amount) 1 设计一的关系模式 Invoice最高满足第几范式 ?为什么 ?设计一和设计二哪个更加合理 ?为什么 ? 2 根据设计二中关系模式,以下 SQL语句是用于 “建立 2005年 1月期间每张发票的发票号,交易日期,交易 商品件数和交易总金额的视图 ”的不完整语句,请填补其中的空缺。 CREATE VIEW Invoice -total(1) SELECT Invoice.

    4、ino, ldate,(2), (3) FROM Invoice, lnvoicedetail WHERE(4)AND ldate BETWEEN 2005-01-01AND 2005-01-31 GROUPBY(5); 3 根据设计二中关系模式,以下 SQL语句是用于 “查询从未售出的商品信息 ”的不完整语句,请填 补其中的空缺。 SELECT Mno, Mname, price FROM Merchandise(1) WHERE(2) (SELECT(3) FROM lnvoicedetail WHERE A. Mno=lnvoicedetail. Mno); 4 设计二中关系 Merch

    5、andise中由属性 price表示商品价格,关系 lnvoicedetail中的属性 unitprice也表示商品价格。两个是否有必要同时存在 ?为什么 ? 5 阅读以下说明和流程图,回答问题 1至问题 3, 将答案写在对应栏内。 【说明】 流程图描述了某高校图书订购与编目系统的处理流程。全校的图书典藏在校图书馆和各系的资料室中。学校每年分若干批向出版单位订购图书,同一批订购的图书将陆续邮寄到学校。出版单位在寄出图书的同时附上到书清单和发票,发票上仅给出一份到书清单中书的总册数和总金额。学校收到图书和发票后,先参照订购单验收,然后进行编目,并把有关信息存放在书种文件、书名文件、作者文件和复本

    6、文件中,以供读者检索。 书种文件记录了每种书的有关信息。所谓一种书是指同一作者、同一书名、同一出版单位和同一出版年份出版的书 。例如, 2004年张明在科技出版社出版了软件工程 (印数 8000册 )和数据库基础 (印数 5000册 ),则张明在 2004年出版了两种书。在全校的藏书中,如果一种书只有一册,则该书的信息存放在书种文件中:如果一种书有多册,则其中一册书的信息存放在书种文件中,其余的书作为复本将信息存放在复本文件中。复本文件的结构与书种文件的结构相同,每种书都有一个书号,书号唯一地标识了一种书。在书库中,每册书有一个登录号,登录号唯一地标识了一册书。此外,为了图书检索的方便,将图书

    7、按学科分类,分类号用来标识不同的学科领域。 各 类单据和文件的结构如下所示。 订购单:订购批号、书名、作者名、出版单位、出版年份、单价、订购册数、订购部门代码、订购日期。 到书清单:订购批号、书名、作者名、出版单位、出版年份、单价、册数。 发票:订购批号、发票号、总册数、总金额。 书种文件:分类号、登录号、书名代码、作者代码、出版单位、出版年份、单价、复本标志、典藏部门代码、借出标志。 其中,复本标志用来指示该种书在书库中有没有复本:对于书名相同的若干种书,书名代码是相同的。 书名文件:书名代码、书名。 作者文件:作者代码、作者名。 【问题 1】 指出验收 文件至少应由哪些数据项组成。 【问题

    8、 2】 由于处理 5和处理 6的分类,可能导致分类后的文件中一张发票无法找到与它对应的那些书,从而当一组发票的金额之和与一组到书清单中的书价之和不等时,无法知道是哪一张发票和哪一份清单不一致。如果仍使用原流程图,那么当到书清单文件的结构做何改动后,能找出不一致的发票和相应的书目。 【问题 3】 若在书种文件中增加数据项 “书号 ”,则如何重新设计复本文件的结构,使数据冗余最小。 5 阅读以下说明和程序流程图,将应填入 (n) 处的字句写在对应栏内。 说明 假定用一个整型数组 表示一个长整数,数组的每个元素存储长整数的一位数字,则实际的长整数 m表示为: m=ak10k-2+ak-110k-3+

    9、a310+a2 其中 a1保存该长整数的位数, a0保存该长整数的符号: 0表示正数、 1表示负数。注:数组下标从 0开始。 流程图 (图 4-1)用于计算长整数的加 (减 )法。运算时先决定符号,再进行绝对值运算。对于绝对值相减情况,总是绝对值较大的减去绝对值较小的,以避免出现不够减情况。注,此处不考虑溢出情况,即数组足够大。这样在程序中引进两个指针 pA和 pB,分别指向绝对 值较大者和较小者。而对绝对值相加 ,情况,让pA指向 LA, pB指向 LB,不区分绝对值大小。 pApB可用通式 pA+flag*pB来计算, flag为 +1时即对应 pA+pB, flag为 -1时即对应 pA

    10、-pB。需特别注意的是,对于相减,不够减时要进行借位,而当最高位借位后正好为 0时,结果的总位数应减1;对于加法,有最高进位时,结果的总位数应加 1。 流程图中涉及的函数说明如下: (1)cmp(int *LA, int *LB)函数,用于比较长整数 LA 与 LB 的绝对值大小,若 LA绝对值大于 LB绝对值则返回正值, LA 绝对值 小于 LB绝对值返回负值,相等则返回 0。 (2)max(int A, int B)函数,用于返回整数 A与 B中较大数。 另外,对流程图中的写法进行约定: (1)“: =”表示赋值,如 “flag: =LA0+LB0”表示将“LA0+LB0”的结果赋给 fl

    11、ag,相当于 C中的赋值语句: “flag=LA0+LB0; ”;(2)“: ”表示比较运算,如 “flag: 1”表示 flag与 1比较。 6 (1) 7 (2) 8 (3) 9 (4) 10 (5) 10 阅读下列说明和 Java代码, 将应填入 (n) 处的字句写在对应栏内。 说明 某饭店在不同的时段提供多种不同的餐饮,其菜单的结构图如图 6-1所示。现在采用组合 (Composition)模式来构造该饭店的菜单,使得饭店可以方便地在其中增加新的餐饮形式,得到如图 6-2所示的类图。其中 MenuComponent为抽象类,定义了添加 (add)新菜单和打印饭店所有菜单信息 (prin

    12、t)的方法接口。类 Menu表示饭店提供的每种餐饮形式的菜单,如煎饼屋菜单、咖啡屋菜单等。每种菜单中都可以添加子菜单,例如图 6-1中的甜点菜单。类 MenuItem表 示菜单中的菜式。Java代码 import Java.util.*; (1) MenuComponent protected String name; (2) ;/添加新菜单 public abstract void print(); /打印菜单信息 public String getName()return name; class MenuItem extends MenuComponent private double p

    13、rice; public Menultem(String name, double price) this.name=name; this.price=price; public double getPrice() return price; public void add(MenuComponent menuComponent)return;/添加新菜单 public void print() System.out.print(“+getName(); System.out.println(“,“+getPrice(); class Menu extends MenuComponent pr

    14、ivate List MenuComponentmenuComponents=new ArrayList MenuComponent (); public Menu(String name)this.name=name; public void add(MenuComponent menuComponent) /添加新菜单 menuComponents. (3) ; publiC void print() System.out.print(“n“+getName(); System.out.println(“,“+“-“); Iterator iterator=menuComponents.i

    15、terator(); while(iterator.hasNext() MenuComponent menuC0mponent=(MenuComponent)iterator.next(); (4) ; Class MenuTestDrive public static void main(String args) MenuComponent allMenus=new Menu(“ALL MENUS“); MenuComponent dinerMenu=new Menu(“DINER MENU“); / 创建更多的 Menu对象,此处代码省略 allMenus. add(dinerMenu);

    16、 /将dinerMenu添加到餐厅菜单中 / 为餐厅增加更多的菜单,此处代码省略 (5) ; /打印饭店所有菜单的信息 11 (1) 12 (2) 13 (3) 14 (4) 15 (5) 二、选答题(共 3道大题,每道大题 15分) 从下列 3道试题中任选 1道解答,如果解答的试题数超过 1道,则仅题号小的 1道题解答有效。 16 阅读以下说明和 C+代码,将应填入 (n)处的字句写在对应栏内。 【说明】 以下 C+程序的功能是计算三角形、矩形和正方形的面积并输出。程序由 4个类组成:类 Triangle、 Rectangle和 Square分别表示三角形、矩形和正方形:抽象类Figure提

    17、供了一个纯虚函数 getAxea(),作为计算上述 3种图形面积 的通用接口。 【 C+代码】 #include iostream #include cmath using namespace std; class Figure public: virtual double getArea()=0;/纯虚函数 ; class Rectangle : (1) protected: double height; double width; public: Rectangle() Rectangle(double height, double width) this- height=height;

    18、this- width=width; double getArea() return (2); ; class Square: (3) public: Square(double width) (4); ; class Triangle: (5) private: double la,lb,lc; public: Triangle(double la,double lb,double lc) this- la=la;this- 1b=1b;this- lc=lc; double getArea() double s=(la+lb+lc)/2.0; return sqrt(s*(s-la)*(s

    19、-lb)*(s-lc); int main() Figure *figures3=new Triangle(2,3,3),new Rectangle(5,8), new Square(5); for(int i=0;i 3;i+) cout “figures“ i “area=“ (figuresi)- getArea() endl; return 0; 17 阅读下列说明和 Java代码,将应填入 (n) 处的字句写在答题纸的对应栏内。【说明】现欲构造一文件目录树,采用组合 (Composite)设计模式来设计,得到的类图如 68所示: 【 Java代码】 import JavA util

    20、ArrayList; import JavA util List; (1)class AbstractFileprotected String name; public void printName()System out println(name); public abstract boolean addChild(AbstractFile file); public abstract boolean removeChild(AbstractFile file); public abstract ListgetChildren ; class File extends AbstractFil

    21、epublic File(String name)(this name=name; public boolean addChild(AbstractFile file)return false; public boolean removeChild(AbstractFile file)return false; public ListgetChildren()return (2) ; )clasS Folder extends AbstractFileprivate ListchildList; public Folder(String name)thiS name=name; this ch

    22、ildList=new ArrayList; public boolean addChild(AbstractFile file)return childList add(file); public boolean removeChild(AbstractFile file)return childList remove(file); public (3)getChildren()return (4) ; )public class Clientpublic static void main(Stringargs)构造一个树形的文件目录 结构AbstractFile rootFolder=ne

    23、w Folder(“C: ”); AbstractFile compositeFolder=new Folder(”composite”); AbstractFile windowsFolder=new Folder(”windows”);AbstractFile file=new File(”TestComposite java”); rootFOlder addChild (compositeFolder); rootFolder addChiid(windowsFolder);compositeFolder addChild(file);打印目录文件树printTree(rootFold

    24、er); private static void printTree(AbstractFile ifile)ifile PrIntName(); Listchildren: ifile getChildren ();if(chiidren=null)return; for(AbstractFile file: children)(5) ; 该程序运行后输出结果为: C: compositeTestComposite javaWindows 18 读下列说明和 Java代码,将应填入 (n)处的字句写在对应栏内。 【说明】 已知某类库开发商捉供了一套类库,类库中定义了 Application类和

    25、 Document类,它们之间的关系如下图所示,其中, Application类表示应用程序自身,而 Document类则表示应用程序打开的文档。 Application类负责打开一个已有的以外部形式存储的文档,如一个文件,一旦从该文件中读出信息后,它就由一个 Document对象表示。 当开发一个具体的应用程序时,开发者需要分别创建自己的 Application和 Document子类,例如上图中的类 MyApplication和类 MyDocument,并分别实现 Application和 Document类中的某些方法。 已知 Application类中的 openDocument方法采

    26、用了模板方法 (Template Method)设计模式,该方法定义了打开文档的每一个主要步骤,如下所示: 1首先检查文档是否能够被打开,若不能打开,则给出出错信息并返回; 2创建文档对象; 3通过文档对象打开 文档; 4通过文档对象读取文档信息; 5将文档对象加入到 Application的文档对象集合中。【 Java代码】 abstract class Document public void save()/*存储文档数据,此处代码省略 */ ) public void open(String docName) /*打开文档,此处代码省略 */) public void close() /

    27、*关闭文档,此处代码省略 */) public abstract void read(String docName); ; abstract class Appplication private Vector (1) docs; /*文档对象集合 */ public boolean canOpenDocument(String docName) /*判断是否可以打开指定文档,返回真值时表示可以打开, 返回假值表示不可打开,此处代码省略 */ public void addDocument(Document aDocument) /*将文档对象 添加到文档对象集合中 */ docs add(2)

    28、; public abstract Document doCreateDocument(); /*创建一个文档对象 */ public void openDocument(String docName)/*打开文档 */ if (3) System out println(“文档无法打开 !”); return; (4) adoc (5); (6); (7); (8); ; 软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷 53答案与解析 一、必答题(共 4道大题,每道大题 15分) 1 【正确答案】 设计一中 Invoice最高满足第一范式。 根据题意可得出以下函数依赖: InoS

    29、no , Cno, Idate 而关系 Invoice的主码是 Ino和 Mno。非主属性 Sno、 Cno和 Idate并非完全依赖于主码,因此关系 Invoice不满足第二范式,最高满足第一 范式。 设计二更加合理。因为设计二解决了设计一中由于非主属性不完全依赖于主码而造成的数据冗余等问题。 2 【正确答案】 (1)AS(2)SUM(amount)(3)SUM(unitpnce * amount) (4)Invoice. Ino=Invoicedetail. Ino(5)Invoice. Ino, Idate 或 Invoicedetail. Ino. Idate 3 【正确答案】 (1)

    30、A和 AS A (2)NOTEXISTS (3)* 4 【正确答案】 有必要。 Merchandise中由属性 price表示的是商品的当前价格,超市中的价格是有可能变动的,而关系 Invoicedetail中的属性 unitprice表示的是在开具发票时该商品的单价。 【试题解析】 设计一中根据题意可得出以下函数依赖: InoSno , Cno, ldate 而关系 Invoice的主码是 Ino和 Mno。非主属性 Sno、 Cno和 Idate并非完全依赖于主码,因此关系 Invoice不满足第二范式,最高满足第一范式。 关系 Invoice的设计的不合理在于该关系中将发票的单值属性 (

    31、发票号码 Ino ,交易日期 Idate,顾客代码 Cno,收银员代码 Sno)和多值属性 (商品代码 Mno ,单价 unitprice,数量 amount)混合在一个关系中,造成关系 Invoice的冗余异常、修改异常和删除异常。而设计二则将设计一中关系 Invoice分解,使得发票的单值属性和多值属性分开,避免了异常。因此,设计二明显比设计一要好。 问题 2是要建立 2005年 1月期间每张发票的发票号,交易日期,交易商品件数和交易总金额的视图。 首先建立视图的格式为 CREATE VIEW视图名 AS视图定 义,因此 (1)空的答案为 AS。 本查询是从 Invoice 和 Invoi

    32、cedetail 两个关系中查询,两关系的连接条件是两关系的 Ino相等,因此 (4)空的答案是 Invoice. Ino=Invoice- detail.Ino。 统计每张发票的信息需要按发票将数据分组,也就是按发票号 Ino分组,但因为查询关系 Invoice和 Invoicedetail都有属性 Ino。为了避免二义性,所以分组属性是 Invoice. Ino或者是 Invoieedetail. Ino。因为在包含聚合运算的 Select子句 中,只有在 Group By 子句中出现的属性才能在 SELECT 子句中以非聚合形式出现,而 SELECT 子句中有非聚合形式的属性 Idate

    33、出现,所以 (5)空的答案是 Invoice. Ino. Idate或 Invoicedetail. Ino. Idate。 需要查询的是每张发票的交易商品件数和交易总金额。交易商品件数是发票商品数量的总和,因此 (2)空的答案是 SUM(amount)。交易总金额是每条交易商品明细中每条记录商品金额的总和,每条记录商品金额是 unitprice*amount,因此 (3)空的答案是 SUM(unitprice*a- mount)。 问题 3是查询从未售出的商品信息。 SQL 语句中有两种格式为表或视图取别名: “表名 AS别名 ”或 “表名 别名 ”。由题中可以看出 Merchandise

    34、的别名是 A,因此填空 (1)的答案是 A或者 AS A。 要查询 “从未出售 ”的商品,也就是要查询的商品在交易记录中不存在,因此 (2)空的答案是 NOT EXISTS。 Merchandise 中由属性 price表示的是商品的当前价格,超市中的价格是有可能变动的,而关系 Invoicedetail 中的属性 unitprice表示的是在开具发票时该商品的单价。如果缺少其中任意一个,将导致商品单价不能进行调整,否则,当商品的单价发生变化时,销售历史中的商品价格就随着发生变化。 5 【正确答案】 问题 1 书名、作者名、出版单位、出版年份、单价、册数、订购部门代码 (或典藏部门代码 )。

    35、问题 2 在到书清单中增加 “发票号 ”。 问题 3 书号、登录号、典藏部门代码、借出标志。 【试题解析】 阅读流程图,可以看出验收文件是一个中间文件,既有数据来源,又要提供数据给其他文件,数据来源是订购单 文件、发票文件和到书清单文件,所以它的数据项应该由这 3个文件直接或间接处理产生。验收文件还要用于在处理 8更新书种文件、书名文件、作者文件和复本文件 4个文件,所以它的数据项还要保证处理 8能够更新这 4个文件,即这 4个文件没有,但更新又需要的数据项。 比照涉及到的各个文件的数据项组成,可以推出,验收文件至少应该包含书名、作者名、出版单位、出版年份、单价、册数、订购部门 /典藏部门代码

    36、等数据项。 问题 2内容很长,看起来很复杂,其实就是关于 “发票 ”对号的问题,所以,稍加分析,可以得出结论:在到书清单中增加 “发票号 ”。 由说明可知,每种书都有一个书号,书号唯一地标识了一种图书。一种图书的不同复本的著录信息是相同的,但登录号对于每一册图书是唯一的,典藏部门代码和借出标志也是针对某一册图书而有所不同的。所以,在书种文件中增加数据项“书号 ”后,复本文件中关于该种图书的出版发行信息及分类号,书名代码、作者代码等的数据项可以删除而不影响系统的功能。 6 【正确答案】 flag: =1 7 【正确答案】 carry: =0 8 【正确答案】 carry: 0 9 【正确答案】

    37、LCi+1: 0 10 【正确答案】 LCi+2: 0 【试题解析】 对这种题目,首先阅读说明,从功能上了解程序的结构,把握整体框架,再仔细对照阅读流程图,且勿先阅读流程图。 仔细阅读完说明,就知道整体框架了:先决定符号,再进行绝对值的加减,其中加减是用 flag 来标识的。对于加法,要注意进位,特别是最高进位;对于减法,要注意借位,亦即负进位,在此不用考虑不够减情况,但仍要特别注意最高借位,当最高位正好为 0时,要把高位所有的 0去掉。 空 (1)很容易就得到答案,应为 flag: =1。 空 (2)以下就开始 绝对值的加减了。此时 PA、 PB 已正确赋值。 在计算过程中,进位是需要特别注

    38、意的,从下面的流程可知, Carry表示的就是进位,需要进行初始化,故空 (2)应填 carrry: =0。 空 (3)以下是 i =N的情况,即对于计算结束,进行后期处理,此时就要考虑最高进位的问题。可得空 (3)应填 carry: 0,即判断最高进位是否为 O(对减法为负进位 )。 空 (4)是删除高位的 0,故应填 LCi+1: 0。 空 (5)处是具体进行加减法运算的。空 (5)处的条件主要是针对减法的,当不够减时需要借位, 故空 (5)应填 LCi+2: 0。 11 【正确答案】 abstract class或 public abstract class 12 【正确答案】 publ

    39、ic abstract void add(MenuComponent menuComponent) 或 abstract void add(MenuComponent menuComponent) 或 protected abstract void add(MenuComponent menuComponent) 13 【正确答案】 add(menuComponent) 14 【正确答案】 menuComponent.print() 15 【正确答案】 allMenus.print() 【试题解析】 Composite模式将对象组合成树形结构以表示 “整体一部分 ”的层次结构,其中的组合对象使

    40、得你可以组合基元对象以及其他的组合对象,从而形成任意复杂的结构。 Composite模式使得用户对单个对象和组合对象的使用具有一致性。 Composite模式的结构下图所示。其中: 类 Component为组合中的对象声明接口,在适当的情况 下,实现所有类共有接口的缺省行为,声明一个接口用于访问和管理 Component的子部件; 类 Leaf 在组合中表示叶节点对象,叶节点没有子节点;并在组合中定义图元对象的行为; 类 Composite定义有子部件的那些部件的行为,存储子部件,并在 Component接口中实现与子部件有关的操作; 类 Client通过 Component接口操纵组合部件的

    41、对象。 下列情况可以使用 Composite模式: (1)表示对象的整体 -部分层次结构; (2)希望用户忽略组合对象与单个对象的不同,用户将统一地使用组合结构中的所 有对象。 试题六将组合模式应用到饭店菜单的构造中。图 6-2中的类 MenuComponent 对应上图中的Component, MenuItem对应 Leaf, Menu 对应 Composite。在实现时,通常都会把 Component定义为抽象类。 在 Java中,用 abstract关键字限定的类即为抽象类,所以 (1)处应填入 abstract class。 (2)处根据注释,这里应该定义功能为 “添加新菜单 ”的成员

    42、函数。在子类 MenuItem和 Menu 中可以看到,都有 add 成员函数,说明予类中重置了父类中的成员函数。所以 (2)处应填入 public abstract void add(MenuComponent menucomponent)。 由图 6-2可以看出, Menu 中包含了MenuComponent 的对象集合。程序中用 Java中的 list来实现这个聚集关系,这样就可以利用 list中提供的各种方法了。 list中用于添加元素的方法是 add,所以(3)处应填入 add(menuComponent)。 (4)处出现在方法 print中,其功能是打印出所有菜单的信息。这里使用了

    43、 list中的迭代器类 iterator,遍历每个子菜单,并调用 子菜单中定义的 print方法打印该子菜单的信息。 (4)处应填入menuComponent.print()。 为了能够在 main 中打印出所有的菜单信息,必须使用表示菜单结构中最项层菜单的对象来调用 print,因此 (5)处应填入allMenus.print()。 二、选答题(共 3道大题,每道大题 15分) 从下列 3道试题中任选 1道解答,如果解答的试题数超过 1道,则仅题号小的 1道题解答有效。 16 【正确答案】 (1) public Figure (2) height *width (3) public Rect

    44、angle (4) height=this- width=width (5) public Figure 【试题解析】 根据题述 “抽象类 Figure提供了一个纯虚函数 getArea(),作为计算上述 3种图形面积的通用接口 ”,可知类 Rectangle均应继承自类 Figure,并实现其抽象方法 getArea。故空 (1)应填 public Figuare。 getArea方法是计算面积的,空 (2)是返回该类的代表的图形面积。类 Rectangle代表矩形,而矩形的面积的计算公式是长与宽的乘积,类 Rectangle 的成员变量height和 width 分别代表了长和宽,故空 (

    45、2)应填 height*width。 类 Square按理应该继承自 Figuare,但并未实现其抽象方法 getArea,若继承自Figure则不能被实例化,而题中 main 函数中已将其实例化,不符合题意,因此不能继承自 Figure。考虑到正方形其实就是长和宽相等的矩形,因此 Square可从Rectangle继承,故空 (3)应填 public Rectangle。这样,计算面积仍用 Rectangle的getArea方法,这就要求将 height和 width 正确赋值,题中已将这两个成员变量声明为 protected,因此这两个变量继承为子类的变量,故空 (4)应填 height=

    46、this-width=width。 空 (5)同空 (1),应填 public Figure。 17 【正确答案】 (1)Abstract(2)null(3)List(4)childList(5)printTree(file) 【试题解析】 Composite模式定义:将对象以树型结构组织起来,以达成 “部分 -整体 ”的层次结构,使得客户端对单个对象和组合对象的使用具有 一致性。Composite比较容易理解,想到 Composite就应该想到树型结构图。组合体内这些对象都有共同接口,当组合体一个对象的方法被调用执行时, Composite将遍历(Iterator)整个树形结构,寻找同样包含

    47、这个方法的对象并实现调用执行。AbstractFile为一个抽象文件类,其作用主要是实现对文件或者文件夹的抽象。文件类 File继承自 AbstractFile。 File(stringname)为 File类的一个属性,用于获取文件名称。 Add-child方法用来给一个目录增加子目录或文件。 Removechild 方法用于删除一个目录的子目录或文件。 Getchildren 方法用于获取一个目录或文件,所以返回值类型应该是一个列表形式的 AbstractFile,但文件本身不包括子目录,故返回 NUIJIJ。 Fold 类表示一个文件夹,属性 Folder用于获取文件夹名称,Getchi

    48、ldren 方法返回值应为 List型的 AbstractFile对象指针。 18 【正确答案】 (1)Document (2)aDocument (3)!canOpenDocument(docName) (4)Document (5)doCreateDocument() (6)adoc.open(docName) (7)adoc.read(docName) (8)addDocument(adoc) 【试题解析】 本题考查了 Java语言的应用能力和模板方法设计模式。空 (1)考查了 Java库中 Vector模板类的使用,由于 Vector模板类可以存储任意类型,在定义时需要指定其存储类型,根据后面的代码,能够加入到该文档集合对象的类型为文档类型,因此空 (1)处的类型应该为 Document。空 (2)处将文档对 象加入文档集合对象中。从空 (3)开始的代码属于图中 Application 类的 OpenDocument 方法,该方法是模板方法,因此,需根据题目给出的步骤一一对应填空。空 (3)处判断能否打开文档,需要调用父类自己的方法 canOpen- Document。


    注意事项

    本文([计算机类试卷]软件水平考试(中级)软件设计师下午(应用技术)试题模拟试卷53及答案与解析.doc)为本站会员(terrorscript155)主动上传,麦多课文档分享仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文档分享(点击联系客服),我们立即给予删除!




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
    备案/许可证编号:苏ICP备17064731号-1 

    收起
    展开