阅读下列说明、图和Java代码,回答问题1至问题3。【说明】已知四个类之间的关系如图2-4所示,分别对每个类的方法进行编号,例如Shape的perimeter()为1号,表示为1:perimeter(),Rectangle类的perimeter()为2号,表示为 2:perimeter(),依此类推,其中,每个类的perimeter方法签名相同。【Java代码】Triangle tr=new Triangle();Square sq=new Square();Shape sh=tr;关于上述Java代码中

题目

阅读下列说明、图和Java代码,回答问题1至问题3。

【说明】

已知四个类之间的关系如图2-4所示,分别对每个类的方法进行编号,例如Shape的perimeter()为1号,表示为1:perimeter(),Rectangle类的perimeter()为2号,表示为 2:perimeter(),依此类推,其中,每个类的perimeter方法签名相同。

【Java代码】

Triangle tr=new Triangle();

Square sq=new Square();

Shape sh=tr;

关于上述Java代码中sh和tr的以下叙述中,哪两个是正确的(写出编号)。

①sh和tr分别引用同一个对象;

②sh和tr分别引用同一类型的不同的对象:

③sh和tr分别引用不同类型的不同对象:

④sh和tr分别引用同一个对象的不同拷贝;

⑤sh和tr所引用的内存空间是相同的。


