【说明】下图是某学校信息系统的一个类图,图中属性和方法前的"+"、"#"和"- " 分别表示公有成员、保护成员和私有成员。其中: (1) 类Manager重新实现了类Student的方法 calScore( ),类Manager中的方法calWorkDays( )继承了其父类Employee的方法calWorkDays ( )。(2)创建类 Student的对象时,方法calStudent( ),根据每位同学的情况计算分数。(3)类Department中的方法statScore()中首先调用了

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



(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】
(1) 泛化关系;(2) 继承的成员函数是否需要测试;对父类的测试是否能用到子类上。【问题2】
(1)、多态机制;需要重新测试,因为在子类中重新进行了定义,所以需要重新测试;(2)、不需要重新测试,因为子类继承了父类的方法,只要父类的该方法通过测试了即可。【问题3】
先测试Student类,然后Manager类,最后测试Department类。【问题4】
只需要在原有的测试分析基础上增加对测试用例中输入数据的类型的考虑即可。先测试基类,然后再分别依据输入数据设计不同的测试用例。
【解析】
【问题1】
考察类图的泛化关系。泛化关系(Generalization)也就是继承关系,也称为“is-a-kind-of”关系,泛化关系用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类,泛化关系通常用带空心三角形的直线来表示。对泛化关系有三个要求:1、子类与父类应该完全一致,父类所具有的属性、操作,子类应该都有;2、子类中除了与父类一致的信息以外,还包括额外的信息;3、可以使用父类的实例的地方,也可以使用子类的实例;
【问题2】
该题考察面向对象的多态机制和继承机制。多态就是在使用父类的引用调用方法的时候,不是使用父类中的方法,而是父类指向的对象的方法,这样就实现了多态。继承是指在一个类基础上定义一个新类,原有的类叫做父类,新生成的类叫子类,继承的过程是一个从一般到特殊的过程。【问题3】
由类结构可以分析出,Student应该先测,而Department依赖于Manager,因此,Manager应先于Department测试 【问题4】
题干描述,方法statScore()需要调用Student中的calScore()。而该方法在Student和Manager中有不同的实现,因此需要同时考虑Student和Manager中的calScore()。
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

下列对继承关系的描述中,()是正确的。

A.在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的;

B.在公有继承中,基类中只有公有成员对派生类的对象是可见的;

C.在私有继承中,基类中只有公有成员对派生类是可见的;

D.在私有继承中,基类中的保护成员对派生类的对象是可见的;


参考答案:D

第2题:

基类的【 】不能被派生类的成员访问,基类的【 】在派生类中的性质和继承的性质一样,而基类的【 】在私有继承时在派生类中成为私有成员,在公有和私有保护继承时在派生类中仍为保护成员。


正确答案:私有成员 公有成员 保护成员
私有成员 公有成员 保护成员

第3题:

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

A、fa

B、b

C、fc

D、c


正确答案:A,B

第4题:

下列叙述中,正确的是?

A.子类继承父类的所有属性和方法

B.子类可以继承父类的私有的属性和方法

C.子类可以继承父类的公有的属性和方法

D.创建子类对象时,父类的构造方法都要被执行


正确答案:C

第5题:

当子类隐藏了父类的成员变量或重写了父类的方法时,若要访问父类的成员变量或调用父类的方法,在Java中是通过______来实现的。


正确答案:super
super

第6题:

( 13 )下列关于继承方式的描述中,错误的是

A )如果不显式地指定继承方式,缺省的继承方式是私有( private )

B )采用公有继承方式时,基类中的公有成员在派生类中仍然是公有成员

C )采用保护继承方式时,基类中的保护成员在派生类中仍然是保护成员

D )采用私有继承方式时,基类中的私有成员在派生类中仍然是私有成员


正确答案:D

第7题:

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

A. 保护成员和私有成员

B.公有成员

C.私有成员

D.保护成员


参考答案:A

第8题:

下列对继承关系的描述中,正确的是()。

A、在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的;

B、在公有继承中,基类中只有公有成员对派生类的对象是可见的;

C、在私有继承中,基类中只有公有成员对派生类是可见的;

D、在私有继承中,基类中的保护成员对派生类的对象是可见的;


参考答案:D

第9题:

C++中,派生类对基类的继承有三种方式:公有继承(Public)、包含继承(Protected)、私有继承(Private)。类B保护继承方式继承了类A,类C公有继承方式继承了类B,则______是类C中的公有成员。

A.类A的公有成员

B.类A的保护成员

C.类B的公有成员

D.类B的保护成员


正确答案:C
解析:C++中,派生类对基类有三种继承方式:公有继承(Public)、私有继承(PrJvate)和保护继承(Protected)。
  公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的。
  私有继承的特点是基类的公有成员和保护成员都作为派生类的私有成员,并且不能被这个派生类的子类所访问。
  保护继承的特点是基类的所有公有成员和保护成员都作为派生类的保护成员,并且只能被它的派生类成员函数或友元访问,基类的私有成员仍然是私有的。

第10题:

基类的(42)在派生类中的性质和继承的性质一样,而基类的(43)在私有继承时在派生类中成为私有成员,在公有和保护继承时在派生类中仍为保护成员。

A.公有成员

B.私有成员

C.私有成员函数

D.保护成员


正确答案:A

更多相关问题