阅读以下说明和Java代码,将应填入(n)处的字句写在答题纸对应栏内。 【说明】 在销售系统中常常需要打印销售票据,有时需要在一般的票据基础上打印脚注。这样就需要动态地添加一些额外的职责。如下展示了Decorator(修饰)模式。Salesorder对象使

admin2014-10-11  21

问题 阅读以下说明和Java代码,将应填入(n)处的字句写在答题纸对应栏内。
【说明】
在销售系统中常常需要打印销售票据,有时需要在一般的票据基础上打印脚注。这样就需要动态地添加一些额外的职责。如下展示了Decorator(修饰)模式。Salesorder对象使用一个SalesTicket对象打印销售票据。图6一1显示了各个类间的关系。以下是Java语言实现,能够正确编译通过。

【图6一1】
【Java代码】
//c。mponent.java文件
public    (1)    class component  {
abstract public void prtTicket();
}
//salesTicket.java文件
  Dublic  class  SalesTicket  extends Component  {
  publ ic void prtTicket(){
//Sales  ticket printing code here
System.out.println(“SalesTicket”);
}
}
//Decorator.j ava文件
Dubl ic  abstract  class Decorator extends C0mpOnent  {
public void prtTicket()  {
if(myComp  !=null)myComp.prtTicket();
priVate (2) mycomp;
public  Dec。rator(Component myC){
myComp=myC;
}
  }
//F00ter.java文件
Dublic class F00ter extends Decorator  {
publ ic  F00ter(C0mponent myC){
(3);
  }
  publ ic Void prtTicket(){
  (4);
    prtFooter();
    }
    publ ic void prtF00七er(){
    //place printing  footer code here
    System.out.println(“Footer”);
    }
    }
    //salesOrder.java文件
    publ ic class  SalesOrder  {
    void prtTicket(){
    Component myST;
    mysT=new Footer((5));
    //print Ticketwith footers as needed
    myST.prtTicket();
    }

选项

答案(1)abstract(2)Component(3)super(myC) (4)superprtTicket()(5)newSalesTicket()

解析 方法prtTicket0声明为abstract,即是抽象方法,故Component类应为抽象类,因此空(1)应填abstact。Decorator构造函数以及类图可知,Decorator包含一个Component对象引用,故空(2)应填Component。函数Footer(Component*myC)是F00ter类的构造函数,故空(3)处是对基类的构造,因此空(3)应填super(myC)。Footer类的prtTicket()方法是先打印“基本”票据,再打印脚注。因此空(4)是打印“基本”票据,Footer类是Decorator的子类,故应先调用基类的打印方法,在此应填super.prtTicket()。super是对基类的引用。参照Footer类的参照函数,空(5)应为一个Component对象指针,这里是要打印带脚注的票据,故此处应填newSalesq"icket()。
转载请注明原文地址:https://jikaoti.com/ti/0Ui7FFFM
0

相关试题推荐
最新回复(0)