某软件系统中,已设计并实现了用于显示地址信息的类Address(如图6-1所示)

考试题库2022-08-02  58

问题 某软件系统中,已设计并实现了用于显示地址信息的类Address(如图6-1所示),现要求提供基于Dutch语言的地址信息显示接口。为了实现该要求并考虑到以后可能还会出现新的语言的接口,决定采用适配器(Adapter)模式实现该要求,得到如图6-1所示的类图。图6-1适配器模式类图【Java代码】import java.util.*;Class Address{public void street(  ){//实现代码省略}public void zip(  ){//实现代码省略}public void city(  ){//实现代码省略}//其他成员省略};class DutchAddress{public void straat(  ){//实现代码省略}public void postcode(  ){//实现代码省略}public void plaats(  ){//实现代码省略}//其他成员省略};class DutchAddressAdapter extends DutchAddress{private(1);public DutchAddressAdapter(Address addr){address=addr;}public void straat(  ){(2);}public void postcode(  ){(3);}public void plaats(  ){(4);}//其他成员省略};class Test{public static void main(String[]args){Address addr=new Address(  );(5);System.out.println("\n The DutchAddress\n");testDutch(addrAdapter);}Static void?testDutch(DutchAddress addr){addr.straat(  );addr.postcode(  );addr.plaats(  );}}

选项

答案

解析 (1)Address address;
(2)address.street();
(3)address.zip();
(4)address.city();
(5)DutchAddress addrAdapter=new DutchAddressAdapter(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)。
转载请注明原文地址:https://tihaiku.com/congyezige/2410366.html

最新回复(0)