【说明】下图是某商场购物系统的一个类图,图中属性和方法前的"+"、"#"和"- " 分别表示公有成员、保护成员和私有成员。其中:(1) 类Manager重新实现了类Customer的方法 calMoney( );(2) 方法calMoney( ),根据每位顾客的购买情况(buyNum)、浏览商品的情况(scanNum)计算商品的热度。(3)类Admin中的方法statMoney()中首先调用了该类的方法load( ),获取顾客列表,然后调用了类Customer中的方法calMoney( )。现拟采用面向对象的方法进行测试。 【问题1】(4分)图4-1 所示的类图中,类Manager和类Customer之间是什么关系?该关系对测试的影响是什么?【问题2】(6分)(1) 类Manager重新实现了类Customer的方法calMoney( ),这是面向对象的什么机制?是否需要重新测试该方法?(2) 类Manager中的方法getMoney ( )继承了其父类 Customer 的方法getMoney ( ),是否需要重新测试该方法?【问题3】(6分)(1)请结合题干中说明的描述,给出测试类Customer方法calMoney()时的测试序列;(2)请给出类图中各个类的测试顺序。【问题4】(4分)从面向对象多态特性考虑,测试方法statMoney( )时应注意什么?

【说明】下图是某商场购物系统的一个类图,图中属性和方法前的"+"、"#"和"- " 分别表示公有成员、保护成员和私有成员。其中:



(1) 类Manager重新实现了类Customer的方法 calMoney( );(2) 方法calMoney( ),根据每位顾客的购买情况(buyNum)、浏览商品的情况(scanNum)计算商品的热度。(3)类Admin中的方法statMoney()中首先调用了该类的方法load( ),获取顾客列表,然后调用了类Customer中的方法calMoney( )。现拟采用面向对象的方法进行测试。 【问题1】(4分)图4-1 所示的类图中,类Manager和类Customer之间是什么关系?该关系对测试的影响是什么?【问题2】(6分)(1) 类Manager重新实现了类Customer的方法calMoney( ),这是面向对象的什么机制?是否需要重新测试该方法?(2) 类Manager中的方法getMoney ( )继承了其父类 Customer 的方法getMoney ( ),是否需要重新测试该方法?
【问题3】(6分)(1)请结合题干中说明的描述,给出测试类Customer方法calMoney()时的测试序列;(2)请给出类图中各个类的测试顺序。【问题4】(4分)从面向对象多态特性考虑,测试方法statMoney( )时应注意什么?


参考解析

解析:问题1:答案:(1) 泛化关系;(2) 继承的成员函数是否需要测试;对父类的测试是否能用到子类上。问题2:答案:(1)、多态机制;需要重新测试,因为在子类中重新进行了定义,所以需要重新测试;(2)、不需要重新测试,因为子类继承了父类的方法,只要父类的该方法通过测试了即可。问题3:
(1) 测试序列:setBuyNum( )——setScanNum( )——calMoney( ) ——getMoney( ) ;(2)先测试Customer类,然后Manager类,最后测试Admin类。问题4:
只需要在原有的测试分析基础上增加对测试用例中输入数据的类型的考虑即可。先测试基类,然后再分别依据输入数据设计不同的测试用例。
【解析】
问题1:解析:
考察类图的泛化关系。泛化关系也就是继承关系,也称为“is-a-kind-of”关系,泛化关系用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类,泛化关系通常用带空心三角形的直线来表示。对泛化关系有三个要求:1、子类与父类应该完全一致,父类所具有的属性、操作,子类应该都有;2、子类中除了与父类一致的信息以外,还包括额外的信息;3、可以使用父类的实例的地方,也可以使用子类的实例;问题2:解析:
该题考察面向对象的多态机制和继承机制。多态就是在使用父类的引用调用方法的时候,不是使用父类中的方法,而是父类指向的对象的方法,这样就实现了多态。继承是指在一个类基础上定义一个新类,原有的类叫做父类,新生成的类叫子类,继承的过程是一个从一般到特殊的过程。 问题3:解析:
根据题干提示,方法calMoney( ),根据每位顾客的购买情况(buyNum)、浏览商品的情况(scanNum)计算商品的热度。类之间测试的先后关系可以参考各种关系的强弱顺序:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖。问题4:解析:
题干描述,方法statMoney()需要调用Customer中的calMoney()。而该方法在Customer和Manager中有不同的实现,因此需要同时考虑Customer和Manager中的calMoney()。

相关考题:

已知在A类中定义了方法fa,在B类中定义了属性b,在C类中定义了方法fc和属性c,A是B的父类,B是C的父类,则B类中的成员包括。() A、faB、bC、fcD、c

在公有派生的情况下,派生类中定义的成员函数只能访问原基类的A.公有成员和私有成员B.私有成员和保护成员C.公有成员和保护成员D.私有成员、保护成员和公有成员

