四、阅读下列说明,回答问题1至问题4,将解答写在答题纸的对应栏内。 【说明】 某软件的积分计算模块每天定时根据用户发布的

来源:www.zcjsj8.com   发布时间2020-10-21
 

四、阅读下列说明,回答问题1至问题4,将解答写在答题纸的对应栏内。
【说明】
某软件的积分计算模块每天定时根据用户发布的文章数、文章阅读数来统计用户所获取的积分,用户分为普通用户和专家用户,两类用户具有不同的积分系数。
图4-1是该模块的类图,图中属性和操作前的“+”、“#”和“-”分别表示公有成员、保护成员和私有成员。

其中:
(1)类Expert重新实现了类User的方法calPoints();
(2)方法calPoints()根据每个用户每天的文章数(articleNum)、文章阅读数(readNum)来计算当天的积分;
(3)类System中的方法statPoints()中首先调用了该类的方法load(),获取本系统用户列表,然后调用了类User中的方法calPoints()。
现拟采用面向对象的方法进行测试。

问题:4.1   (4分)
(1)图4-1所示的类图中,类System和User之间是什么关系?
(2)类Expert重新实现了类User的方法calPoints(),这是面向对象的什么机制?

(1) 关联关系
(2) 多态

本题考査面向对象测试。
此类题目要求考生认真阅读题目对问题的描述,分析问题并结合面向对象的基本概念來回答。题目给出二个类,基类User、子类Expert以及与User有关联关系的System。
本问题考查基本概念,User以类属性的形式出现在System中,是一种关联关系。子类Expert重新实现父类User的方法,是面向对象的多态。



问题:4.2   (6分)
类Expert中的方法calPoints()和getPoints()是否需要重新测试?

calPoints()需要
getPoints()不需要

本问题考査基本概念,若子类的某方法继承了其基类,方法进行了修改,则需要进行测试;另一种情况是,继承的方法没有修改,用基类的方法,但是该方法调用了子类修改过的其他方法时,也需要对该方法进行测试。


问题:4.3   (10分)

(1)请结合题干说明中的描述,给出测试类User方法calPoints()时的测试序列。
(2)请给出图4-1中各个类的测试顺序。
(3)从面向对象多态特性考虑,测试类System中方法statPoints()时应注意什么?

(1) new User()—setArticleNum()—setReadNum()—calPoints()—getPoints()
(2) User—Expert一System
(3) 测试方法statPoints()时,要同时考虑类User和类Expert的calPoints()。

在测试方法calPoints()之前,需要先构造对象,设置文章数和文章阅读数,即要先调用构造函数new User(),然后setArticleNum()、setReadNum(),之后要打印结果看是否计算正确,需要调用getPoints()查看结果。
User和Expert是父类和子类的关系,User和System是关联关系,所以顺序是User-Expert-System。
本题干“类Expert重新实现了类User的方法calPoints()”是一个的多态机制。在这种情况下,需要同时考虑类User和类Expert的calPoints()。



  本文网址:http://www.zcjsj8.com/ceping/1207.html