问答题


阅读下列说明和图,回答问题1至问题3。
【说明】
公司IT部门决定开发一个计算机管理系统以记录期刊的传阅情况。
期刊在公司内部传阅,员工可以要求加入传阅队列。图书室登记公司收到的期刊,交给名单中的第一名员工。员工应在3个工作日内完成阅读,员工阅读完毕后通知系统,系统提醒下一位阅读者取书,下一个员工必须确认已收到期刊。当传阅名单中“下一位”员工出差在外时将无法进行传阅,此时将期刊传给再下一位,而将该员工做标记,再次传递此书时优先考虑该员工。最后一位员工阅读完毕后,将期刊交还图书室以便共用。系统能在员工忘记传递期刊时发出提醒信息。系统详细记录期刊传阅情况,当员工阅读完后通知系统,系统记录该员工的员工号及日期,并在备注栏注明是传出;同样,当员工收到期刊后给系统收书确认,系统记录该员工的员工号及日期,并在备注栏注明是收到。
公司的员工都有一个唯一的员工号。公司订阅了多种期刊,为每一本期刊(有唯一期刊流水号)产生一份传阅名单,并详细记录传阅情况。员工的出差情况存储在系统主机中。
该系统采用面向对象方法开发,系统中的类及类之间的关系用UML类图表示,图9-4是该系统的类图的一部分,图9-5描述了成功传递期刊的序列图。



【问题3】
同一种期刊分不同的期,所以有多本同一种期刊。“传阅名单”只需每一种期刊一份,还是应该每本期刊一份为什么

【参考答案】

“传阅名单”应该每一本期刊一份,以便当员工出差时正确做标记,保证正确传递。[分析] “当传阅名单中‘下一位’员工出差在外......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)
热门 试题

问答题
【说明】现要编写一个画矩形的程序,目前有两个画图程序:DP1和DP2,DP1用函数draw_a_line(x1,y1,x2,y2)画一条直线,DP2则用drawline(x1,x2,y1,y2)画一条直线。当实例画矩形时,确定使用DP1还是DP2。为了适应变化,包括“不同类型的形状”和“不同类型的画图程序”,将抽象部分与实现部分分离,使它们可以独立地变化。这里,“抽象部分”对应“形状”,“实现部分”对应“画图”,与一般的接口(抽象方法)与具体实现不同。这种应用称为Bridge(桥接)模式。图9-6显示了各个类间的关系。这样,系统始终只处理3个对象:Shape对象、Drawing对象、DP1或DP2对象。以下是 Java语言实现,能够正确编译通过。【Java代码】 DP1.java文件public class DP1{static public void draw_a line(double x1,double y1,double x2,double y2){ 省略具体实现}} DP2.java文件public class DP2{static public void drawline(double x1,double y1,double x2,double y2){ 省略具体实现}} Drawing.java文件(1) public class Drawing{abstract public void drawLine(double x1, double y1, double x2, double y2);} V1Drawing.java文件public class V1Drawing extends Drawing{public void drawLine(double x1, double y1, double x2, double y2){DP1.draw_a_line(x1,y1,x2,y2);}} V2Drawing.java文件public class V2Drawing extends Drawing{public void drawLine(double x1,double y1,double x2, double y2)( 画一条直线(2) ;}} Shape.java文件abstract public class Shape{abstract public void draw();private (3) _dp;Shape(Drawing dp){_dp=dp;}protected void drawLine(double x1,double y1,double x2, double y2){(4) ;}} Rectangle.java文件public class Rectangle extends Shape{private double_x1,_x2,_y1,_y2;public Rectangle(Drawing dp,double x1,double y1,double x2,double y2){(5) ;_x1=x1;_x2=x2;_y1=y1;_y2=y2;}public void draw(){ 省略具体实现}}