试题查看

【分析解答题】

【说明】
现要编写一个画矩形的程序,目前有两个画图程序:Dp1和Dp2,Dp1用函数DrAw_A_linE(x1, y1,x2,y2)画一条直线,DF2则用DrAwlinE(x1,x2,y1,y2)画一条直线。当实例画矩形时,确定使用Dp1还是Dp2。为了适应变化,包括“不同类型的形状”和“不同类型的画图程序”,将抽象部分与实现部分分离,使它们可以独立地变化。这里,“抽象部分”对应“形状”,“实现 部分”对应“画图”,与一般的接口(抽象方法)与具体实现不同。这种应用称为BriDgE(桥接)模式。图9-7显示了各个类间的关系。

这样,系统始终只处理3个对象:shApE对象、DrAwing对象、Dp1或Dp2对象。以下是C++语言实现,能够正确编译通过。
【C++代码】
ClAssDp1
puBliC:
stAtiC voiD DrAw_A_linE(DouBlE x1, DouBlE y1,DouBlE x2, DouBlE y2)
//省略具体实现
);
ClAssDp2
puBliC:
stAtiC voiD DrAwlinE(DouBlE x1, DouBlE x2,DouBlE y1, DouBlE y2)
//省略具体实现
;
ClAssDrAwing
puBliC:
(1) voiD DrAwlinE(DouBlE x1,DouBlE y1,DouBlE x2,DouBlE y2)=0;
;
ClAss v1DrAwing:puBliCDrAwing
puBliC:
voiD DrAwlinE(DouBlE x1, DouBlE y1,DouBlE x2, DouBlE y2)
Dp1::DrAw_A_linE(x1,y1,x2,y2);
;
ClAss v2DrAwing:puBliCDrAwing
puBliC:
voiD DrAwlinE(DouBlE x1, DouBlE y1, DouBlE x2, DouBlE y2)
(2) ;
;
ClAss shApE
privAtE:
(3) _Dp;
puBliC:
shApEDrAwing *Dp);
virtuAl voiD DrAw()=0;
voiD DrAwlinE(DouBlE x1, DouBlE y1, DouBlE x2, DouBlE y2);
;
shApE::shApEDrAwing *Dp)
_Dp = Dp;
voiD shApE::DrAwlinE(DouBlE x1, DouBlE y1, DouBlE x2, DouBlE y2)
//画一条直线
(4) ;
ClAss rECtAnglE: puBliC shApE
privAtE:
DouBlE _x1,_y1,_x2,_y2;
puBliC:
rECtAnglEDrAwing *Dp, DouBlE x1, DouBlE y1,
DouBlE x2, DouBlE y2);
voiD DrAw();
;
rECtAnglE::rECtAnglEDrAwing *Dp, DouBlE x1, DouBlE y1, DouBlE x2, DouBlE y2)
: (5)
_x1=x1;_y1=y1;_x2=x2;_y2=y2;
voiD rECtAnglE::DrAw()
//省略具体实现

查看答案解析

参考答案:

正在加载...

答案解析

正在加载...

根据网考网移动考试中心的统计,该试题:

0%的考友选择了A选项

0%的考友选择了B选项

0%的考友选择了C选项

0%的考友选择了D选项

你可能感兴趣的试题

【说明】中国教育科研网受理了许多用户(高校和研究机构)中请在指定IP上开设网络访【说明】中国教育科研网受理了许多用户(高校和研究机构)中请在指定IP上开设网络访【程序说明】定义一个多边形结构:structpolygon实现以下内容:(1)建阅读下列说明和C++代码,回答下列问题。[说明]某咖啡店卖咖啡时,可以根据顾客的[说明]背包问题就是有不同价值、不同重量的物品n件,求从这n件物品中选取一部分物[说明]背包问题就是有不同价值、不同重量的物品n件,求从这n件物品中选取一部分物