填空题

[说明]
在销售系统中常常需要打印销售票据,有时需要在一般的票据基础上打印脚注。这样就需要动态地添加一些额外的职责。如下展示了Decorator(修饰)模式。SalesOrder对象使用一个SalesTicket对象打印销售票据。显示了各个类间的关系。以下是Java语言实现,能够正确编译通过。


[Java代码]
//Component.java文件
public ______ class Component
abstract public void prtTicket();
//SalesTicket.java文件
public class SalesTicket extends Component
public void prtTicket()
//Sales ticket printing code here
System.out.println("SalesTicket");


//Decorator.java文件
public abstract class Decorator extends Component
public void prtTicket()
if(myComp != null)myComp.prtTicket();

private ______ myComp;
public Decorator(Component myC)
myComp = myC;


//Footer.java文件
public class Footer extends Decorator
public Footer(Component myC)
______;

public void prtTicket()
______;
prtFooter();

public void prtFooter()
//place printing footer code here
System.out.println("Footer");


//SalesOrder.java文件
public class SalesOrder
void prtTicket()
Component myST;
myST = new Footer(______);
//Print Ticket with footers as needed
myST.prtTicket();

【参考答案】

abstract
Component
super(myC)
super.prtTicket()
......

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

填空题
[说明] 函数combine(a,b,c)是计算两个整数的组合数。由于计算结果可能超出long整型的可表示范围,故采用数组方式存储,例如:k位长整数m用数组c[]存储结构如下:m=c[k]×10k-1+c[k-1]×10k-2+…+c[2]×10+c[1],利用c[0]存储长整数m的位数,即c[0]=k。数组的每个元素只存储长整数m的一位数字,长整数运算时,产生的中间结果的某位数字可能会大于9,这是就应该调用format将其归整,使数组中的每个元素始终只存储长整型的一位数字。 整数据a和b(a≥b)的组合为:,其中u1=a,u2=a-1,…,ub=a-b+1,d1=1,d2=2,…,db=b。为了计算上述分式,先从u1,u2,…,ub中去掉d1×d2×…×db的因子,得到新的u1,u2,…,ub,然后冉将它们相乘。 [函数] #define MAXN 100 int gcd(int a, int b) 求两个整数a和b的最大公因子 if(a < b) int c = a; a = b; b = c; for(int i = b; i >= 2; i--) if(______)return i; return 1; void format(int *a) 将长整型数纰归整 int i; for(i =1; i > a[0] ‖ a[i] >= 10; i++) if(i >= a[0]) ______; a[i+1] += a[i] 10; a[i] = a[i]%10; if(i > a[0]) ______; void combine(int a, int b, int *c) int i, j, k, x; int d[MAXN], u[MAXN]; k = 0; for(i =a; i >= a-b+1; i--)u[++k] = i; u[0] = b; for(i = 1; i <= b; i++)d[i] = i; for(i = i; i <= u[0]; i++) 从u各元素去掉d中整数的因子 for(j = i; j <= b; j++) x = gcd(u[i], d[j]); 计算最大公约数 u[i] = x; d[j] = x; ______; c[1] = 1;长整数C初始化 for(i = i; i <= u[0]; i++) 将u中各整数相乘,存于长整数C中 if(u[i] != 1) for(j = i; j <= c[0]; j++) e[j] =______; format (c); 将长整数c归整