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

admin2010-12-17  33

问题 阅读以下说明和Jrdva代码,将应填入(n)处的字句写在对应栏内。
   [说明]
   在销售系统中常常需要打印销售票据,有时需要在一般的票据基础上打印脚注。这样就需要动态地添加一些额外的职责。如下展示了Decorator(修饰)模式。SalesOrder对象使用一个SalesTicket对象打印销售票据。图6-1显示了各个类间的关系。以下是Java语言实现,能够正确编译通过。
   [图6-1]
   
   [Java代码]
   //Component.java文件
   public  (1)  class Component {
   abstract publ ic void prtTicket();
   }
   //salesTicket.java文件
   public class SalesTicket extends Component{
   public void prtTicket(){
   //Sales ticket printing code here
   System.out.printin("SalesTicket");
   }
   }
   //Decorator.java文件
   publ ic abstract class Decorator extends Component{
   public void prtTicket(){
   if(myComp!=null)myComp.prtTicket();
   }
   private  (2)  myComp;
   public Decorator(Component myC){
   myComp=myC;
   }
   }
   //Footer.java文件
   public class Footer extends Decorator {
   public Footer(Component myC){
     (3);
   }
   public void prtTicket(){
     (4);
   prtFooter();
   }
   publ ic void prtFooter(){
   //place printing footer code here
   System.out.println("Footer");
   }
   }
   //salesorder.java文件
   public class SalesOrder{
   void prtTicket(){
   Component myST;
   myST=new Footer(  (5)  );
   //Print Ticket with footers as needed
   myST.prtTicket();
   }
   }
(5)

选项

答案new SalesTicket()

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

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