阅读以下说明和C代码,将应填入(n)处的字句写在对应栏内。 【说明】 在一图像处理系统中,开发者定义了一个图像结构ImageCon,其中定义了图像应该具有的属性。当图像件的内容或状态发生变化时,与之相关联的ImageView结构的值都需要发生改

admin2009-05-15  36

问题 阅读以下说明和C代码,将应填入(n)处的字句写在对应栏内。
   【说明】
   在一图像处理系统中,开发者定义了一个图像结构ImageCon,其中定义了图像应该具有的属性。当图像件的内容或状态发生变化时,与之相关联的ImageView结构的值都需要发生改变。一个ImageCon结构能够关联一组ImageView结构。当ImageCon结构的内容或状态发生变化时,所有与之相关联的ImageView结构都将被更新,这种应用被称为观察者模式。以下代码采用C语言实现,能够正确编译通过。
   【C代码】
   #include  <stdio.h>
   #define OBS_MAXNUM 20/*一个ImageCon变量最多能够关联的ImageView变量的个数*/
   typedef void  (1)   (struc ImageCon *,struct ImageView *);
   struct ImageView{
       func update;    /*ImageView结构采用的更新函数*/
                        /*其他的结构字段省略*/
   };
   struct ImageCon{
         (2)  myObs[OBS_MAXNUM];
                             /*存储所有与ImageCon相关联的ImageView结构指针*/
       intindex;           /*与ImageCon结构变量相关联的ImageView结构变量的个数*/
   };
   void attach(struct ImageCon *IMG,struct ImageView *ob){
       /*关联Obersver结构ob与ImageCon结构IMG*/
       int loop=0;
       if(IMG→index>=OBS_MAXNUM||ob==NULL)return;
       for(loop=0;loop<IMG→index;loop++)
       if(IMG→myObs [loop]= =ob)return;
       IMG→myObs[IMG→index]=ob;
       IMG→index++;
   }
   void detach(struct ImageCon *IMG,struct ImageView *ob){
       /*解除IMG结构与ob结构间的关系*/
       int loop;
       if(ob= =NULL)return;
       for(loop=0;loop<IMG→index;loop++){
           if(IMG→myObs[loop]= =ob){
               if(loop<=IMG→index-2)
               IMG→myObs[loop]=IMG→myObs[ (3) ];
               IMG→myObs[IMG→index-1]=NULL;
               IMG→index- -;
               breack;
               }
           }
   }
   void updatel(struct ImageCon *IMG,struct ImageView *ob){
   /*更新ob结构的值,更新代码省略*/
   }
   void update2(struct ImageCon *IMG,struct ImageView *ob){
   /*更新ob结构的值,更新代码省略*/
   }
   void notifyObs(struct ImageCon *IMG){
       /*当IMG结构的值发生变化时,通知与之关联的所有ImageView结构变量*/
       int loop;
       for(loop=0;loop<IMG→index;loop++){
           (IMG→myObs[loop])→update  (4);
       }
   }
   void main(){
       struct ImageCon IMG;/*定义一ImageCon变量*/
       struct ImageView explorer1,explorer2;/*定义两个ImageView变量*/
       /*初始化与ImageCon变量相关的ImageView变量个数为0*/
       IMG.index=0;
       explorer1.update=updatel;/*设置explorerl变量的更新函数*/
       explorer2.update=update2;/*设置explorer2变量的更新函数*/
       attach(&IMG,&explorer1);/*关联explorer1与IMG对象*/
       attach(&IMG,&explorer1);/*关联explorer1与IMG对象*/
       /*其他代码省略*/
         (5);
       return;
   }

选项

答案(5)notifyObs(&img)

解析 通知与ImageCon相关的所有ImageView变量。
转载请注明原文地址:https://kaotiyun.com/show/WujZ777K
0

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