根据图10-5所示的UML类图可知,类Car和类Boat中的move()方法(59)。A.引用了类Transport的move()方法B.重置了类Transport的move()方法C.是类Transport的move()方法的聚集D.是类Transport的move()方法的泛化

当派生类从基类私有继承时,基类中的公有成员和保护成员成为派生类的( )。 A. 保护成员和私有成员B.公有成员C.私有成员D.保护成员

根据如图2-7所示的UML类图可知,类Car和类Boat中的move()方法(45)。A.引用了类Transport的move()方法B.重置了类Transport的move()方法C.是类Transport的move()方法的聚集D.是类Transport的move()方法的泛化

一个类中成员变量和成员函数有时也可以分别被称为() A、属性和活动B、值和方法C、数据和活动D、属性和方法

根据如图1-7所示的UML类图可知,类Car和类Boat中的move()方法______。A.引用了类Transport的move()方法B.重置了类Transport的move()方法C.是类Transport的move()方法的聚集D.是类Transport的move()方法的泛化

下列关于类的访问权限的描述中,( )是错误的。A.类中说明为公有的成员可以被程序中的任何代码访问B.类中说明为私有的成员只能被类的成员函数和说明为友元类的成员函数访问C.类中说明为保护的成员可以被该类的派生类的成员访问D.类的对象和类成员函数一样可以访问类的所有成员

● 根据如下所示的 UML 类图可知,类 Car 和类 Boat 中的 move()方法 (1) 。(1)A. 引用了类Transport的move()方法B. 重置了类Transport的move()方法C. 是类Transport的move()方法的聚集D. 是类Transport的move()方法的泛化

根据如图6-3所示的UML类图可知,类Car和类Boat中的move()方法(47)。A.引用了类Transport的move()方法B.重置了类Transport的move()方法C.是类Transport的move()方法的聚集D.是类Transport的move()方法的泛化

不论派生类以何种方法继承基类,都不能使用基类的( )。A.公有成员B.私有成员C.保护成员D.公有成员和保护成员

根据如下所示的UML类图可知,类Car和类Boat中的move()方法(1)。A.引用了类Transport的move()方法B.重置了类Transport的move()方法C.是类Transport的move()方法的聚集D.是类Transport的move()方法的泛化

在公有派生时,派生类中定义的成员函数只能访问原基类的( )。A)私有成员、保护成员和公有成员B)保护成员和私有成员C)公有成员和保护成员D)公有成员和私有成员

阅读下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。【说明】下图是某企业信息系统的一个类图,图中属性和方法前的"+"、"#"和"- " 分别表示公有成员、保护成员和私有成员。其中:(1)类Manager重新实现了类 Employee的方法 calSalary( ),类Manager中的方法querySalary( )继承了其父类Employee的方法querySalary( )。(2)创建类 Employee的对象时,给其设置职位(position)、基本工资(basicSalary)等信息。方法calSalary( ),根据个人的基本工资、当月工资天数(workDays)和奖金(bonus)等按特定规则计算员工工资。(3)类Department中的方法statSalary中首先调用了该类的方法load( ),获取本部门员工列表,然后调用了类 Employee中的方法calSalary( )。现拟采用面向对象的方法进行测试。【问题1】(5分)图4-1 所示的类图中,类manager 和类Employee之间是什么关系?该关系对测试的影响是什么?【问题2】(6分)1.类Manager重新实现了类 Employee的方法calSalary( ),这是面向对象的什么机制?是否需要重新测试该方法?2.类Manager中的方法querySalary( )继承了其父类 Employee 的方法querySalary( ),是否需要重新测试该方法?【问题3】(6分)1.请结合题干说明中的描述,给出测试类Employee 方法calSalary( )时的测试序列。2.请给出类图中各个类的测试顺序。【问题4】(3分)从面向对象多态特性考虑,测试方法statSalary( )时应注意什么?

【说明】下图是某学校信息系统的一个类图,图中属性和方法前的"+"、"#"和"- " 分别表示公有成员、保护成员和私有成员。其中:(1) 类Manager重新实现了类Student的方法 calScore( ),类Manager中的方法calWorkDays( )继承了其父类Employee的方法calWorkDays ( )。(2)创建类 Student的对象时,方法calStudent( ),根据每位同学的情况计算分数。(3)类Department中的方法statScore()中首先调用了该类的方法load( ),获取本班学生列表,然后调用了类 Student中的方法calScore( )。现拟采用面向对象的方法进行测试。 【问题1】(5分)图4-1 所示的类图中,类manager 和类Employee之间是什么关系?该关系对测试的影响是什么?【问题2】(6分)(1) 类Manager重新实现了类Student的方法calScore( ),这是面向对象的什么机制?是否需要重新测试该方法?(2) 类Manager中的方法calWorkDays ( )继承了其父类 Student 的方法calWorkDays ( ),是否需要重新测试该方法?【问题3】(6分)请给出类图中各个类的测试顺序。【问题4】(3分)从面向对象多态特性考虑,测试方法statScore( )时应注意什么?

