[试题]

阅读以下说明和Java代码,回答问题

[说明]

对多个元素的聚合进行遍历访问时,需要依次推移元素,例如对数组通过递增下标的方式,数组下标功能抽象化、一般化的结果就称为迭代器(Iterator)。模式以下程序模拟将书籍(Book)放到书架(BookShelf)上并依次输出书名。这样就要涉及到遍历整个书架的过程。使用迭代器Iterator实现。图6-1显示了各个类间的关系。以下是JAVA语言实现,能够正确编译通过。

[图6-1]

[Java代码]

//Iterator. java文件

public interface Iterator {

public abstract boolean hasNext();

public abstract Object next();

}

//Aggregate. java文件

public interface Aggregate {

public abstract Iterator iterator();

}

//Book. java

public class Book {

//省略具体方法和属性

}

//BookshelfIterator. java文件

public class Bookshelf工terator (1) Iterator{

private BookShelf bookShelf;

private int index;

public BookshelfIterator(BookShelf bookShelf) {

this. bookShelf = bookShelf;

this. index = 0;

}

public boolean hasNext(){//判断是否还有下一个元素

if(index < bookShelf. getLength()){

return true;

}else{

return false;

}

}

public Object next()f//取得下一个元素

B.ook book = bookShelf. getBookAt(index);

index++;

return book;

}

}

//BookShelf. java

import java. util. Vector;

public class BookShelf {

private Vector books;

public BookShelf(int initialsize){

this. books = new Vector(initialsize);

}

public Book getBookAt(int index){

return(Book)books.get(index);

}

public int getLength(){

return books.size();

}

public Iterator iterator(){

return new BookShelfIterator( (2) );

}

}

//Main. java文件

public class Main {

public static void main(String args){

B.ookShelf bookShelf = new BookShelf(4);

//将书籍上架,省略代码

Iterator it = bookShelf. (3) ;

while( (4) ){//遍历书架,输出书名

B.ook book = (Book)it. (5) ;

System.out.printin(" "+book.getName());

}

}

}

参考答案与解析:

相关试题

阅读下列函数说明和C£«£«代码,回答问题[说明] 对多个元素的聚合进行遍历访问

