阅读以下说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。 【说明】 某绘图系统存在Point、Line、Square三种图元,它们具有Shape接口,图元的类图关系如图5-1所示。现要将Circle图元加入此绘图系统以实现功能扩充。已知

admin2006-03-15  49

问题 阅读以下说明和C++代码,将应填入(n)处的字句写在答题纸的对应栏内。
【说明】
   某绘图系统存在Point、Line、Square三种图元,它们具有Shape接口,图元的类图关系如图5-1所示。现要将Circle图元加入此绘图系统以实现功能扩充。已知某第三方库已经提供了XCircle类,且完全满足系统新增的Circle图元所需的功能,但XCircle不是由Shape派生而来,它提供的接口不能被系统直接使用。代码5-1既使用了XCircle又遵循了Shape规定的接口,既避免了从头,开发一个新的Circle类,又可以不修改绘图系统中已经定义的接口。代码5-2根据用户指定的参数生成特定的图元实例,并对之进行显示操作。
   绘图系统定义的接口与XCircle提供的显示接口及其功能如下表所示:

【代码5-1】
   class Circle:public   (1)  {
   pfivme:
          (2) m_circle;
   public:
        void display(){
              m_circle.  (3);
        }
   };
【代码5-2】
   class Factory{
   public:
          (4)   getShapeInstance (int type){  //生成特定类实例
           switch (type){
                 case 0:rcturn new Point;
                 Case l:return new Rectangle;
                  case 2: return new Line;
                  case 3: return new Circle;
                  default: return NULL;
         } void main (int argo, char *argv[]) {
     if (argc!=2) {
           cout << "error parameters !" << endl; return; inttype=atoi (argv[1]) ;
     Factory factory;
     Shape *s;
     s = factory. (5):
     if (s==NULL) {
           cout << "Error get the instance !" << endl;
           return;
    }
     s->display () ;
            (6);
     return;

选项

答案(1)Shape (2)XCircle (3)displayIt() (4)Shape* (5)getShapeInstance(type) (6)delete s

解析 题目中明确要求Circle具有Shape接口,所以,第1空应填上Shape。因为要重用 XCircle类而不用从头开发一个新的Circle类,所以,凡是Circle类实现Shape的接口时都应调用相应的XCircle类提供的方法。因此第2空应填上Xcircle,第3空应填上 displayIt()。阅读主程序,第5空调用factory对象的方法,而类Factory类只有一个方法为getShapeInstanee,所以第5空应填入getShapeInstance,参数为用户运行程序时指定的参数,程序中为type参数,表明需要生成哪一种类型的对象。同样,因为s是Shape*类型,所以,getShapeInstance(type)的返回值类型为shape*,因此第4空应填入Shape*;程序退出前需要释放指针s所占用的内存空间,所以第6空应填写delete s。
转载请注明原文地址:https://kaotiyun.com/show/7yDZ777K
0

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