阅读下列说明,回答问题1至问题4,将解答填入答题纸的对应栏内。【说明】下图是某商场购物系统的一个类图,图中属性和方法前的"+"、"#"和"- " 分别表示公有成员、保护成员和私有成员。其中:(1) 类Manager重新实现了类Customer的方法 calMoney( );(2) 方法calMoney( ),根据每位顾客的购买情况(buyNum)、浏览商品的情况(scanNum)计算商品的热度。(3)类Admin中的方法statMoney()中首先调用了该类的方法load( ),获取顾客列表,然后调用了类Customer中的方法calMoney( )。现拟采用面向对象的方法进行测试。 【问题1】(4分)图4-1 所示的类图中,类Manager和类Customer之间是什么关系?该关系对测试的影响是什么?【问题2】(6分)(1) 类Manager重新实现了类Customer的方法calMoney( ),这是面向对象的什么机制?是否需要重新测试该方法?(2) 类Manager中的方法getMoney ( )继承了其父类 Customer 的方法getMoney ( ),是否需要重新测试该方法?【问题3】(6分)(1)请结合题干中说明的描述,给出测试类Customer方法calMoney()时的测试序列;(2)请给出类图中各个类的测试顺序。【问题4】(4分)从面向对象多态特性考虑,测试方法statMoney( )时应注意什么?

阅读下列说明,回答问题1至问题3,将解答写在答题纸的对应栏内。【说明】某软件的积分计算模块每天定时根据用户发布的文章数、文章阅读数来统计用户所获取的积分,用户分为普通用户和专家用户,两类用户具有不同的积分系数。图4-1是该模块的类图,图中属性和操作前的“+”、“#”和“-”分别表示公有成员、保护成员和私有成员。其中:(1)类Expert重新实现了类User的方法calPoints__(4)__;(2)方法calPoints__(5)__根据每个用户每天的文章数(articleNum)、文章阅读数(readNum)来计算当天的积分;(3)类System中的方法statPoints__(6)__中首先调用了该类的方法load__(7)__,获取本系统用户列表,然后调用了类User中的方法calPoints__(8)__。现拟采用面向对象的方法进行测试。【问题1】(4分)(1)图4-1所示的类图中,类System和User之间是什么关系?(2)类Expert重新实现了类User的方法calPoints(),这是面向对象的什么机制?【问题2】(6分)类Expert中的方法calPoints()和getPoints()是否需要重新测试?【问题3】(10分)(1)请结合题干说明中的描述,给出测试类User方法calPoints()时的测试序列。(2)从面向对象多态特性考虑,测试类System中方法statPoints()时应注意什么?(3)请给出图4-1中各个类的测试顺序。

一个类中成员变量和成员函数有时也可以分别被称为A.属性和活动 B.值和方法 C.数据和活动 D.属性和方法

下述排版代码中,符合编码规范的是()。A、if(ij)doStart();B、Objecto=newObject();Objectb=null;C、类定义{类的公有属性定义类的保护属性定义类的私有属性定义类的公有方法定义类的保护方法定义类的私有方法定义}D、typeCounter*=2;

下列关于静态方法的说法,错误的是() A、 静态方法不对特定实例进行操作,不与实例相关联B、 使用静态方法的语法格式:类名.静态方法(实参列表)C、 静态方法只能访问类中的静态成员,不能访问非静态成员D、 静态方法不能访问类中的静态成员

针对PHP 5中特有的魔法方法(Magic Methods),下列四句中哪句是错误的?()A、__get和__set方法用于设置并不存在的类实例的属性成员B、__call和__invoke方法用于调用并不存在的类的方法成员C、__sleep和__wakeup方法用于在序列化类实例时处理其中的外部资源和冗余数据D、通过__get方法,我们可以实现类的只读属性,而__set方法可以实现只写属性

在UML类图中分别用()表示属性与方法的公有、保护、默认和私有访问控制权限。

在类的说明符中,被指定为私有的数据可以被以下()访问。A、程序中的任何方法B、其他类的成员方法C、本类中的成员方法D、子类中的成员方法

单选题在类的说明符中,被指定为私有的数据可以被以下()访问。A程序中的任何方法B其他类的成员方法C本类中的成员方法D子类中的成员方法

填空题在UML类图中分别用()表示属性与方法的公有、保护、默认和私有访问控制权限。

单选题针对PHP 5中特有的魔法方法(Magic Methods),下列四句中哪句是错误的?()A__get和__set方法用于设置并不存在的类实例的属性成员B__call和__invoke方法用于调用并不存在的类的方法成员C__sleep和__wakeup方法用于在序列化类实例时处理其中的外部资源和冗余数据D通过__get方法,我们可以实现类的只读属性,而__set方法可以实现只写属性

多选题下述排版代码中,符合编码规范的是()。Aif(ij)doStart();BObjecto=newObject();Objectb=null;C类定义{类的公有属性定义类的保护属性定义类的私有属性定义类的公有方法定义类的保护方法定义类的私有方法定义}DtypeCounter*=2;