[计算机类试卷]软件水平考试中级软件设计师下午应用技术(面向对象技术)模拟试卷1及答案与解析.doc
《[计算机类试卷]软件水平考试中级软件设计师下午应用技术(面向对象技术)模拟试卷1及答案与解析.doc》由会员分享,可在线阅读,更多相关《[计算机类试卷]软件水平考试中级软件设计师下午应用技术(面向对象技术)模拟试卷1及答案与解析.doc(16页珍藏版)》请在麦多课文档分享上搜索。
1、软件水平考试中级软件设计师下午应用技术(面向对象技术)模拟试卷 1及答案与解析 一、必答题(共 4道大题,每道大题 15分) 0 阅读下列说明和图,回答问题 1至问题 3,将解答填入答题纸的对应栏内。 【说明】 Pay 类的提前引用 C1ass Statepublic: virtual void insertQuarter()=0; 投币 virtual void ejectQuarter()=0; 退币 virtual void turnCrank()=0; 按下 “出纸巾 ”按钮 virtusl void dispense()=0; 出纸巾 ; *类 SoidOutState、 NoQua
2、rterState、 HasQuarterState、 SoldState的定义省略,每个类中均定义了私有数据成员 TissueMachine*tissueMachine* class TiSsueMachineprivate: _(1)*soldOutState, *noQuarterState,*hasQuarterState, *soldstate, *state; int count; 纸巾数 public: TissueMachine(int number); void setState(State*state); State* qetHasQuarterState(); State
3、* qetNoQuarterState(); State* qetSoldState(); State* getSoldOutState(); int getCount(); 其余代码省略 ; 以下为类的实现部分 void NoQuarterState: insertQuarter() tissueMachine- setState_(2); void HasQuarterstate: ejectQuarter()( tissueMachine- setState_(3); void SoldState: dispense() if(tissueMachine- getC0unt() 0) t
4、issueMachine-setState_(4); else tissueMachine- setState_(5); 其余代码省略 5 阅读下列说明和 Java代码,将应填入 (n)处的字句写在答题纸的对应栏内。 【说明】 某大型商 场内安装了多个简易的纸巾售卖机,自动售出 2元钱一包的纸巾,且每次仅售出一包纸巾。纸巾售卖机的状态如图 10 37所示。采用状态 (State)模式来实现该纸巾售卖机,得到如图 10 38所示的类图。其中类 State为抽象类,定义了投币、退币、出纸巾等方法接口。类 SoldState、 SoldOutState、NoQuarterState和 HasQuar
5、terState分别对应图 10 37中纸巾售卖机的 4种状态:售出纸巾、纸巾售完、没有投币、有 2元钱。【 Java代码】 Import java util *interface State public void insertQuarter(); 投币 public void ejectQuarter(); 退币 public void turnCrank(); 按下 “出纸巾 ”按钮 public void dispense(); 出纸巾 class TisSueMachime _(1)soldOutState,noQuarterstate, hasQuarterState, soldS
6、tate, state; State=soldOutState; int count=0; 纸巾数 public TissueMachine(int number) *实现代码省略 * public State getHasQuarterState() return hasQuarterState, public State getNOQuarterState() return noQuarterState; public State getSoldState()return soldState; public State getSoldOutState() return SoldOutSta
7、te; int getCount(return count; 其余代码省略 ; Class NoQuarterState implement State TiSsueMachime tiSsueMachime; publiC void insertQuarter() tiSsueMachine SetState(_(2); 构造方法以及其余代码省略 Class HasQuarterState implement State TiSsueMachine tiSsueMachine; public void ejectQuarter() tissueMachine setState_(3); 构造
8、方法以及其余代码省略 Class SoldState implement State TissueMachine tissueMachine; public Void dispense() if(tissueMachine getCount() 0) tissueMachine setstate_(4); else tissueMachine setstate(_(5) ); 5 阅读下列说明和图,回答问题 1至问题 3,将解答填入答题纸的对应栏内。 【说明】 一个简单的图形编辑器提供给用户的基本操作包括:创建图形、创建元素、选择元素以及删除图形。图形编辑器的组成及其基本功能描述如下。 (1)
9、图形由文本元素和图元元素构成,图元元素包括线条、矩形和椭圆。 (2)图形显示在工作空间中,一次只能显示一张图形 (即当前图形, current)。 (3)编辑器提供了两种操作图形的工具:选择工具和创建工具。对图形进 行操作时,一次只能使用一种工具 (即当前活动工具, active)。 创建工具用于创建文本元素和图形元素。 对于显示在工作空间中的图形,使用选择工具能够选定其中所包含的元素,可以选择一个元素,也可以同时选择多个元素。被选择的元素成为当前选中元素 (selected)。 每种元素都具有相应的控制点。拖曳选定元素的控制点,可以移动元素或者调整元素的大小。 现采用面向对象方法开发该图形编
10、辑器,使用 UML进行建模。构建出的用例图和类图分别如图 10 39和图 10 40所示。6 根据说明中的描述,给出图 10 39中 U1和 U2所对应的用例,以及 (1)和 (2)处所对应的关系。 7 根据说明中的描述,给出图 10 40中缺少的 C1 C8所对应的类名以及 (3) (6)处所对应的多重度。 8 图 10 40中的类图设计采用了桥接 (Bridge)设计模式,请说明该模式的内涵。 9 阅读下列说明和 C+代码,将应填入 (n)处的字句写在答题纸的对应栏内 ? 【说明】 某饭店在不同的时段提供多种不同的餐饮,其菜单的结构图如图 10 41所示。 现在采用组合 (Composit
11、ion)模式来构造该饭店的菜单,使得饭店可以方便地在其 中添加新的餐饮形式,得到如图 10 42所示的类图。其中 MenuComponent为抽象类,定义了添加 (add)新菜单和打印饭店所有菜单信息 (print)的方法接口。类 Menu表示饭店提供的每种餐饮形式的菜单,如煎饼屋菜单、咖啡屋菜单等。每种菜单中都可以添加子菜单,例如图 10 41中的甜点菜单。类 Menultem表示菜单中的菜式。【 C+代码】 #include iostream #include list #include string using namespace std; class MenuC0mponentprot
12、ected: string name; public: MenuComponent(String name)this- name=name; sting getName()return name; _(1); 添加新菜单 virtual void print()=0; 打印菜单信息 ;class MenuItem: public MenuComponentprivate: double price;public: MenuItem(string name, double price): MenuComponent(name)this-price=price; double getPrice()
13、return price; void add(MenuComponent*menuComponent)return; 添加新菜单 void print()(tout getName() , getPrice end1;; Class Menu: public MenuComponentprivate: list _(2) menuComponents; public: Menu(string name): MenuComponent(name) void add(MenuComponent*menuComponent) 添加新菜单 _(3); void print() cout n getNa
14、me() n- end1; std: list 10 阅读下列说明和 Java代码,将应填入 (n)处的字句写在答题纸的对应栏内。 【说明】 某 饭店在不同的时段提供多种不同的餐饮,其菜单的结构图如图 10 43所示。 现在采用组合 (Composition)模式来构造该饭店的菜单,使得饭店可以方便地在其中添加新的餐饮形式,得到如图 10 44所示的类图。其中 MenuComponent为抽象类,定义了添加 (add)新菜单和打印饭店所有菜单信息 (print)的方法接口。类 Menu表示饭店提供的每种餐饮形式的菜单,如煎饼屋菜单、咖啡屋菜单等。每种菜单中都可以添加子菜单,例如图 10 43中
15、的甜点菜单。类 MenuItem表示菜单中的菜式。【 Java代码】 import java util *_(1) MenuComponent protected String name; _(2);添加新菜单 public abstract void print(); 打印菜单信息 public String getName()return name; class MenuItem extends MenuC0mponent private double price; public MenuItem(String name, double price) this name: name; th
16、is price=price; public double getPrice()return price; public void add(MenuComponent menuComponent)return ;添加新菜单 public void print() System out print( +getName(); class Menu extends MenuComponent private List MenuComponentmenuComponents=new ArrayList MenuComponent (); public Menu(String name)this nam
17、e=name; public void add(MenuComponent menuComponent) menuComponents _(3); public void print() System out print( n+getName(); System out println(, +-“); Iterator iterator=menuComponents iterator(); while(iterator hasNext() MenuComponent menuComponent=(MenuComponent)iterator next(); _(4); class MenuTe
18、stDrive public static void main(String args) MenuComponent al1Menus=new Menu(ALL MENUS); MenuComponent dinerMenu=new Menu(DINER MENU); 创建更多的 Menu对象,此处代码省略 allMenus add(dinerMenu); 将 dinerMenu添加到餐厅菜单中 为餐厅增加更多的菜单,此处代码省略 _(5);打印饭店所有菜单的信息 软件水平考试中级软件设计师下午应用技术(面向对象技术)模拟试卷 1答案与解析 一、必答题(共 4道大题,每道大题 15分) 【知识
19、模块】 面向对象技术 1 【正确答案】 U1:使用常规卡行驶 U2:使用单次卡行驶 (1) extend 【试题解析】 UML用例图中有包含 (include)、扩展 (extend)和泛化(generallization)三种关系。 包含关系:使用包含 (Inclusion)用例来封装一组跨越多个用例的相似动作 (行为片断 ),以便多个基 (Base)用例复用。基用例可以依赖包含用例执行的结果,但是双方都不能访问对方的属性。 扩展关系:将基用例中一段相对独立并且可选的动作,用扩展 (Extension),用例加以封装,再让它从基用例中声明的扩展点 (Extension Point)上进行扩展
20、,从而使基用例行为更简练和目标更集中。扩展用例为基用例添加新的行为。扩展用例可以访问基用例的属性,因此它能根据基用例中扩展点的当前状态来判断自己是否执行。但是扩展用例对基用例不可见。对于一个扩展用例,可以在基用例上有几个扩展点。 泛化关系:子用例和父用例相似,但表现出更特别的行为;子用例将继承父用例的所有结构、行为和关系。子用例可以使用父用例的一段行为,也可以重载它。父用例通常是抽象的。在实 际应用中很少使用泛化关系,子用例中的特殊行为都可以作为父用例中的备选流存在。 本题中,系统提供了 3种行驶卡:常规卡、季卡和单次卡。其中,季卡和单次卡都是预付卡。季卡的使用流程与常规卡类似,但是不需要打印
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
2000 积分 0人已下载
下载 | 加入VIP,交流精品资源 |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 试卷 软件 水平 考试 中级 设计师 下午 应用技术 面向 对象 技术 模拟 答案 解析 DOC
