阅读以下关于某订单管理系统的技术说明、部分UML类图及Java程序,将Java程序中(1)~(5)空缺处的语句
阅读以下关于某订单管理系统的技术说明、部分UML类图及Java程序,将Java程序中(1)~(5)空缺处的语句填写完整。
[说明]
某订单管理系统的部分UML类图如图5-16所示。
在图5-16中,Product表示产品,ProductList表示所销售产品的列表,Order表示产品订单,Orderltem表示产品订单中的一个条目,OrderList表示订单列表,SalesSystem提供订单管理系统的操作接口。各个类的部分属性和方法说明如表5-23所示。
可以使用类java.util.ArrayList<E>来实现对象的聚集关系,如图5-16中OrderList与Order之间的聚集关系。
for-each循环提供了一种遍历对象集合的简单方法。在for-each循环中,可以指定需要遍历的对象集合及用来接收集合中每个元素的变量,其语法如下:
for(用来接收集合中元素的变量:需要遍历的对象集合)
如果要使用for-each循环来遍历对象集合,那么包含该对象集合的类必须实现接口java.util.Iterable<T>。
Java程序7-1和Java程序7-2分别给出了类OrderList和方法statistic的Java代码。
这是一道要求读者掌握Java语言中的java.util.ArrayListE>和for…each循环的程序分析题。本题的解答思路如下。 仔细阅读Java程序7-1——类OrderList的Java代码可知,类OrderList中具有一个类型为 ArrayListOrder>的属性。结合图5-16订单管理系统的部分UML类图可知,类OrderList和Order之间具有聚集关系。由试题给出的关键信息“可以使用类java.util.ArrayListE>来实现对象的聚集关系”、“如果要使用for…each循环来遍历对象集合,那么包含该对象集合的类必须实现接口java.util.IterableT>”可以推理出,(1)空缺处所填写的内容是“implements IterableOrder>”。 在定义了ArrayListE>的类中,必须实现接口IteratorOrder>中的方法iteratorOrder>∷iterator(),因此(2)空缺处所填写的实现体应为:return this.orders.iterator(),或return orders.iterator()。 仔细阅读Java程序7-2——方法statistic的Java代码可以初步判断,要填写(3)~(5)空缺处,首先要将方法statistic的功能及实现流程分析清楚。而且(3)~(5)空缺处所填写的内容与for…each循环的使用有关;使用for…each循环时,关键是要确定所遍历的是哪一个对象集合。在类SalesSystem中已经具有两个对象集合,即属性catalog和sales。 方法statistic的功能是依次统计产品目录中每个产品的订购总量,并打印出每个产品的编号、说明、订购总量和订购金额。若要统计产品目录中每个产品的订购总量,需要对3个对象集合进行遍历;产品目录(ProductList)、订单列表(OrderList)及Order(需要对订单中的所有订单项进行查询,统计每个订单上所订购的产品的数量)。由此可以得出实现该方法的基本流程是:①从产品目录中取出一个产品→②在订单目录依次查询每张订单→③逐一查询某个订单中的所有订单项。 ①从产品目录中取出一个产品,这对应第1条for…each语句,此时被遍历的对象集合为ProductList。根据试题给出的for…each循环的语法——“for(用来接收集合中元素的变量:需要遍历的对象集合)”和(3)空歌处前半句的“Productproduct:”可以推断出,(3)空缺处应填写ProductList类的对象,而类SalesSystem中的catalog就是ProductList的实例。并且结合图5-16的UML类图可知,类ProductList和Product之间具有聚集关系。依照Java的程序设计规范,引用类的属性时,应使用“this.”属性名的形式。因此(3)空缺处的答案为this.catalog(或catalog)。 ②在订单目录依次查询每张订单,其对应于第2条for…each语句。根据第(3)空缺处的解题思路,可以确定出(4)空缺处应填写OrderList类的对象,即类SalesSystem的属性sales。因此(4)空缺处的答案为this.sales(或sales)。 ③逐一查询某个订单中的所有订单项,其对应于第3条for…each语句。由图5-16类图上可以看出,与类Order具有聚集关系的类是OrderItem。由此可以确定(5)空缺处应填写类OrderItem的对象。由于类SalesSystem中没有这种类型的属性,因此需要在这里定义一个临时对象。另外在if语句中出现了一个标识符item,但是在上下文中并没有出现对它的定义。由此可以推断item的定义应该在(5)空缺处提供。因此(5)空缺处的答案为OrderItem item。
将粘土上刻成一个个单字,烧硬后用于排版印刷。印完一版,单字可以卸下以备再用。此项技术最早记载于() 历史 2020-06-20 …
一根长为L(以厘米为单位)的粗细均匀的、可弯曲的细管,一端封闭,一端开口,处在大气中.大气的压强与 物理 2020-07-06 …
如图,已知点A(63,0),B(0,6),经过A、B的直线l以每秒1个单位的速度向下作匀速平移运动 其他 2020-07-22 …
将粘土上刻成一个个单字,烧硬后用于排版印刷。印完一版,单字可以卸下以备再用。此项技术最早记载于A. 历史 2020-07-25 …
英语翻译生物工业下游技术的发展,经过了由远古时期的简单发酵、第一代生物技术、第二代生物技术以及第三 英语 2020-07-25 …
S表示固体L表示液体g表示气体为什么在写气体摩尔体积的时候是L/MOL啊?还有上面这3个符号谁能举 其他 2020-08-02 …
某饮用水的理化指标:钙≥4.0mg/L、钾≥0.35mg/L、钠≥0.8mg/L、镁≥0.5mg/L 化学 2020-11-20 …
水的硬度单位如何换算?我发现不同的水质标准所采用的水的硬度单位各有不同,有的用“mg/L(以CaO3 物理 2020-12-19 …
1.以L,C,K开头的英文单词组成的句子2.以C,H,F开头的英文单词组成的句子3.以L,C,K,C 英语 2021-02-05 …
求分别以Z,Y,L这三个字母开头的三个单词组成的唯美英文句子.不一定非要三个单词,可以多一些其它的单 英语 2021-02-05 …