niusouti.com

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

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


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

  • 第2题:

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


    正确答案:super
    super

  • 第3题:

    下列叙述中,正确的是?

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

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

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

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


    正确答案:C

  • 第4题:

    不论派生类以何种方法继承基类,都不能使用基类的( )。

    A.公有成员

    B.私有成员

    C.保护成员

    D.公有成员和保护成员


    正确答案:B
    解析:基类的私有成员不能够在派生类中直接访问。

  • 第5题:

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



    (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()。

  • 第6题:

    阅读下列说明,回答问题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中各个类的测试顺序。


    答案:
    解析:
    【问题1】(1)关联关系(2)多态机制【问题2】calPoints ()需要重新测试;getPoints()无须重新测试。
    【问题3】
    (1)测试序列:User( )—setArticleNum( )——setReadNum( )——calPoints( ) ——getPoints( ) ;(2) 只需要在原有的测试分析和基础上增加对测试用例中输入数据的类型的考虑;先测试基类,然后再分别依据输入数据设计不同的测试用例。(3) 先测试User类,然后Expert类,最后测试System类。
    【解析】
    【问题1】(1)题考察类图的关联关系,表示类与类之间的连接,它使得一个类知道另外一个类的属性和方法。关联可以使用单箭头表示单向关联,使用双箭头或者不使用箭头表示双向关联。(2)题考察面向对象里多态的知识,一个基类的引用符,可以指向多种派生类对象,具有多种不同的形态,这种现象叫多态性。多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。【问题2】对父类中已经测试过的成员函数,有两种情况需要在子类中重新测试:(1)继承的成员函数在子类中做了改动;(2)成员函数调用了改动过的成员函数的部分;本题中Expert的calPoints()重新修改了需要重新测试,而getPoints()没有变化,无须重新测试。【问题3】
    (1)方法calPoints()根据每个用户每天的文章数(articleNum)、文章阅读数(readNum)来计算当天的积分;(2) 本题考查面向对象中多态相关知识。 一个基类的引用符,可以指向多种派生类对象,具有多种不同的形态,这种现象叫多态性。多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。多态的作用:把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。赋值之后,父类型的引用就可以根据当前赋值给它的子对象的特性以不同的方式运作。也就是说,父亲的行为像儿子,而不是儿子的行为像父亲。(3)各种关系的强弱顺序:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖。

  • 第7题:

    派生类只继承基类中的公有成员和保护成员,而不继承私有成员。


    正确答案:错误

  • 第8题:

    针对PHP 5中特有的魔法方法(Magic Methods),下列四句中哪句是错误的?()

    • A、__get和__set方法用于设置并不存在的类实例的属性成员
    • B、__call和__invoke方法用于调用并不存在的类的方法成员
    • C、__sleep和__wakeup方法用于在序列化类实例时处理其中的外部资源和冗余数据
    • D、通过__get方法,我们可以实现类的只读属性,而__set方法可以实现只写属性

    正确答案:A

  • 第9题:

    关于保护继承,下列说法错误的是()。

    • A、保护继承的特点是基类的所有公用成员和保护成员都成为派生类的保护成员。
    • B、派生类对象不能访问基类中的任何成员。
    • C、派生类的对象可以访问基类的公有成员。
    • D、保护继承的派生类和私有继承的派生类,对基类成员访问属性是相同的。

    正确答案:C

  • 第10题:

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

    • A、私有成员函数
    • B、保护成员函数
    • C、公有成员
    • D、保护数据成员

    正确答案:B

  • 第11题:

    单选题
    关于保护继承,下列说法错误的是()。
    A

    保护继承的特点是基类的所有公用成员和保护成员都成为派生类的保护成员。

    B

    派生类对象不能访问基类中的任何成员。

    C

    派生类的对象可以访问基类的公有成员。

    D

    保护继承的派生类和私有继承的派生类,对基类成员访问属性是相同的。


    正确答案: A
    解析: 暂无解析

  • 第12题:

    单选题
    假设类B继承了类A,下列说法错误的是()
    A

     类B中的成员可以访问类A中的公有成员

    B

     类B中的成员可以访问类A中的保护成员

    C

     类B中的成员可以访问类A中的私有成员

    D

     类B中的成员可以访问类A中的静态成员


    正确答案: D
    解析: 暂无解析

  • 第13题:

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

    A. 保护成员和私有成员

    B.公有成员

    C.私有成员

    D.保护成员


    参考答案:A

  • 第14题:

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

    A.类A的公有成员

    B.类A的保护成员

    C.类B的公有成员

    D.类B的保护成员


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

  • 第15题:

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

    A.公有成员

    B.私有成员

    C.私有成员函数

    D.保护成员


    正确答案:A

  • 第16题:

    阅读下列说明,回答问题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】答案:1.泛化关系;2.继承的成员函数是否需要测试;对父类的测试是否能用到子类上。【问题2】答案:(1)、多态机制;需要重新测试,因为在子类中重新进行了定义,所以需要重新测试;(2)、不需要重新测试,因为子类继承了父类的方法,只要父类的该方法通过测试了即可。【问题3】参考答案:1、测试序列:Employee-calWorkdays()-setBonus()-calSalary()-querySalary();2、先测试Employee类,然后Manager类,最后测试Department类。
    【问题4】参考答案:只需要在原有的测试分析基础上增加对测试用例中输入数据的类型的考虑即可。先测试基类,然后再分别依据输入数据设计不同的测试用例。
    【解析】
    【问题1】考察类图的泛化关系。泛化关系(Generalization)也就是继承关系,也称为“is-a-kind-of”关系,泛化关系用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类,泛化关系通常用带空心三角形的直线来表示。对泛化关系有三个要求:1、子类与父类应该完全一致,父类所具有的属性、操作,子类应该都有;2、子类中除了与父类一致的信息以外,还包括额外的信息;3、可以使用父类的实例的地方,也可以使用子类的实例;【问题2】该题考察面向对象的多态机制和继承机制。多态就是在使用父类的引用调用方法的时候,不是使用父类中的方法,而是父类指向的对象的方法,这样就实现了多态。继承是指在一个类基础上定义一个新类,原有的类叫做父类,新生成的类叫子类,继承的过程是一个从一般到特殊的过程。
    【问题3】第一问题干中说明,方法calSalary()根据个人的基本工资,当月工资天数和奖金等按特定规则计算,因此需要先计算天数、奖金,才能计算工资,最后才能查询工资。
    第二问各种关系的强弱顺序:泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖。题目中的继承关系,也就是泛化关系,Department类和基类是聚合关系。【问题4】本题考查面向对象中多态相关知识。一个基类的引用符,可以指向多种派生类对象,具有多种不同的形态,这种现象叫多态性。多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。多态的作用:把不同的子类对象都当作父类来看,可以屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,以适应需求的不断变化。赋值之后,父类型的引用就可以根据当前赋值给它的子对象的特性以不同的方式运作。也就是说,父亲的行为像儿子,而不是儿子的行为像父亲。

  • 第17题:

    阅读下列说明,回答问题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】(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()。

  • 第18题:

    下述排版代码中,符合编码规范的是()。

    • A、if(i>j)doStart();
    • B、Objecto=newObject();Objectb=null;
    • C、类定义{类的公有属性定义类的保护属性定义类的私有属性定义类的公有方法定义类的保护方法定义类的私有方法定义}
    • D、typeCounter*=2;

    正确答案:C,D

  • 第19题:

    关于私有继承,下列说法错误的是()。

    • A、基类的公有成员和保护成员被继承后作为派生类的私有成员,派生类的其他成员可以直接访问他们。
    • B、基类的公有成员和保护成员被继承后作为派生类的私有成员,派生类的其他成员不能直接访问他们。
    • C、基类的私有成员,派生类的成员和派生类的对象都无法访问。
    • D、派生类的对象无法访问基类的所有成员。

    正确答案:B

  • 第20题:

    在类的说明符中,被指定为私有的数据可以被以下()访问。

    • A、程序中的任何方法
    • B、其他类的成员方法
    • C、本类中的成员方法
    • D、子类中的成员方法

    正确答案:C

  • 第21题:

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

    • A、public成员
    • B、private成员
    • C、protected成员
    • D、友员

    正确答案:B

  • 第22题:

    以下关于继承的叙述,正确的是()。

    • A、继承使父类的代码得到了重用,提高了编程效率
    • B、Java不支持多重继承
    • C、子类可继承父类的所有成员变量和成员方法
    • D、子类不能覆盖父类的成员方法
    • E、在Java中,一个类不能同时继承一个类和实现一个接口

    正确答案:A,B

  • 第23题:

    单选题
    基类的()在私有继承时在派生类中为私有成员函数,在公有和保护继承时在派生类中为保护成员函数。
    A

    私有成员函数

    B

    保护成员函数

    C

    公有成员

    D

    保护数据成员


    正确答案: D
    解析: 暂无解析