当前位置:首页计算机类软件水平考试中级软件设计师->某软件系统中,已设计并实现了用于显示地址信息的类Addres

某软件系统中,已设计并实现了用于显示地址信息的类Address(如图5-1所示),现要求提供基于Dutch语言的地址信息显示接口。为了实现该要求并考虑到以后可能还会出现新的语言的接口,决定采用适配器(Adapter)模式实现该要求,得到如图5-1所示的类图。

中级软件设计师,历年真题,2016年上半年(下午)《软件设计师》真题

图5-1适配器模式类图

【C++代码】

#include<iostream>

using namespace std;

class Address{

public:

void stree(  ){/*实现代码省略*/}

void zip(  ){/*实现代码省略*/}

void city(  ){/*实现代码省略*/}

∥其他成员省略

};

class DutchAddress{

public:

virtual void straat(  )=0;

virtual void postcode(  )=0;

virtual void plaats(  )=0;

//其他成员省略

};

class DutchAddressAdapter:public DutchAddress{

private:

(1);

public:

DutchAddressAdapter(Address*addr){

address=addr;

}

void straat(  ){

(2);

}

void postcode(  ){

(3);

}

void plaat(  ){

(4);

}

//其他成员省略

};

void testDutch(DutchAddress*addr){

addr->straat(  );

addr->postcode(  );

addr->plaats(  );

}

int main(  ){

Address*addr=new Address(  );

(5);

cout<<"\n The DutchAddress\n"<<endl;

testDutch(addrAdapter);

return 0;

}

查看答案 纠错
答案:
本题解析:

(1)Address*address;

(2)address->street();

(3)address->zip();

(4)address->city();

(5)DutchAddress*addrAdapter=new DutchAddressAdaptor(addr);

本题考查的是面向对象程序设计,结合设计模式。本题涉及的设计模式是适配器。

对于代码填空,可以参照类图和代码上下文补充。

首先理清类与类之间的继承关系,再根据上下文填写。

对于第(1)空,DutchAddressAdapter继承了DutchAddress方法,根据下面的同名构造函数可知,该类定义了一个名叫address的参数,而根据代码上下文可以,address的类型为Address。本空应该填写Address*address。

第(2)(3)(4)空是接口转换的具体实现,而在DutchAddressAdapter涉及的方法,可以从类图中找到,分别是straat(),postcode(),plaats(),适配器的目的是接口转换,即用这些方法分别展现原有Address中的street()、zip()、city()方法,因此这3个空分别填写address->street()、address->zip()、address->city()。

对于第(5)空,根据上下文最终调用testDutch方法的对象是addrAdapter,而此处是将原有的Address对象addr转换为接口对象,因此此处填写

DutchAddress*addrAdapter=new DutchAddressAdapter(addr)。

更新时间:2021-11-21 20:51

你可能感兴趣的试题

单选题

(  )is the process of transforming information so it is unintelligible to anyone but the intended recipient.

  • A.Encryption
  • B.Decryption
  • C.Security
  • D.Protection
查看答案
单选题

As each application module is completed,it undergoes(  )to ensure that it operates correctly and reliably.

  • A.unit testing
  • B.integration testing
  • C.system testing
  • D.acceptance testing
查看答案
单选题

(  )algorithm specifies the way to arrange data in a particular order.

  • A.Search
  • B.Random
  • C.Sorting
  • D.Merge
查看答案
单选题

After analyzing the source code,(  )generates machine instructions that will carry out the meaning of the program at a later time.

  • A.an interpreter
  • B.a linker
  • C.a compiler
  • D.a converter
查看答案
单选题

(  )can help organizations to better understand the information contained within the data and will also help identify the data that is most important to the business and future business decisions.

  • A.Data processing system
  • B.Big Data analytics
  • C.Cloud computing
  • D.Database management
查看答案
单选题

浏览器开启无痕浏览模式后,(  )依然会被保存下来。

  • A.浏览历史
  • B.搜索历史
  • C.已下载文件
  • D.临时文件
查看答案
单选题

下列协议中,不属于TCP/IP协议簇的是(  )。

  • A.CSMA/CD
  • B.IP
  • C.TCP
  • D.UDP
查看答案
单选题

下列传输介质中,带宽最宽、抗干扰能力最强的是(  )。

  • A.双绞线
  • B.红外线
  • C.同轴电缆
  • D.光纤
查看答案
单选题

数控编程常需要用参数来描述需要加工的零件的图形。在平面坐标系内,确定一个点需要2个独立的参数,确定一个正方形需要(  )个独立的参数。

  • A.3
  • B.4
  • C.5
  • D.6
查看答案
单选题

某书的页码为1,2,3,...,共用数字900个(一个多位数页码包含多个数字),据此可以推断,该书最大的页码为(  )。

  • A.237
  • B.336
  • C.711
  • D.900
查看答案