【正确答案】
【答案解析】(1)Shape
(2)XCircle
(3)displayIt()
(4)Shape*
(5)getShapeInstance(type)
(6)ddete s
[要点解析] 这是一道考查用接口实现类的功能扩充的程序分析题。本试题的解答思路如下。
由于C++具有多继承性,因此在C++实现中,通常采用多继承来代替接口。
由题干关键信息“某绘图系统存在Point、Line和Square 3种图元,它们具有Shape接口……现要将Circle图元加入此绘图系统以实现功能扩充”可知,试题明确要求Circle具有Shape接口,因此(1)空缺处应填入“Shape”。
由于【C++代码5-1】既使用了XCircle,又遵循了Shape规定的接口,即重用XCinle类而不用从头开发一个新的Circle类。因此,凡是Circle类实现Shape的接口时,都应调用相应的XCircle类提供的方法。即(2)空缺处应填入“Xcircle”,(3)空缺处应填入“displayIt()”。
通过阅读【C++代码5-2】程序,由于(5)空缺处调用factory对象的方法,而类Factory只有一个方法为getShapeInstance,因此(5)空缺处应填入“getShapeInstance(type)”。其中,参数type为用户运行程序时指定的参数,表明需要生成哪种类型的对象。
同理,由于s是Shape*类型,因此(4)空缺处所在的语句“getShapeInstance(int type)”的返回值类型为Shape*,即(4)空缺处应填入“Shape*”。
由于程序退出前需要释放指针s所占用的内存空间,因此(6)空缺处应填入“delete s”。