早教吧 育儿知识 作业答案 考试题库 百科 知识分享
早教吧考试题库频道 --> 计算机类考试 -->软考中级 -->

阅读下列说明、图以及Java程序。 [说明] 某订单管理系统的部分UML类图如下图所示。 上图中,Product

题目

阅读下列说明、图以及Java程序。

[说明]

某订单管理系统的部分UML类图如下图所示。

上图中,Product表示产品,ProductList表示所销售产品的列表,Order表示产品订单,Orderltem表示产品订单中的一个条目,OrderList表示订单列表,SalesSystem提供订单管理系统的操作接口。各个类的部分属性和方法说明如下表所示。

可以使用类java.util.ArrayList<E>米实现对象的聚集关系,如上图中OrderList与 Order之间的聚集关系。

for-each循环提供了一种遍历对象集合的简单方法。在for-each循环中,可以指定需要遍历的对象集合以及用来接收集合中每个元素的变量,其语法如下:

for(用来接收集合中元素的变量:需要遍历的对象集合)

如果要使用for-each循环来遍历对象集合,那么包含该对象集合的类必须实现接口 java.util.Iterable<T>。

Java程序7-1和Java程序7-2分别给出了类OrderList和方法statistic的Java代码

[Java程序7-1]

import java.util.*;

public class OrderList (1) {

private ArrayList<Order> orders;

public OrderList0 {

this.orders = new ArrayList<Order>();

}

public void addOrder(Order orde0

this.orders.add(order);

}

public Iterator<Order> iterator() {

return (2);

}

public iht getNumberOfOrders0 {

return this.orders.size();

}

}

[Java程序7-21]

import java.u61.*;

public class SalesSystem {

private ProductList catalog;

private OrderList sales;

private static PrintWriter stdOut = new PrintWriter(System.out, true);

public void statistic() {

for (Product product: (3)) {

iht number = 0;

for (Order order: (4)) {

for ((5): order) {

if (produet.equals(item.getProduct()))

number += item. getQuantity();

}

}

stdOut.println(product .getCode() +" "

+ product.getDescription() +" "

+ number +" "+ number * product.getPrice());

}

}

//其余的方法末列出

}

参考答案
正确答案:(1) implements IterableOrder> (2) this.orders.iteratorO或 orders.iterator() (3) this.catalog 或 catalog (4) this.sales 或 sales (5) OrderItem item
(1) implements IterableOrder> (2) this.orders.iteratorO,或 orders.iterator() (3) this.catalog, 或 catalog (4) this.sales, 或 sales (5) OrderItem item 解析:本题考查的是Java语言中的java.util.ArrayListE>和for-each循环。
java.util.ArrayListE>可以用来实现对象的聚集关系。for-each循环提供了一种遍历对象集合的简单方法。在for-each循环中,可以指定需要遍历的对象集合以及用来接收集合中每个元素的变量,其语法如下:
for(用来接收集合中元素的变量:需要遍历的对象集合)
如果要使用for-each循环来遍历对象集合,那么包含该对象集合的类必须实现接口 java.util.IterableT>。由此可以得到第(1)空的答案。因为类OrderList中具有一个类型为 ArrayListOrder>的属性,而且从类图也能看出类OrderList和Order之间具有聚集关系。因此第(1)空应填implementslterableOrder>。
在定义了AnayListE>的类中,必须实现接口IterableOrder>中的方法Iterator Order>∷iterator(),其实现体应为return this.orders.iterator()。因此第(2)空应填this. orders.iterator()。
空(3)~(5)考查的是for-each循环的使用。使用for-each循环时,关键是要确定所遍历的是哪一个对象集合。在类SalesSystem中已经具有两个对象集合,即属性catalog和 sales。要填写空(3)~(5),首先要将方法statistic的功能及实现流程分析清楚。
方法statistic的功能是依次统计产品目录中每个产品的订购总量,并打印出每个产品的编号、说明、订购总量和订购金额。若要统计产品目录中每个产品的订购总量,需要对3个对象集合进行遍历:产品目录(ProductList)、订单列表(OrderList)以及Order (需要对订单中的所有订单项进行查询,统计每个订单上所订购的产品的数量)。由此可以得出实现该方法的基本流程:
①从产品目录中取出一个产品,这对应第一条for-each语句,这时被遍历的对象集合为ProductList。根据for-each循环的语法,第(3)空应填写ProductList类的对象,而类 SalesSystem中的catalog就是ProductList的实例。按照Java的程序设计规范,引用类的属性时,应使用this.属性名的形式。因此第(3)空的答案为this.catalog。其实,从前半句 Product product也可以推断出第(3)空的答案,因为从类图上可以看到ProductList和 Product之间具有聚集关系。
②在订单目录一次查询每张订单,这里对应第一条for-each语句。根据第(3)空的解题思路,可以很容易地确定第(4)空应填OrderList类的对象,即类SalesSystem的属性 sales。因此第(4)空的答案为this.sales。
③逐一查询某个订单中的所有订单项,这里对应第三条for-each语句。由类图上可以看出,与类Order具有聚集关系的类是Orderltem。所以第(5)应填写类OrderItem的对象。类SalesSystem中没有这种类型的属性,在这里定义一个临时对象。另外在if语句中出现了一个标识符item,但是在上下文中并没有出现对它的定义。在这里可以推断item的定义应该在第(5)空提供。因此第(5)空的答案为OrderItem item。
看了阅读下列说明、图以及Java程...的网友还看了以下:

阅读下列程序说明和C代码,将应填入(n)处。【程序5说明】 著名的四色定理指出任何平面区域图均可用四 计算机类考试 2020-05-26 …

阅读下列说明、图以及Java程序。 [说明] 某订单管理系统的部分UML类图如下图所示。 上图中,P 计算机类考试 2020-05-26 …

图10-8为选课注册顺序图,请根据系统设计说明及图中信息,采用说明中的术语将选课注册顺序图补充完 计算机类考试 2020-05-26 …

装配图构成五要素是:一组图形、必要的( )、必要的技术条件、零件序号和明细表、标题栏。A.数字B.说 职业技能鉴定 2020-06-07 …

关于探究练习后面的中山陵的示意图根据课文说明的内容填写下列示意图,并思考作者是按怎样的顺序来说明中 其他 2020-06-25 …

如图为DNA测序仪显示的某真核生物DNA片段一条链的碱基排列顺序图片,其中图甲的碱基序列已经解读, 其他 2020-07-12 …

形成良好的社会秩序,我们要敢于对违反规则、扰乱秩序的行为提出批评,这说明A.维护社会秩序是文明的表现 政治 2020-12-01 …

架空线路排线顺序如下文,如何理解,最好能配图说明下TT系统供电时,其相序排列:面向负荷从左向右为L1 其他 2020-12-04 …

小明根据市自来水公司的居民用水收费标准,制定了如图所示的水费计算数值转换机示意图,根据数值转换机程序 数学 2021-01-05 …

小新和小明用扑克牌玩比大小游戏.如果小新按下面的顺序出牌,那么小明怎样出牌就能赢?在下面的表格里填上 数学 2021-01-15 …