[主观题]阅读下列函数说明和C++代码,回答问题[说明]对多个元素的聚合进行遍历访问时,需要依次推移元素,例如对数组通过递增下标的方式,数组下标功能抽象化、一般化的结果就称为迭代器(Iterator)。模式以下程序模拟将书籍(Book)放到书架(BookShelf)上并依次输出书名。这样就要涉及到遍历整个书架的过程。使用迭代器Iterator实现。图5-1显示了各个类间的关系。以下是C++语言实现,能够正确编译通过。[图5-1][C++代码]template (1) >class Iterator{

  • 查看答案
  • 阅读以下应用说明、图和Java代码,根据要求回答问题1至问题5。 (说明) St

    [试题]阅读以下应用说明、图和Java代码,根据要求回答问题1至问题5。(说明)Stack类是java. ntil包中专门用来实现栈的工具类。以下Java程序是一个不使用库函数而实现字符串反转的程序。例如,输入:123456,则输出:654321:输入:asdfeg,则输出:gefdsa。(Java程序)import java.applet.Applet;import java.awt.*;import java.awt.event.*;import java.util.*;public class Us

  • 查看答案
  • 阅读以下说明和Java代码,回答问题[说明] 在某些系统中,存在非常复杂的对象,

    [试题]阅读以下说明和Java代码,回答问题[说明]在某些系统中,存在非常复杂的对象,可以采用循序渐进的方式进行组合将小对象组合,成复杂的对象。以下实例展示了Builder(生成器)模式。该实例用来建立“文件”,文件内容包括:一个标题、一串字符以及一些有项目符号的项目。Builder类规定组成文件的方法,Director类利用这个方法产生一份具体的文件。图6-1显示了各个类间的关系。以下是Java语言实现,能够正确编译通过。[Java代码]//Builder. java文件public (1) class

  • 查看答案
  • 阅读以下说明和Java代码,回答问题[说明] 任何一种程序都是为了解决问题而撰写

    [主观题]阅读以下说明和Java代码,回答问题[说明]任何一种程序都是为了解决问题而撰写的,解决问题时需要实现一些特定的运算法则。在策略(Strategy)模式下,可以更换实现算法的部分而不留痕迹,切换整个算法,简化改为采用其他方法来解决同样问题。以下是一个“剪刀石头布”游戏。猜拳时的“策略”有2种方法:第一种是“猜赢后继续出同样的招式”(WinningStrategy),第二种是“从上一次出的招式种,以概率分配方式求出下一个招式的几率”(ProbStrategy)。程序中定义了Hand类表示猜拳时的“手

  • 查看答案
  • 阅读以下应用说明、图和C£«£«代码,根据要求回答问题1至问题3。 [说明] 已

    [主观题]阅读以下应用说明、图和C++代码,根据要求回答问题1至问题3。[说明]已知以下C++程序运行时的输出结果如下。1:11:11:1[C++程序]01 include <iostream>02 using namespace std;03 class Stock{04 protect:05 (1) { };06 Stock(int n, int pr=1) {07 shares = n; share_val=pr;08 };09 void ~Stock() { };10 public:11 //成员

  • 查看答案
  • 阅读以下技术说明和程序代码,根据要求回答问题。 [说明] 某公司用ASP£«SQ

    [主观题]阅读以下技术说明和程序代码,根据要求回答问题。[说明]某公司用ASP+SQL Server开发的电子商务网站系统,提供了商品查询、网上购物车、订单管理、后台商品管理和支付等功能。图6~11是用ASP实现的电子商务网站的主页。系统的数据库名为 shangwu,所在服务器IP地址为211.54.32.21,其中,user表用于存放注册用户名和密码,结构如表 6-19所示。设计该电子商务网站时,某页面框架代码如下。该网页代码中定义了(1)个框架。

  • 查看答案
  • 阅读以下说明和C语言代码,回答问题1至问题4,将解答填入答题纸的对应栏内。[说明

    [试题]阅读以下说明和C语言代码,回答问题1至问题4,将解答填入答题纸的对应栏内。[说明]有两个任务(编号分别为0和1)需要访问同一个共享资源,为了解决竞争条件(race condition)的问题,需要实现一种互斥机制,使得在任何时刻只能有一个任务访问该共享资源。代码一给出了一种实现方法。[代码一]1: int flag[2]; /* flag 数组,初始化为FALSE */2: Enter_Critical_Section(int my_task_id, int other_task_id)3: {4

  • 查看答案
  • 阅读以下技术说明、Java源程序和运行测试部分,根据要求回答问题1和问题2。(说

    [试题]阅读以下技术说明、Java源程序和运行测试部分,根据要求回答问题1和问题2。(说明)1.HTTP◆ HTTP请求消息示例G.ET/index,htmlHTTP/1.1A.ccept:image/gif,image/jpeg,*/*A.ccept-Language:zh-chA.ccept-encoding:gzip,deflateUser-Agent:Mozilla/4.0(compatible: MSIE6.0;Windows 2003)H.ost:localhost:8080C.onnecti

  • 查看答案
  • 阅读以下说明,回答问题1和问题2。(说明) 用Authorware制作课件,制作

    [试题]阅读以下说明,回答问题1和问题2。(说明)用Authorware制作课件,制作者不需要掌握太多的编程技巧,只需要将软件提供的图标拖放到流程线上,然后将教学素材添加到图标中,再利用图标设置画面的控制页面的跳转和内容的交互等,就可以制作出能包含文字、声音、图像、动画等多种媒体的CAI课件来。但是,Authorware的文本排版能力和文本编辑能力等都比较欠缺,这影响了课件画面的美观。简述多媒体课件的优势。

  • 查看答案
  • 阅读以下说明和x86汇编语言代码,根据要求回答问题1至问题3。(说明) 在某嵌入

    [试题]阅读以下说明和x86汇编语言代码,根据要求回答问题1至问题3。(说明)在某嵌入式安全监测系统中,对某任务的加工操作需通过数据采集(Collect_task)、计算(Calculate_task)这两个不同的程序段来完成,并且执行程序段Collect_task和Calculate _task的顺序及次数有如下约定:C.ollect_task(2次)→Calculate_task(1次)→Collect_task(5次)→Calculate_task(4次)→Collect_task(2次)→Calc

  • 查看答案
  • 阅读以下说明和Java代码,回答问题[说明] 对多个元素的聚合进行遍历访问时,需