相似考题
更多“ 阅读下列说明、图和Java代码,回答问题1至问题3。【说明】已知四个类之间的关系如图2-4所示,分别对每个类的方法进行编号,例如Shape的perimeter()为1号,表示为1:perimeter(),Rect”相关问题
  • 第1题:

    试题七(共 15 分)

    阅读下列说明、图和Java 代码,回答问题1 至问题3,将解答写在答题纸的对应栏内。

    [说明]

    已知四个类之间的关系如图 7-1 所示,分别对每个类的方法进行编号,例如 Shape的 perimeter()为 1 号,表示为“1:perimeter()” ,Rectangle 类的 perimeter()为 2 号,表示为“2:perimeter()” ,依此类推,其中,每个类的 perimeter方法签名相同。

    [Java 代码]

    Triangle tr = new Triangle();

    Square sq = new Square();

    Shape sh = tr;

    [问题 1] 关于上述 Java代码中 sh 和 tr 的以下叙述中,哪两个是正确的(写出编号) 。

    ① sh 和 tr 分别引用同一个对象;

    ② sh 和 tr 分别引用同一类型的不同的对象;

    ③ sh 和 tr 分别引用不同类型的不同对象;

    ④ sh 和 tr 分别引用同一个对象的不同拷贝;

    ⑤ sh 和 tr 所引用的内存空间是相同的。

    [问题 2] 写出下面消息对应的方法编号(如果该消息错误或者没有对应的方法调用,请

    填写“无” ) 。

    tr.height() (1)

    sh.perimeter() (2)

    sq.height() (3)

    sq.perimeter() (4)

    sh.height() (5)

    tr.perimeter() (6)

    [问题 3] 下列赋值语句中哪两个是合法的(写出合法赋值语句的编号) 。

    ① sq = sh; ② sh = tr; ③ tr = sq; ④ sq = tr; ⑤ sh = sq;


    正确答案:

  • 第2题:

    试题五(共 15 分)

    阅读下列说明、图和C++代码,回答问题1 至问题3,将解答写在答题纸的对应栏内。

    [说明]

    已知四个类之间的关系如图 5-1 所示,分别对每个类的方法进行编号,例如 Shape的 perimeter()方法为 1 号,表示为“1:perimeter()” ,Rectangle 类的 perimeter()为2号,表示为“2:perimeter()” ,依此类推,其中,每个类的 perimeter方法都为虚函数且方法签名相同。

    [C++代码]

    Triangle *tr = new Triangle();

    Square *sq = new Square();

    Shape *sh = tr;

    [问题 1] 关于上述 C++代码中 sh 和 tr 的以下叙述中,哪两个是正确的(写出编号) 。

    ① sh 和 tr 分别引用同一个对象;

    ② sh 和 tr 分别引用同一类型的不同的对象;

    ③ sh 和 tr 分别引用不同类型的不同对象;

    ④ sh 和 tr 分别引用同一个对象的不同拷贝;

    ⑤ sh 和 tr 所引用的内存空间是相同的。

    [问题 2] 写出下面消息对应的方法编号(如果该消息错误或者没有对应的方法调用,请

    填写“无” ) 。

    tr->height() (1)

    sh->perimeter() (2)

    sq->height() (3)

    sq->perimeter() (4)

    sh->height() (5)

    tr->perimeter() (6)

    [问题 3] 不考虑内存释放问题,下列赋值语句中哪两个是合法的(写出合法赋值语句的

    编号) 。

    ① sq = sh; ② sh = tr; ③ tr = sq; ④ sq = tr; ⑤ sh = sq;


    正确答案:


  • 第3题:

    阅读以下说明,回答问题1至问题4,将解答填入答题纸对应的解答栏内。
    【说明】
    某企业网络拓扑如图1-1所示,A~E是网络设备的编号。










    答案:
    解析:
    【问题1】参考答案:1.B,2.A,3.C 4.D【问题2】5.ethernet 1 6、59.74.221.254【问题3】7) C.deny 8、A 9.F【问题4】10)192.168.4.1
    11)192.168.100.0 12)设置接口的类型是trunk
    【解析】
    【问题1】试题分析:这是一道简单的概念题,考察我们对企业园区网络的基本拓扑结构的了解。通常的企业为了确保内部网络的安全,会设置防火墙,防火墙有3个区域,外网,内网和DMZ区。DMZ通常用于存放各种服务器。因此首先可以选出B这个位置是防火墙,A用于连接Internet,是路由器。DMZ区内部有多台服务器,需要使用交换机连接。【问题3】试题分析:这是网络工程师考试第一次考华为的设备配置,而我们考前准备的都是ios的命令。那这道题是不是很难呢,其实这道题非常简单,只要我们有IOS的命令经验,这道题完全可以自己凭经验做出来,题目出题也是以选择题的形式,因此更加容易,对于没有用过华为设备的考生来说,也是非常简单的。
    【问题4】试题分析:这道题同样是基本的配置,掌握基本命令即可。

  • 第4题:

    试题六(共15分)

    阅读以下说明、图和Java代码,填补Java代码中的空缺(1)~(6),将解答写在答题纸的

    对应栏内。

    【说明】

    已知对某几何图形绘制工具进行类建模的结果如图6.1所示,其中Shape为抽象(abstract)类,表示通用图形,Box(矩形)、Ellipse(椭圆)和Line(线条)继承(extends)了Shape类,其中,Circle表示圆(即特殊的椭圆)。

    下面的Java代码用于实现图 6-1所给出的设计思路,将其空缺处填充完整并编译运行,输出结果为:

    Ellipse

    Circle

    Ellipse

    C

    E

    【Java代码】

    (1) class Shape{

    public Shape(String name){

    this.name= name;

    }

    (2) void paint();

    String getName(){

    retum this.name;

    }

    final String name;

    };

    //Box 和Line类似下面 Ellipse,其代码略

    class Ellipse (3) {

    public Ellipse(String name){

    super(name);

    System.out.println("Ellipse");

    }

    Void paintO{∥绘制现状示意代码

    System.out.println(getName0);

    }

    };

    class Circle (4) {

    public Circle(String name){

    super(name);

    System.out.println("Circle");

    }

    };

    class Diagram{

    private Shape shapes[]= new Shape[2];

    public void drawAShape(Shape shape){

    shape.paint();

    }

    void erase A Shape(Shape shape){

    ∥删除形状,代码略

    }

    void drawShapes(){

    shapes*0+= new Circle("C”);

    shapes[l]= new Ellipse("E");

    for (int i=O; i<2;++i) {

    drawAShap(shapes[i]);//绘制形状

    }

    }

    void close(){

    for (int i=0;i<2; ++1) { []关闭图,删除所绘制图形

    (5) ;

    }

    }

    public static void main(String[] args){

    Diagram diagram= (6) ;

    diagram.drawShapes();

    diagram.close();

    }

    }


    正确答案:
    试题六参考答案(共 15分)
    (1) abstract 或public abstract (2 分)
    (2) abstract 或public abstract 或protected abstract (2 分)
    (3) extends Shape (2分)
    (4) extends Ellipse (3 分)
    (5) erase A Shape (shapes[i]) (3 分)
    (6) new Diagram() (3分)

  • 第5题:

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