当前位置:文档之家› 软件设计模式(JAVA)习题答案

软件设计模式(JAVA)习题答案

软件设计模式(JAVA)习题答案
软件设计模式(JAVA)习题答案

软件设计模式(Java版)习题

第1章软件设计模式基础

1.1 软件设计模式概述

1.2 UML中的类图

1.3 面向对象的设计原则

一、名词解释

1.一个软件实体应当对扩展开放,对修改关闭,即在不修改源代码的基础上扩展

一个系统的行为。

2.一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。

3.在软件中如果能够使用基类对象,那么一定能够使用其子类对象。

4.是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,

使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。

二、单选择题

1.( A )

2.( A )

3. ( A )

4. ( D )

5. ( D )

6.( A ) 7. ( D ) 8.( D ) 9.( D ) 10.( E )

11.( C ) 12.( C ) 13. ( A )

三、多选择题

1.( A、B、C、D ) 2. ( A、B ) 3.( A、D ) 4.( A、B、C、D ) 四、填空题

1.依赖倒转、迪米特法则、单一职责

2.模式名字、目的、问题、解决方案、效果、实例代码

3.超类、子类

4.开闭

5.用户

6.依赖倒转

7.组合/聚合

8.结构型、行为型

9.依赖倒转

10.开闭

11.需求收集是否正确、体系结构的构建是否合理、测试是否完全

12.人与人之间的交流

13.接口

14.名称、目的、解决方案

15.对象组合、类继承

16.对象组合

17.对象组合、类继承

18.抽象类的指针

五、简答题

1.答:设计模式按类型分为以下三类:

1)创建型设计模式:以灵活的方式创建对象集合,用于管理对象的创建。

2)结构型设计模式:将己有的代码集成到新的面向对象设计中,用于处理类或对象的组合。

3)行为型设计模式:用于描述对类或对象怎样交互和怎样分配职责。

2.答:设计模式的主要优点如下:

1)设计模式融合了众多专家的经验,并以一种标准的形式供广大开发人员所用,它提供了一套通用的设计词汇和一种通用的语言以方便开发人员之间沟通和交

流,使得设计方案更加通俗易懂。

2)设计模式使人们可以更加简单方便地复用成功的设计和体系结构,将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。设计模式使得重用成功的设计更加容易,并避免那些导致不可重用的设计方案。

3)设计模式使得设计方案更加灵活,且易于修改。

4)设计模式的使用将提高软件系统的开发效率和软件质量,且在一定程度上节约设计成本。

5)设计模式有助于初学者更深入地理解面向对象思想,一方面可以帮助初学者更加方便地阅读和学习现有类库与其他系统中的源代码,另一方面还可以提高软件的设计水平和代码质量。

3.答:设计模式一般有如下几个基本要素:模式名称、问题、目的、解决方案、效

果、实例代码和相关设计模式,其中的关键元素包括模式名称、问题、解决方案和效果。

4.答:正确使用设计模式具有以下优点:

⑴可以提高程序员的思维能力、编程能力和设计能力。

⑵使程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从

而缩短软件的开发周期。

⑶使设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强。

5.答:根据类与类之间的耦合度从弱到强排列,UML中的类图有以下几种关系:依赖关

系、关联关系、聚合关系、组合关系、泛化关系和实现关系。其中泛化和实现的耦合度相等,它们是最强的。

6.答:1)开闭原则(OCP):它要求软件实体应当对扩展开放,对修改关闭;

2)里氏替换原则(LSP):它要求继承必须确保超类所拥有的性质在子类中仍然成立;

3)依赖倒置原则(DIP):它要求软件设计要面向接口编程,不要面向实现编程;

4)单一职责原则(SRP):它要求对象不应该承担太多职责,一个类应该有且仅有一个引起它变化的原因;

5)接口隔离原则(ISP):它要求程序员尽量将臃肿庞大的接口拆分成更小的和更具体的接口,让接口中只包含客户感兴趣的方法;

6)迪米特法则(LoD):它要求如果两个软件实体无须直接通信,就不应当直接相互调用,而通过第三方转发该调用;

7)合成复用原则(CRP):它要求在软件复用时,要尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。

第2章创建型模式(上)

2.2 单例模式

2.3 原型模式

一、单选择题

1.( A )

2.( B )

3. ( A )

4. ( D )

5. ( C )

6.( B ) 7. ( B )

二、多选择题

1.( C )

2. ( A,B )

3.( A、B )

4. ( A、B、C )

5.( A、C ) 6.( A、B、C、D ) 7.( A,B,C,D )

三、填空题

1.对象的创建、使用分离、耦合度

2.创建型

3.创建性

4.懒汉式单例、饿汉式单例

5. 抽象原型类、具体原型类

四、程序分析题解:本题使用了单例模式,参考类图如下所示:

五、简答题

1. 答:创建型模式分为以下几种:

⑴单例(Singleton)模式:某个类只能生成一个实例,该类提供了一个全局

访问点供外部获取该实例,其拓展是有限多例模式。

⑵原型(Prototype)模式:将一个对象作为原型,通过对其进行复制而克隆

出多个和原型类似的新实例。

⑶工厂方法(Factory Method)模式:定义一个用于创建产品的接口,由子

类决定生产什么产品。

⑷抽象工厂(Abstract Factory)模式:提供一个创建产品族的接口,其每

个子类可以生产一系列相关的产品。

⑸建造者(Builder)模式:将一个复杂对象分解成多个相对简单的部分,然

后根据不同需要分别创建它们,最后构建成该复杂对象。

2.答:单例模式重点在于在整个系统上共享一些创建时较耗资源的对象。整个应用中只维护一个特定类实例,它被所有组件共同使用。https://www.doczj.com/doc/0a19142734.html,ng.Runtime是单例模式的经典例子。从Java 5开始你可以使用枚举(enum)来实现线程安全的单例。

3.答:单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自

行创建这个实例的一种模式。

特点:1)单例类只有一个实例对象;2)该单例对象必须由单例类自行创建;3)单例类对外提供一个访问该单例的全局访问点。

应用场景:1)在某类只要求生成一个对象的时候;2)当对象需要被共享的场合;3)当某类需要频繁实例化,而创建的对象又频繁被销毁的时候。

4.答:原型模式通常适用以下场景:1)对象之间相同或相似,即只是个别的

几个属性不同的时候;2)对象的创建过程比较麻烦,但克隆比较简单时候。

原型模式可扩展为:带原型管理器的原型模式,它在原型模式的基础上增加了一个原型管理器PrototypeManager类。

第3章创建型模式(下)

3.1工厂方法模式

3.2抽象工厂模式

3.3建造者模式

一、单选择题

1.( B )

2. ( A )

3. ( C )

4.( C )

5. ( D )

6. ( C )

7. ( B )

8. ( A )

9.( A ) 10.( A )

二、多选择题

1.( A、B、C、D ) 2.( A、B、C、D ) 3.( A、C )

三、填空题

1.工厂方法、抽象工厂

2.简单工厂

3.抽象工厂(Abstract Factory) 、具体工厂(Concrete Factory) 、抽象产品(Product)

4.工厂方法、多个等级的产品

5.抽象建造者(Builder)、具体建造者(ConcreteBuilder)、指挥者(Director)

五、简答题

1.答:工厂模式的最大好处是增加了创建对象时的封装层次。如果你使用工厂来创建对象,之后你可以使用更高级和更高性能的实现来替换原始的产品实现或类,这不需要在调用层做任何修改。应用场合是常常有新的对象类型要被添加进来,但你所关心的仅仅是方法的接口,不关心其实现细节,本书中已经详细地介绍了其好处和应用环境。

2.答:工厂方法模式的主要优点有:1)用户只需要知道具体工厂的名称就可得到所要的产品,无须知道产品的具体创建过程;2)在系统增加新的产品时只需要添加具体产品类和对应的具体工厂类,无需对原工厂进行任何修改,满足开闭原则。

其缺点是:每增加一个产品就要增加一个具体产品类和一个对应的具体工厂类,这增加了系统的复杂度。

3.答:工厂方法模式中考虑的是一类产品的生厂,如:电视机工厂;而抽象工厂模式考虑多类产品的生产,如:电器工厂。

工厂方法模式通常适用以下场景:1)客户只知道创建产品的工厂名,而不知道具体的产品名。如:TCL 电视工厂、海信电视工厂等;2)创建对象的任务由多个具体子工厂中的某一个完成,而抽象工厂只提供创建产品的接口。3)客户不关心创建产品的细节,只关心产品的品牌。

抽象工厂模式通常适用以下场景: 1)当需要创建的对象是一系列相互关联或相互依赖的产品族时,如:电器工厂中的电视机、洗衣机、空调等;2)系统中有多个产品族,但每次只使用其中的某一族产品。如:有的粉丝只喜欢穿李宁牌的衣、裤和鞋;3)系统中提供

了产品的类库,且所有产品的接口相同,客户端不依赖产品实例的创建细节和内部结构。

4.答:产品的种类称为产品等级,而一个具体工厂所生产的位于不同等级的一组产品称为一个产品族。

5.答:建造者模式的定义: 指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。

该模式的主要优点是: 1)各个具体的建造者相互独立的,有利于系统的扩展;2)客户端不必知道产品内部组成的细节,便于控制细节风险。

其缺点是:1)产品的组成部分必须相同,这限制了其使用范围;2)如果产品的内部变化复杂,该模式会增加很多的建造者类。

建造者模式通常在以下场合使用: 1)创建的对象较复杂,由多个部件构成,各部件面临着复杂的变化,但构件间的建造顺序是稳定的;2)创建复杂对象的算法独立于该对象的组成部分以及它们的装配方式,即产品的构建过程和最终的表示是独立的。

六、编程题

说明:1-5编程题可参考本章节的实例自己实现。

第4章

结构型模式(上)

4.2 代理模式

4.3 适配器模式

4.4 桥接模式

一、单选择题

1.( A )

2.( A )

3. ( D )

4. ( B )

5.

( A )

6. ( C )

7. ( D )

二、多选择题

1.( A、D )

2. ( A、B、D )

3.( A、C、D )

4. ( A、B、C )

三、填空题

1.适配器(Adapter)模式、桥接(Bridge)模式、装饰(Decorator)模式、外

观(Facade) 模式、享元(Flyweight)模式

2.真实主题(RealSubject)类、代理(Proxy)类

3.动态代理模式

4.继承、组合/聚合

5. 适配者(Adaptee)类、适配器(Adapter)类

6.桥接

7. 适配器

四、程序分析题

解:1)本题使用了代理器模式; 2)其参考结构图如下所

示:

五、简答题

1.答:代理(Proxy)模式:为某对象提供一种代理以控制对该对象的访

问。即客户端通过代理间接地访问该对象,从而限制、增强或修改该对象的一些特

性。

代理模式有以下的应用场景:1)为了隐藏目标对象存在于不同地址空间的事实,方便客户端访问时;2)要创建的目标对象开销很大时;3)控制不同种类客户对真实对象的访问权限时;4)当调用目标对象需要附加一些额外的处理功能时;5)为了提高系统的性能,需延迟对目标的加载时。

2.答:代理模式的主要优点有:1)代理模式在客户端与目标对象之间起到一

个中介作用和保护目标对象的作用;2)代理对象可以扩展目标对象的功能;3)代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度。

其主要缺点是:1)在客户端和目标对象增加一个代理对象,会造成请求处理速度变慢;

2)增加了系统的复杂度。

3.答:远程代理:这种方式通常是为了隐藏目标对象存在于不同地址空间的

事实,方便客户端访问。例如用户申请某些网盘空间时,会在用户的文件系统中建立一个虚拟的硬盘,用户访问它实际访问的是网盘空间。

虚拟代理:这种方式通常用于要创建的目标对象开销很大时。比如下载一幅很大的图像需要很长时间,因某种计算比较复杂而短时间无法完成,这时可以先用小比例的虚拟代理替换真实的对象,消除用户对服务器慢的感觉。

安全代理:这种方式通常用于控制不同种类客户对真实对象的访问权限。

4.答:适配器模式(Adapter)的定义如下: 将一个类的接口转换成客户希望

的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。适配器模式分为类结构型模式和对象结构型模式2种,前者类之间的耦合度比后者高,且要求程序员了解现有组件库中的相关组件的内部结构,所以应用相对较少些。

Java例子可参考本章节相关实例设计。

5.答:适配器模式通常适用以下场景: 1)以前开发的系统存在满足新系统

功能需求的类,但其接口同新系统的接口不一致;2)使用第三方提供的组件,但组件接口定义和自己要求的接口定义不同。

应用实例可参考本章节相关实例设计。

6.答:桥接模式的定义如下: 将抽象与实现分离,使他们可以独立的变化。

它是用组合关系代替继承关系来实现,从而降低了抽象和实现这2个可变维度的耦合度。

其优点是: 1)由于抽象与实现分离,所以扩展能力强;2)其实现细节对客户透明。

缺点是:由于聚合关系建立在抽象层,要求开发者针对抽象化进行设计与编程,这增加了系统的理解与设计难度。

六、综合题

1.解:本题可使用适配器模式和抽象工厂模式,参考类图如下所示:

其中:1)PlayerFactory为抽象工厂,MediaPlayerFactory和RealPlayerFactory 是具体工厂;

2)MainWindow(主窗口)和PlayerList(播放列表)是两个抽象产品;

3)MediaPlayerWindow和RealPlayerWindow是两个具体产品,是对MainWindow的实现;

4)MediaPlayerList和RealPlayerList是两个具体产品,是对PlayerList的实现;

5)MediaPlayerWindow和MediaPlayerList由MediaPlayerFactory生产;

6)RealPlayerWindow和RealPlayerList由RealPlayerFactory生产;

7)MediaPlayerAPI是已有的API,充当适配者,供MediaPlayerWindow(适配器)和MediaPlayerList(适配器)调用。

8)RealPlayerAPI也是已有的API,充当适配者,供RealPlayerWindow(适配器)和RealPlayerList(适配器)调用。

第5章结构型模式(下)

5.1 装饰模式

5.2 外观模式

5.3 享元模式

5.4 组合模式

一、单选择题

1. ( D )

2. ( D )

3. ( B )

4. ( C )

5.( B )

6.( C ) 7. ( D ) 8. ( A ) 9. ( B ) 10.( C ) 二、多选择题

1.( A,B,C,D ) 2.( B,C ) 3.( A、B )4.( A、B、C )

5. ( A、B、C、D ) 6.( A,B ) 7. ( C,D )

三、填空题

1.抽象构件(Component)、具体构件(Concrete Component)、抽象装饰(Decorator)

2.迪米特

3.内部状态、外部状态

4.单纯、复合

5.结构型、创建型

6.透明式、安全式

四、程序分析题

1.解:本题使用了享元模式,参考类图如下所示:

2.解:1)本题使用了享元模式。

2)其参考程序代码如下所示: import

java.util.*; public class WareFactory

{ private ArrayList Wares = new ArrayList();

private int totalNum=0;

public WareFactory()

{

KitchenWare nd1=new bowl("饭碗");

Wares.add(nd1);

KitchenWare nd2=new cup("杯子");

Wares.add(nd2);

}

public KitchenWare getKitchenWare(String type)

{

if(type.equalsIgnoreCase("饭碗"))

{

totalNum++;

return (KitchenWare)Wares.get(0);

}

else if(type.equalsIgnoreCase("杯子"))

{

totalNum++;

return (KitchenWare)Wares.get(1);

}

else { return null; }

}

public int getTotalWare(){ return Wares.size(); } public int gettotalNum() { return totalNum; }

} public interface KitchenWare

{ public String getType();

public void use();

} public class bowl implements KitchenWare

{ private String type;

public bowl(String type) { this.type=type; } public String

getType() { return this.type; }

public void use() { System.out.println("使用的厨具是:" + this.type);}

} public class cup implements KitchenWare

{ private String type;

public cup(String type) { this.type=type; } public String getType()

{ return this.type; } public void use() { System.out.println("使用的厨具是:" +this.type); }

}

public class Client2010 {

public static void main(String[] args) {

KitchenWare kw1,kw2,kw3,kw4;

WareFactory df=new WareFactory();

kw1=df.getKitchenWare("饭碗"); https://www.doczj.com/doc/0a19142734.html,e();

kw2=df.getKitchenWare("饭碗"); https://www.doczj.com/doc/0a19142734.html,e();

kw3=df.getKitchenWare("杯子"); https://www.doczj.com/doc/0a19142734.html,e();

kw4=df.getKitchenWare("杯子"); https://www.doczj.com/doc/0a19142734.html,e();

System.out.println("厨具种类:" + df.getTotalWare());

System.out.println("生成的厨具数:" + df.gettotalNum());

}

}

五、简答题

1.答:装饰模式增加强了单个对象的能力。Java IO 到处都使用了装饰模式,经典的例子就是Buffered系列类如BufferedReader和BufferedWriter,它们增强了Reader和Writer对象,以实现提升性能的 Buffer 层次的读取和写入。

2.答:装饰模式是一种用于替代继承的技术,它使用对象之间的关联关系来

取代类之间的继承关系。当不能采用继承的方式对系统进行扩展或者采用继承不利于系统扩展和维护时可以使用装饰模式。在装饰模式中引入了装饰类,在装饰类中既可以调用待装饰的原有类的方法,还可以增加新的方法,以扩充原有类的功能。这些都不用改变原有对象,满足开闭原则。

3.答:外观模式的定义:是一种通过为多个复杂的子系统提供一个一致的接

口,而使这些子系统更加容易被访问的模式。

其主要优点有:1)降低了子系统与客户端之间的耦合度,使得子系统的变化不会影响到调用它的客户类;2)对客户屏蔽了子系统组件,减少了客户处理的对象数目,并使得子系统使用起来更加容易;3)降低了大型软件系统中的编译依赖性,简化了系统在不同平台之间的移植过程,因为编译一个子系统不会影响其他的子系统,也不会影响到外观对象。

其主要缺点是:1)不能很好地限制客户使用子系统类;2)增加新的子系统可能需要修改外观类或客户端的源代码,违背了“开闭原则”。

其应用场景有:1)对分层结构系统构建时,使用外观模式定义子系统中每层的入口点可以简化子系统之间的依赖关系;2)对于一个复杂系统,其子系统很多,外观模式可以为系统设计一个简单的接口供外界访问;3)当客户端与多个子系统之间存在很大的联系时,引入外观模式可将它们分离,从而提高子系统的独立性和可移植性。

4.答:享元工厂角色负责创建和管理享元角色。当客户对象请求一个享元对

象时,享元工厂检查系统中是否存在符合要求的享元对象,如果存在则提供给客户;

如果不存在的话,则创建一个新的享元对象,它是工厂模式在享元模式中的应用。

5.答:组合模式包含抽象构件(Component)角色、树叶构件(Leaf)角色、

树枝构件

(Composite)角色。它分为透明式的组合模式和安全式的组合模式2种。安全组合模式的类

图如下:

第6章行为型模式(上)

6.2 模板方法模式

6.3 策略模式

6.4 命令模式

一、单选择题

1.( A )

2. ( D )

3. ( C )

4. ( B )

5. ( A )

6.( B )

7. ( D )

8. ( A )

9. ( B )

二、多选择题

1.( B,C,D )

2. ( A,B,D )

3. ( A,B,C )

4.( A,B,C,D )

三、填空题

1.行为型模式

2.模板方法

3.抽象方法、具体方法、钩子方法

4.策略

5.简单工厂

6.命令

四、简答题

1.答:行为型模式用于描述程序在运行时复杂的流程控制,即描述多个类或对象

之间

怎样相互协作共同完成单个对象都无法单独完成的任务,它涉及到算法与对象间职责的分配。

共有11种行为型模式,它们的定义如下:

⑴模板方法(Template Method)模式:定义一个操作中的算法骨架,而将算

法的一些步骤延迟到子类中,使得子类可以不改变该算法结构的情况下重定义该算法的某些特定步骤。

⑵策略(Strategy)模式:定义了一系列算法,并将每个算法封装起来,使

他们可以相互替换,且算法的改变不会影响到使用算法的客户。

⑶命令(Command)模式:将一个请求封装为一个对象,使发出请求的责任和

执行请求的责任分割开。

⑷职责链(Chain of Responsibility)模式:把请求从链中的一个对象传到

下一个对象,直到请求被响应为止。通过这种方式去除对象之间的耦合。

⑸状态(State)模式:允许一个对象在其内部状态发生改变时改变其行为能

力。

⑹观察者(Observer)模式:多个对象间存在一对多关系,当一个对象发生

改变时,把这种改变通知给其它多个对象,从而影响其它对象的行为。

⑺中介者(Mediator)模式:定义一个中介对象来简化原有对象之间的交互

关系,降低系统中对象间的耦合度,使原有对象之间不必相互了解。

⑻迭代器(Iterator)模式:提供一种方法来顺序访问聚合对象中的一系列

数据,而不暴露聚合对象的内部表示。

⑼访问者(Visitor)模式:在不改变集合元素的前提下,为一个集合中的每

个元素提供多种访问方式,即每个元素有多个访问者对象访问。

⑽备忘录(Memento)模式:在不破坏封装性的前提下,获取并保存一个对象的内部状态,以便以后恢复它。

⑾解释器(Interpreter)模式:提供如何定义语言的文法,以及对语言句子的解释方法,即解释器。

2.答:模板方法的主要优点是:

1)它封装了不变部分,扩展可变部分。它把认为是不变部分的算法封装到父类中实现,而把可变部分算法由子类继承实现,便于子类继续扩展;

2)它在父类中提取了公共的部分代码,便于代码复用;

3)部分方法是由子类实现的,因此子类可以通过扩展方式增加相应的功能,符合开闭原则。

模板方法的主要缺点是:

1)对每个不同的实现都需要定义一个子类,这会导致类的个数增加,系统更加庞大,设计也更加抽象;

2)父类中的抽象方法由子类实现,子类执行的结果会影响父类的结果,这导致一种反向的控制结构,它提高了代码阅读的难度。

其应用实例有:(自己介绍)

3.答:策略模式的结构图如下:

其应用场景有:1)一个系统需要动态地在几种算法中选择一种时,可将每个算法封装到策略类中;2)一个类定义了多种行为 , 并且这些行为在这个类的操作中以多个条件语句的形式出现,可将每个条件分支移入到它们各自的策略类中以代替这些条件语句;3)系统中各算法彼此完全独立,且要求对客户隐藏具体算法的实现细节时;4)系统要求使用算法的客户不应该知道其操作的数据时,可使用策略模式来隐藏与算法相关的数据结构;5)多

个类只区别在表现行为不同,可以使用策略模式,在运行时动态选择具体要执行的行为。

4.答:Java.util.List接口定义了增加(add)、删除(remove)、修改(set)、

查询

(indexOf)等策略,其实现类ArrayList、LinkedList等采用了不同的算法来实现这些策略,用户可根据其特点选用它们。

5.答:命令模式通常适用以下场景:1)当系统需要将请求调用者与请求接收者解

耦时,命令模式使得调用者和接收者不直接交互;2)当系统需要随机请求命令或经常增加或删除命令时,命令模式比较方便实现这些功能;3)当系统需要执行一组操作时,命令模式可以定义宏命令来实现该功能;4)当系统需要支持命令的撤销(Undo)操作和恢复(Redo)操作时,可以将命令对象存储起来,采用备忘录模式来实现。

其应用实例有:(自己举例)

6.答:将命令模式与前面学的组合模式联合使用,这就构成了宏命令模式,也叫

组合命令模式,其具体结构图如下:

五、编程题

解:1)本题使用了策略模式

2)其参考程序代码如下所示:

interface TravelStrategy

{

public void travel();

}

class AirplaneStrategy implements TravelStrategy

{

public void travel()

{

System.out.println("飞机游!");

}

}

class TrainStrategy implements TravelStrategy

{ public void

travel()

{

System.out.println("火车游!");

}

}

class BicycleStrategy implements TravelStrategy

精选文库

{ public void

travel()

{

System.out.println("自行车游!");

} }

class Person

{ private TravelStrategy

ts;

public setStrategy(TravelStrategy ts)

{ this.ts=ts;

}

public void travelMethod()

{

ts.travelMethod();

}

} class

Client

{ public static void main(String

args[])

{

TravelStrategy ts = new BicycleStrategy();

Person p1 = new Person(); p1.setStrategy(ts);

P1.travelMethod();

}

}

第7章行为型模式(中)

7.1 职责链模式

7.2 状态模式

7.3 观察者模式

7.4 中介者模式

一、单选择题

1.( B )

2.( C )

3. ( D ) 4.( D ) 5.( B )

6.( C ) 7. ( D ) 8.( C )

二、多选择题

1.( A,B,D )

2. ( A,C,D )

3.( A、B、C ) 4.( A,B,D )

5.( B,C,D )

三、填空题

1.对象行为型

2.纯的职责链模式、不纯的职责链模式

3.环境(Context)、抽象状态(State)、具体状态(ConcreteState)

4.观察者、命令

5.java.util.Observable、java.util.Observer

6.不定义中介者接口,把具体中介者对象实现成为单例

四、设计题

1.解:本题可使用观察者模式,参考类图如下所示:

五、简答题

1.答:职责链模式的定义:为了避免请求发送者与多个请求处理者耦合在一起,

将所有请求的处理者通过前一对象记住其下一个对象的引用而连成一条链;当有请求发生时,可将请求沿着这条链传递,直到有对象处理它为止。

2.答:职责链模式是一种对象行为型模式,其主要优点有:

1)降低了对象之间的耦合度。该模式使得一个对象无需知道到底是哪一个对象处理其请求以及链的结构,发送者和接收者也无需拥有对方的明确信息。

2)增强了系统的可扩展性。可以根据需要增加新的请求处理类,满足开闭原则;

3)增强了给对象指派职责的灵活性。当工作流程发生变化,可以动态地改变链内的成员或者调动它们的次序,也可动态地新增或者删除责任。

4)职责链简化了对象之间的连接。每个对象只需保持一个指向其后继者的引用,不需保持其它所有处理者的引用,这避免了使用众多的if或者if-else语句。

5)责任分担。每个类只需要处理自己该处理的工作,不该处理的传递给下一个对象完成,明确各类的责任范围,符合类的单一职责原则。

其主要缺点是:

1)不能保证每个请求一定被处理。由于一个请求没有明确的接收者,所以不能保证它一定会被处理,该请求可能一直传到链的末端都得不到处理;

2)对于比较长的职责链,请求的处理可能涉及到多个处理对象,系统性能将受到一定影响;

3)职责链建立的合理性要靠客户端来保证,增加了程序的复杂性,可能会由于职责链的错误设置而导致系统出错,如:可能会造成循环调用。

3.答:通常在以下情况下可以考虑使用状态模式:1)当一个对象的行为取决于它

的状态,并且它必须在运行时刻根据状态改变它的行为时,就可以考虑使用状态模式;

2)一个操作中含有庞大的分支结构,并且这些分支决定于对象的状态时。

在有些情况下,可能有多个环境对象需要共享一组状态,这时需要引入享元模式,将这些具体状态对象放在集合中供程序共享,这就是共享状态模式。

4.答:观察者模式又叫做发布-订阅(Publish/Subscribe)模式、模型-视图

(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。

5.答:观察者模式是基于目标对象的状态发生变化,而促使观察者对象作出相应

操作的一种行为型模式。如,一个天气系统,当天气变化时,展示给公众的视图中会有所反映,这里的天气是目标,而视图是观察者。

6.答:中介者模式包含:抽象中介者(Mediator)角色、具体中介者

(ConcreteMediator)角色、抽象同事类(Colleague)角色、具体同事类

(ConcreteColleague)角色。

其结构图如下:

六、综合题

1.解:对于描述1)可以选择使用工厂方法模式,对于描述2)可以选择使用观察者模式,参考类图如下所示:

在类图中,HouseCreator是抽象房屋工厂类,其子类VilladomCreator用于创建别墅Villadom,子类ApartmentCreator用于创建公寓Apartment,Villadom和Apartment都是抽象房屋类House的子类,此时应用了工厂方法模式,如果增加新类型的房屋,只需对应增加新的房屋工厂类即可,原有代码无须做任何修改;House类同时作为抽象观察目标,子类Villadom和Apartment作为具体观察目标,相关人员类Stakeholder作为抽象观察者,其子类Manager(主管)作为具体观察者,实现了在Stakeholder中声明的response()方法,当房屋售出时,房屋的状态status将发生变化,在setStatus()方法中调用观察者的response()方法,即主管将收到相应消息,此时应用了观察者模式。

2.解:对于描述1)可以选择使用中介者模式,对于描述2)可以选择使用适配器模式,参考类图如下所示:

软考软件设计师必做练习题附答案

软考软件设计师必做练习题及答案 软件设计师考试属于全国计算机技术与软件专业技术资格考试(简称计算机软件资格考试)中的一个中级考试。考试不设学历与资历条件,也不论年龄和专业,考生可根据自己的技术水平选择合适的级别合适的资格,但一次考试只能报考一种资格。考试采用笔试形式,考试实行全国统一大纲、统一试题、统一时间、统一标准、统一证书的考试办法。下面是希 赛小编整理的软考软件设计师考前必做的练习题。 试题一分析 本题主要考查类图和顺序图。 【问题 1】 需要分析此门禁系统的体系结构,根据体系结构的描述来看什么数据放在什么类中最 为合适。题目中提到:系统中的每个电控锁都有一个唯一的编号。锁的状态有两种:“已锁住”和“未锁住”。所以Lock 中含有锁编号和锁状态这两个属性。又因为题中有:在主机 上可以设置每把锁的安全级别以及用户的开锁权限。只有当用户的开锁权限大于或等于锁的 安全级并且锁处于“已锁住”状态时,才能将锁打开。因此,Lock 中还有锁的安全级别。 【问题 2】 首先,( 1 )、( 2 )是 FingerReader和LockController之间的交互。所以我们看题 目中是如何描述他们的交互的。题目中有“指纹采集器将发送一个中断事件给锁控器,锁控器从指纹采集器读取用户的指纹”,所以(1)应填“中断事件”,( 2 )应填“读取指纹”。(3 )是主机与UserInfo的交互,从图2-35中可以看出,UserInfo中存储了用户的指纹信息和开锁权限,所以( 3 )应是从 UserInfo读取用户的指纹信息和开锁权限。(4)空应填“读取锁的安全级别”。( 5 )是 MainFrame向自己发送的一条消息,从题目中的“主 机根据数据库中存储的信息来判断用户是否具有开锁权限,若有且锁当前处于已锁住状态,

软件工程期末试题(含答案)解析

一、填空题(每空1分,共25分) 1.软件生存周期一般可以划分为,问题定义、可行性研究、需求分析、设计、编码、测试和运行 和维护。 2.基于软件的功能划分,软件可以划分成___系统软件_、支撑软件、应用软件__三种。 3.可行性研究,应从经济可行性、技术可行性、运行可行性、法律可行性和开放方 案可行性等方面研究。 4.系统流程图是描绘物理系统的传统工具。它的基本思想是用图形符号以黑盒子 形式描绘系统里面的每个部件 5.数据流图的基本四种成分:数据输入的源点和数据输出汇点、加工、数据流和数据存储文 件。 6.结构化分析方法是面向_数据流_进行需求分析的方法。结构化分析方法使用_数据流图DFD_与_ 数据字典_来描述。 7.继承性是自动地共享类、子类和对象中的方法和数据的机制。 8.软件详细设计工具可分为3类,即_图示工具_、_设计语言_和_表格工具_。 9.为了在软件开发过程中保证软件的质量,主要采取下述措施:_审查__、复查和管理复审、___ 测试_。 10.大型软件测试包括单元测试、集成测试、确认测试和系统测试四个步骤。 二、单项选择题(每小题2分,共20分) 1.软件设计中划分模块的一个准则是(C )。 A、低内聚低耦合 B.低内聚高耦合C.高内聚低耦合 D.高内聚高耦合 2.Jackson设计方法是由英国的M. Jackson提出的,它是一种面向( C )的软件设计方法。 A、对象 B.数据流 C.数据结构 D.控制结构 3.试判断下列叙述中,哪个(些)是正确的( C )。 a、软件系统中所有的信息流都可以认为是事务流 b、软件系统中所有的信息流都可以认为是变换流 c、事务分析和变换分析的设计步骤是基本相似的 A、a B、b C、c D、b和c 4.( A )是用户和设计交换最频繁的方法。 A、原型化方法 B、瀑布模型方法 C. 螺旋模型方法D、构件组装模型 5.软件工程方法学的目的是:使软件生产规范化和工程化,而软件工程方法得以实施的主要保证 是( C )。 A、硬件环境 B、软件开发的环境 C.软件开发工具和软件开发的环境 D、开发人员的素质 6.20世纪50年代以来,出现了许多不同的程序设计语言,下列语言中哪个语言是低级语言 ( D )。 A、PASCAL B、 VISUAL BASIC C. C++ D、汇编语言 7.软件测试的目的是?( D ) A、证明软件的正确性 B.找出软件系统中存在的所有错误 C.证明软件系统中存在错误 D.尽可能多的发现软件系统中的错误 8.使用白盒测试方法时,确定测试数据应根据( A )和指定的覆盖标准。 A、程序的内部逻辑 B、程序的复杂程度 C、该软件的编辑人员 D、程序的功能 9.软件维护工作的最主要部分是( C )。 A、校正性维护 B、适应性维护 C.完善性维护 D、预防性维护

2019年上半年软件设计师上午试题及答案

2019年上半年软件设计师上午试题及答案 1.计算机执行指令的过程中,需要由()产生每条指令的操作信号并将信号送往相应的部件进行处理,以完成指定的操作。 A.CPU的控制器 B.CPU的运算器 C.DMA控制器 D.Cache控制器 2.DMA控制方式是在()之间直接建立数据通路进行数据的交换处理。 A.CPU与主存 B.CPU与外设 C.主存与外设 D.外设与外设 3.CPU访问存储器时,被访问数据一般聚集在一个较小的连续存储区域中。若一个存储单元已被访问,则其邻近的存储单元有可能还要被访问,该特性被称为() A.数据局部性 B.指令局部性 C.空间局部性 D.时间局部性 4.某系统由3个部件构成,每个部件的千小时可靠度都为R,该系统的千小时可靠度为(1-(1-R)2)R,则该系统的构成方式是()。 A.3个部件串联

B.3个部件并联 C.前两个部件并联后与第三个部件串联 D.第一个部件与后两个部件并联构成的子系统串联 5.在()校验方法中,采用模2运算来构造校验位。 A.水平奇偶 B.垂直奇偶 C.海明码 D.循环冗余 6.以下关于RISC (精简指令系统计算机)技术的叙述中,错误的是()。 A.指令长度固定、指令种类尽量少 B.指令功能强大、寻址方式复杂多样 C.增加寄存器数目以减少访存次数 D.用硬布线电路实现指令解码,快速完成指令译码 7.()防火墙是内部网和外部网的隔离点,它可对应用层的通信数据流进行监控和过滤。 A.包过滤 B.应用级网关 C.数据库 D.WEB 8.下述协议中与安全电子邮箱服务无关的是()。 A.SSL

B.HTTPS C.MIME D.PGP 9-10.用户A和B要进行安全通信,通信过程需确认双方身份和消息不可否认。A 和B通信时可使用()来对用户的身份进行认证;使用()确保消息不可否认。 A.数字证书 B.消息加密 C.用户私钥 D.数字签名 A.数字证书 B.消息加密 C.用户私钥 D.数字签名 11.震网(Stuxnet)病毒是一种破坏工业基础设施的恶意代码,利用系统漏洞攻击工业控制系统,是一种危害性极大的()。 A.引导区病毒 B.宏病毒 C.木马病毒 D.蠕虫病毒 12.刘某完全利用任职单位的实验材料、实验室和不对外公开的技术资料完成了一项发明。以下关于该发明的权利归属的叙述中,正确的是()。

设计模式试卷

设计模式期中考试试题 一:单项选择(共20道,每道2分) 1、设计模式一般用来解决什么样的问题( ) A.同一问题的不同表相B不同问题的同一表相 C.不同问题的不同表相 D.以上都不是 2、下列属于面向对象基本原则的是( ) A.继承 B.封装 C.里氏代换D都不是 3、Open-Close原则的含义是一个软件实体( ) A.应当对扩展开放,对修改关闭. B.应当对修改开放,对扩展关闭 C.应当对继承开放,对修改关闭 D.以上都不对 4、当我们想创建一个具体的对象而又不希望指定具体的类时,可以使用()模式。 A.创建型 B.结构型C行为型D.以上都可以 5、要依赖于抽象,不要依赖于具体。即针对接口编程,不要针对实现编程,是( )的表述 A.开-闭原则 B.接口隔离原则 C.里氏代换原则 D.依赖倒转原则 6、设计模式的两大主题是( ) A.系统的维护与开发 B 对象组合与类的继承 C.系统架构与系统开发 D.系统复用与系统扩展 7、“不要和陌生人说话” 是( )原则的通俗表述 A.接口隔离 B.里氏代换 C.依赖倒转 D.迪米特:一个对象应对其他对象尽可能少的了解 8、构造者的的退化模式是通过合并()角色完成退化的。 A.抽象产品B产品C创建者D使用者 9、以下关于简单工厂模式叙述错误的是() A 它属于GoF23种设计模式 B 它是最简单的设计模式之一 C 它是学习其他创建型模式的基础 D 它只需要记住一个简单的参数即可获得所需对象的实例 E 它类中的方法通常为静态方法 F 它返回的类都有一个公共的父类和公共的方法 10、对象适配器模式是()原则的典型应用。 A.合成聚合复用原则 B.里式代换原则 C.依赖倒转原则 D.迪米特法则 D.以上表述全部错误。 11.对于依赖倒转的表述错误的是() A.依赖于抽象而不依赖于具体,也就是针对接口编程。 B.依赖倒转的接口并非语法意义上的接口,而是,一个类对其他对象进行调用时,所知道的方法集合。 C.从选项B的角度论述,一个对象可以有多个接口。 D.实现了同一接口的对象,可以在运行期间,顺利地进行替换。而且不必知道所示用的对象是那个实现类的实例。 E.此题没有正确答案。 12. 现有5个产品族,分布于3各不同的产品等级结构,只要指明一个产品所处的产品族以及它所在的等级结构,就可以唯一地确认这个产品。那么使用抽象工厂方法模式只需要提供

2019年软件设计师考试真题及答案

2019下半年软件设计师考试真题及答案-上午卷 1、在cpu内外常需设置多级高速缓存cache,主要目的是()。 A、扩大主存的存储容量 B、提高cpu访问主存数据或指令的效率 C、扩大存储系统的存量 D、提高cpu访问内外存储器的速度 答案:D(如果D中没有“内”则选B) 2、某系统的可靠性结构框图如下图所示,假设部件1、2、3的可靠度分别为;;(部件2、3为冗余系统)若要求该系统的可靠度不小于,则进行系统设计时,部件4的可靠度至少应为()。 答案:A 3、计算机运行过程中,进行中断处理时需保存现场,其目的是()。 A、防止丢失中断处理程序的数据 B、防止对其他程序的数据造成破坏 C、能正确返回到被中断的程序继续执行 D、能为中断处理程序提供所需的数据 答案:C 4、内存按字节编址,地址从A0000H到CFFFFH的内存,共存()字节,若用存储容量为64k*8bit的存储器芯片构成该内存空间,至少需要()片。 A、80k B、96 k C、160 k D、192 k A、2 B、3 C、5 D、8 答案:D、B 5、执行指令时,将每一节指令都分解为取指、分析和执行三步,已知取指时间t取指=5△t,分析时间t分析= 2△t.执行时间t执行= 3△t如果按照重叠的流水线方式执行指令,从头到尾执行完500条指令需()△t. A、2500 B、2505 C、2510 D、2515 答案:B 6、下列协议中,与电子邮箱服务的安全性无关的是() A、SSL B、HTTPS C、MIME D、PGP 答案:C

7、下列算法中,不属于公开密钥加密算法的是()。 A、ECC B、DSA C、RSA D、DES 答案:D 8、kerberos系统中可通过在报文中加入()来防止重放攻击。 A、会话密钥 B、时间戳 C、用户ID D、私有密钥 答案:B 9、某电子商务网站向CA申请了数字证书,用户可以通过使用()验证()的真伪来确定该网站的合法性。 A、CA的公钥 B、CA的签名 C、网站的公钥 D、网站的私钥 A、CA的公钥 B、CA的签名 C、网站的公钥 D、网站的私钥 答案:A、B 10、李某受非任职单位委托,利用该单位实验室实验材料和技术资料开发了一项软件产品,对该软件的权利归属,表达正确的是()。 A、该软件属于委托单位 B、若该单位与李某对软件的归属有特别的约定,则遵从约定;无约定的原则上归属于李某 C、取决于该软件是否属于单位分派给李某的 D、无论李某与该单位有无特别约定,该软件属于李某 答案:B 11、李工是某软件公司的软件设计师,每当软件开发完成均按公司规定申请软件著作权,该软件的著作权()。 A、应由李工享有 B、应由公司和李工共同享有 C、应由公司享有 D、除署名权以外,著作权的其他权利由李工享有 答案:C 12、某考试系统的部分功能描述如下,审核考生报名表,通过审核的考生登录系统,系统自动为其生成一套试题,考试中心提供标准答案,问卷老师问卷,提交考生成绩,考生查看自己的成绩。若用数据流图对该系统进行建模,则()不是外部实体。. A、考生 B、考试中心 C、问卷老师 D、试题

软件设计与体系结构期中考试试卷

安徽师范大学 2015-2016 学年 第一学期 数学计算机科学学院软件工程专业2013级《软件设计与体系结构》课程期中考试试卷 (180分钟 闭卷) 注意:请保持字迹工整 一、单选题(10小题,每小题2分,共20分) 1、下面哪种开发方法是非传统方法( ) A 、功能分解法 B 、结构化方法 C 、面向对象方法 D 、信息建模方法 2、下面那一项不属于用况图中的参与者( ) A 、人员 B 、内部系统 C 、外部系统 D 、设备 3、对象间的is-a 关系可以用以下哪一个来表示( ) A 、组合 B 、聚合 C 、关联 D 、继承 4、只与你的直接朋友通信描述的哪一个设计原则( ) A 、单一职责原则 B 、开闭原则 C 、接口隔离原则 D 、迪米特法则 5、一个软件实体应该对扩展开放,对修改关闭。这描述的是哪个原则( ) A 、单一职责原则 B 、开闭原则 C 、依赖倒置原则 D 、里氏代换原则 6、常用的基本设计模式可分为( ) A 、创建型、结构型和行为型 B 、对象型、结构型和行为型 C 、过程型、结构型和行为型 D 、抽象型、接口型和实现型 7、对于类图,下列叙述正确的是( ) A 、创建类图是为了对系统的动态结构进行建模 B 、在系统分析和实施阶段可以创建和使用类图 C 、每个类图都应该具有泛化关系 D 、以上说法都不对 8、类与类之间存在相互关系,下面哪一种关系与其他三种不同( ) A 、双向关联 B 、聚合关系 C 、组合关系 D 、依赖关系 9、Open-Close 原则的含义是一个软件实体( ) A 、应当对扩展开放,对修改关闭. B 、应当对修改开放,对扩展关闭 C 、应当对继承开放,对修改关闭 D 、应当对继承关闭,对修改开放 10、当需要对系统功能以及与系统进行交互的外部事物进行建模时,我们一般采用( ) A 、用况图 B 、类图 C 、活动图 D 、顺序图 二、简答题(4小题,每小题5分,共50分) 1、OOA 中问题域和系统责任的含义分别是什么意思? 2、OOD 模型中总共包含几个部分,分别是哪几个部分,哪个部分是核心部分?

下半年软件设计师下午试题以及标准答案

2014年下半年软件设计师下午试题 试题:i 阅读下列说明和图,回答问题1至问题3,将解答填入答题纸的对应栏内。 【说明】 某大型披萨加工和销售商为了有效管理生产和销售情况,欲开发一披萨信息系统,其主要功能如下: (1)销售。处理客户的订单信息,生成销售订单,并将其记录在销售订单表中。销售订单记录了订购者、所订购的披萨、期望的交付日期等信息。 (2 )生产控制。根据销售订单以及库存的披萨数量,制定披萨生产计划(包括生产哪些披萨、生产顺序和生产量等),并将其保存在生产计划表中。 (3)生产。根据生产计划和配方表中的披萨配方,向库存发岀原材料申领单,将制作好的披萨的信息存入库存表中,以便及时进行交付。 (4)采购。根据所需原材料及库存量,确定采购数量,向供应商发送采购订单,并将其记录在采购订单表中;得到供应商的供应量,将原材料数量记录在库存表中,在采购订单表中标记已完成采购的订单。 (5)运送。根据销售订单将披萨交付给客户,并记录在交付记录表中。 (6 )财务管理。在披萨交付后,为客户开具费用清单,收款并岀具收据;依据完成的采购订单给供应商支付原材料费用并岀具支付细节;将收款和支付记录存入收支记录表中。 (7)存储。检查库存的原材料、拔萨和未完成订单,确定所需原材料。 现采用结构化方法对披萨信息系统进行分析与设计,获得如图1-1所示的上下文数据流图和图1-2所示 的0层数据流图。 图1-1上下文数据流图

【问题1】(4分) 根据说明中的词语,给岀图【问题2】(5分) 根据说明中的词语,给岀图【问题3】(6分)1-1中的实体E1?E2的名称。 1-2中的数据存储D1?D5的名称。 图1-2 0层数数据流图 根据说明和图中词语,补充图1-2中缺失的数据流及其起点和终点

软件设计与体系结构期末复习整理解读

1面向对象编程中是如何体现封装性的? 封装是把过程和数据包围起来,对数据的访问只能通过已定义的界面。 2重载和重写的含义 重载是发生在一个类中,方法名相同,参数不同 重写(覆盖)是子类继承父类,子类可以通过重写的方法隐藏继承的方法 3 什么是接口回调,过程细节是什么? 概念:把可以实现某一接口的类创建的对象的引用赋给该接口声明接口变量,那么该接口变量可以调用被类实现(重写)的接口方法。 4试举例说明什么是组合关系和依赖关系 组合(关联)关系:A类中成员变量是用B类声明的对象。公司--职员 依赖关系:A类中某个方法的参数是用B类声明的对象,或某个方法返回的数据类型是B类的对象 5抽象类和接口,区别是什么?如何应用 抽象类:抽象类中有抽象方法;抽象类中不能用new运算符创建对象;抽象类的对象做商转型对象 接口:(1)接口中只可以有public权限的抽象方法,不能有非抽象方法; (2)接口由类去实现,即一个类如果实现一个接口,那么他必须重写接口中的抽象方法 (3)接口回调 区别:接口中只有常量,不能有变量;抽象类中既可以有常量也可以有变量; 抽象类中也可以有非抽象方法,接口不可以。 应用:定义抽象方法:public abstract void 方法名(); 在子类实现抽象方法:public void 方法名(){} 接口:public interface 接口名{}接口只负责定义规则,不负责任何实现;实现交给实现接口的类 (6)面向对象的六条基本原则包括: 开闭原则,里式代换原则,单一职责,依赖倒转、迪米特法则(接口隔离)。 (7)什么是设计模式? 设计模式是从许多优秀的软件系统中总结出的成功的可复用的设计方案。是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性 (8)什么是框架?框架与模式的区别有哪些? 框架是针对某个领域,提供用于开发应用系统的类的集合。 区别:层次不同、范围不同、相互关系

软件设计模式试题集 含答案

设计模式试题 一.选择 1. 设计模式具有的优点()。 A.适应需求变化 B.程序易于理解 C.减少开发过程中的代码开发工作量 D.简化软件系统的设计 2. 设计模式一般用来解决什么样的问题( )。 A.同一问题的不同表相 B 不同问题的同一表相 C.不同问题的不同表相 D.以上都不是 3. 设计模式的两大主题是( )。 A.系统的维护与开发 B.对象组合与类的继承 C.系统架构与系统开发 D.系统复用与系统扩展 4. 以下哪些问题通过应用设计模式不能够解决。() A)指定对象的接口B)针对接口编程 C)确定软件的功能都正确实现D)设计应支持变化 二.填空 1. 模式的基本要素包括名称、意图、问题、解决方案、参与者和协作者、(效果)、实现、GoF 参考。 2. 设计模式基本原则包括:开闭原则,(从场景进行设计的原则),包容变化原则。 3. 设计模式是一个(抽象)的方案,它可以解决一类问题。 4. 1. 在设计模式群体中,效果是指(原因和结果)。三. 判断 1. 适配器模式属于创建型模式。错 2. 在设计模式中,“效果”只是指“原因和结果”。对 3. 设计模式使代码编制不能真正工程化。错 4. 设计模式的两大主题是系统复用与系统扩展。对四. 名词解释 1. 设计模式 是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 2. 模板 模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 3. 模式 就是解决某一类问题的方法论。把解决某类问题的方法总结归纳到理论高度,那就是模式。 4. 内聚度 模块内部各成分彼此结合的紧密程度。五.简答 题 1. 什么是设计模式?设计模式的目标是什么?设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码 设计经验的总结。使用设计模式是为了可 重用代码、让代码更容易被他人理解、保证代码可靠性。 2. 设计模式的基本要素有哪些? 名称,意图,问题,解决方案,参与者和协作者,效果,实现,GOF 参考。 3. 设计模式中一般都遵循的原则有什么? 开-闭原则,根据场景进行设计原则,优先组合原则,包容变化原则。 4. 四人团针对“创建优秀面向对象设计”建议了哪些策略? 针对接口编程,优先使用对象组合而不是类继承,找到并封装变化点。 第6 章 facade(外观)模式 一.选择 1. 外观模式的作用是()。A.当不能采用生成子类的方法进行扩充时,动态地给一个对象添加一些 额外的功能。B.为了系统中的一组功能调用提供一个一致的接口,这个接口使得这一子系统更 加容易使用。

东北大学《软件设计模式》期末考试必备真题集(含答案)93

东北大学继续教育学院 软件设计模式复习题 一:单选题 1.在c#程序中,入口函数的正确声明为:B A. static int main(){…..} B. static void Main(){……} void main(){……} Main(){……} 2.在C#中,表示一个字符串的变量应使用以下哪条语句定义?B A. CString str; B. string str; C. Dim str as string D. char * str; 3.结构化程序设计的3种结构是:D A. 顺序结构、if结构、for结构

B. if结构、if…else结构、else if结构 C. while结构、do…while结构、foreach结构 D. 顺序结构、分支结构、循环结构 4.能正确表示逻辑关系“a>=10 或a<=0”的C#语言表达式是____。D A. a>=10 or a<=0 B. a>=10|a<=0 C. a>=10&&a<=0 D. a>=10||a<=0 5.在类的外部可以被访问的成员是:A A. public成员 B. private成员 C. protected成员 D. protected internal成员 6.在定义类时,如果希望类的某个方法能够在派生类中进一步进行改进,以处理不同的派生类的需要,则应将该方法声明成_________。C A. sealed 方法 B. public 方法 C. visual 方法 D. override 方法 7.关于结构类型,下列说法哪些是正确的?A A. 结构是值类型 B. 结构中不允许定义带参数的实例构造函数; C. 结构中不允许定义析构函数 D. 结构中可以定义成员方法,但是方法内不能使用this 指针 8.下面是几条动态初始化二维数组的语句,指出其中正确的:D A. int arr5[][]=new int[4,5]; B. int[][] arr6 = new int[4, 5]; C. int arr7[,]=new int[4,5]; D. int[,] arr8=new int[4,5]; 9.下面有关析构函数的说法中,不正确的是:D

软件建模和设计试题

一.名词解释: 1.在软件工程中,对客观世界的问题领域进行抽象,并用某描述方法表示的结果称为模型。模型是现实系统的简化,它是抓住现实系统的主要方面而忽略次要方面的一种抽象,是对问题的书面上的、图形或文字的、无歧义的描述。人们常常在正式构造实物之前,首先建立一个简化的模型,以便更透彻地了解它的本质,抓住问题的要害。在模型中,人们总是剔除那些与问题无关的、非本质的东西,从而使模型与真实的实体相比更加简单、易于把握。 https://www.doczj.com/doc/0a19142734.html,e Case(用例):在不展现一个系统或子系统内部结构的情况下,对系统或子系统的某个连贯的功能单元的定义和描述。一个Use Case表达了用户对系统的一项需求,也就是系统的一项责任或功能。 3.架构风格指一组原则。可以把它看成是一组为系统家族提供抽象框架的粗粒度模式。架构风格能改进分块,还能为频繁出现的问题提供解决方案,以此促进设计重用。软件体系架构风格是描述某一特定应用领域中系统组织方式的惯用模式。体系架构风格定义了一个系统家族,即一个体系架构定义一个词汇表和一组约束。词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。体系架构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。对软件体系结构风格的研究和实践促进对设计的重用,一些经过实践证实的解决方案也可以可靠地用于解决新的问题。例如,如果某人把系统描述为“客户/服务器”模式,则不必给出设计细节,我们立刻会明白系统是如何组织和工作的。 4.类(Class)是对某种类型的对象定义变量和方法的原型。它表示对现实生活中一类具有共同特征的事物的抽象,是面向对象编程的基础。类是对某个对象的定义。它包含有关对象动作方式的信息,包括它的名称、方法、属性和事件。类通过接口与外界发生关系。 5.软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。是建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本和改进算法。其中,计算机科学、数学用于构建模型与算法,工程科学用于制定规范、设计范型(paradigm)、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。 二、 1.面向对象建模的大致过程如下: 用UML进行面向对象建模首先要描述总体需求。在这一阶段中主要是建立用例模型和静态模型,以搭建系统体系结构。用例图是系统的高级视图,要求按照面向对象的原则,站在功能划分的角度将系统要实现的行为划分为用例;以用例之间的动态交互及交互时间为依据产生顺序图;接下来就在用例图的基础上抽象出系统的类,明确各模块之间的关系以适当的粒度画出类图,其中也包括了与用例图的相互迭代修改在分析完模块的静态交互关系后继而要绘制出构件图。以上这些过程中均不考虑系统的具体实现,如建立什么样的数据库或采用什么语言编码等,最好是以使用者的眼光去分析系统功能。为建立完整的系统模型,还要对模块交互和构件细节做进一步分析,补充状态图、活动图、协作图和实施图等,从尽可能多的角度对复杂系统进行描述。在模型确定后就可以借助相应的支撑软件将模型导出为

软件工程(清华钱乐秋版)期末复习重点

1、什么是软件工程 在《计算机科学技术百科全书》中软件工程是应用计算机科学、数学及管理科学等原理,开发软件的工程。 2、软件生存周期分哪几个阶段分别简述各个阶段的任务。 答:软件生存周期有计算机系统工程、需求分析、设计、编码、测试、运行和维护6个阶段。 A 计算机系统工程的任务是确定待开发软件的总体要求和范围,以及该软件与其他计算机 系统元素之间的关系,进行成本估算,做出进度安排,并进行可行性分析,即从经济、技术、法律等方面分析待开发的软件是否有可行的解决方案,并在若干个可行的解决方案中做出选择。 B 需求分析主要解决待开发软件要“做什么”的问题,确定软件的功能、性能、数据、界面 等要求,生成软件需求规约。 C 软件设计只要解决待开发软件“怎么做”的问题。软件设计通常可分为系统设计和详细设 计。系统设计的任务是设计软件系统的体系结构,包括软件系统的组成成分、各成分的功能和接口、成分间的连接和通信,同时设计全局数据结构。详细设计的任务是设计各个组成成分的实现细节,包括局部数据结构和算法等。 D 编码阶段的任务是用某种程序设计语言,将设计的结果转换为可执行的程序代码。 E测试阶段的任务是发现并纠正软件中的错误和缺陷。测试主要包括单元测试、集成测试、确认测试和系统测试。 F软件完成各种测试后就可交付使用,在软件运行期间,需对投入运行的软件进行维护,即可发现了软件中潜藏的错误或需要增加新的功能或使软件适应外界环境的变化等情况出现时,对软件进行修改。 3、简述各类软件过程模型的特点。 答:典型的软件过程模型有:瀑布模型、演化模型(增量模型、原型模型、螺旋模型)、喷泉模型、基于构件的开发模型和形式方法模型等。 A瀑布模型中,上一阶段的活动完成并经过评审后才能开始下一阶段的活动,其特征是: 接受上一阶段活动的结果作为本阶段活动的输入; 依据上一阶段活动的结果实施本阶段应完成的活动; 对本阶段的活动进行评审; 将本阶段活动的结果作为输出。 B 增量模型将软件的开发过程分成若干个日程时间交错的线性序列,每个线性序列产生软 件的一个可发布的增量版本,后一个版本是对前一个版本的修改和补充,重复增量发布的过程,直至产生最终的完善产品。 C 原型方法从软件工程师与客户的交流开始,其目的是定义软件的总体目标,标识需求。 然后快速制定原型开发的计划,确定原型的目标和范围,采用快速设计的方式对其建模,并构建模型。被开发的原型应交付给客户使用,并收集客户的反馈意见,这些反馈意见可在下

软件设计模式(JAVA)习题答案

软件设计模式(Java版)习题 第1章软件设计模式基础 1.1 软件设计模式概述 1.2 UML中的类图 1.3 面向对象的设计原则 一、名词解释 1.一个软件实体应当对扩展开放,对修改关闭,即在不修改源代码的基础上扩展 一个系统的行为。 2.一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。 3.在软件中如果能够使用基类对象,那么一定能够使用其子类对象。 4.是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结, 使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 二、单选择题 1.( A ) 2.( A ) 3. ( A ) 4. ( D ) 5. ( D ) 6.( A ) 7. ( D ) 8.( D ) 9.( D ) 10.( E ) 11.( C ) 12.( C ) 13. ( A ) 三、多选择题 1.( A、B、C、D ) 2. ( A、B ) 3.( A、D ) 4.( A、B、C、D ) 四、填空题 1.依赖倒转、迪米特法则、单一职责 2.模式名字、目的、问题、解决方案、效果、实例代码 3.超类、子类 4.开闭 5.用户 6.依赖倒转 7.组合/聚合 8.结构型、行为型 9.依赖倒转 10.开闭 11.需求收集是否正确、体系结构的构建是否合理、测试是否完全 12.人与人之间的交流 13.接口 14.名称、目的、解决方案 15.对象组合、类继承

16.对象组合 17.对象组合、类继承 18.抽象类的指针 五、简答题 1.答:设计模式按类型分为以下三类: 1)创建型设计模式:以灵活的方式创建对象集合,用于管理对象的创建。 2)结构型设计模式:将己有的代码集成到新的面向对象设计中,用于处理类或对象的组合。 3)行为型设计模式:用于描述对类或对象怎样交互和怎样分配职责。 2.答:设计模式的主要优点如下: 1)设计模式融合了众多专家的经验,并以一种标准的形式供广大开发人员所用,它提供了一套通用的设计词汇和一种通用的语言以方便开发人员之间沟通和交 流,使得设计方案更加通俗易懂。 2)设计模式使人们可以更加简单方便地复用成功的设计和体系结构,将已证实的技术表述成设计模式也会使新系统开发者更加容易理解其设计思路。设计模式使得重用成功的设计更加容易,并避免那些导致不可重用的设计方案。 3)设计模式使得设计方案更加灵活,且易于修改。 4)设计模式的使用将提高软件系统的开发效率和软件质量,且在一定程度上节约设计成本。 5)设计模式有助于初学者更深入地理解面向对象思想,一方面可以帮助初学者更加方便地阅读和学习现有类库与其他系统中的源代码,另一方面还可以提高软件的设计水平和代码质量。 3.答:设计模式一般有如下几个基本要素:模式名称、问题、目的、解决方案、效 果、实例代码和相关设计模式,其中的关键元素包括模式名称、问题、解决方案和效果。 4.答:正确使用设计模式具有以下优点: ⑴可以提高程序员的思维能力、编程能力和设计能力。 ⑵使程序设计更加标准化、代码编制更加工程化,使软件开发效率大大提高,从 而缩短软件的开发周期。 ⑶使设计的代码可重用性高、可读性强、可靠性高、灵活性好、可维护性强。 5.答:根据类与类之间的耦合度从弱到强排列,UML中的类图有以下几种关系:依赖关 系、关联关系、聚合关系、组合关系、泛化关系和实现关系。其中泛化和实现的耦合度相等,它们是最强的。

软件设计模式试题集58887

第5章设计模式 一.选择 1. 设计模式具有的优点()。 A.适应需求变化 B.程序易于理解 C.减少开发过程中的代码开发工作量 D.简化软件系统的设计 2. 设计模式一般用来解决什么样的问题( )。 A.同一问题的不同表相B不同问题的同一表相 C.不同问题的不同表相 D.以上都不是 3. 设计模式的两大主题是( )。 A.系统的维护与开发 B 对象组合与类的继承 C.系统架构与系统开发 D.系统复用与系统扩展 4. 以下哪些问题通过应用设计模式不能够解决。() A)指定对象的接口B)针对接口编程 C)确定软件的功能都正确实现D)设计应支持变化 解答: 1. A 2. A 3. D 4. C 二.填空 1. 模式的基本要素包括名称、意图、问题、解决方案、参与者和协作者、()、实现、G oF参考。 2. 设计模式基本原则包括:开闭原则,(),包容变化原则。 3. 设计模式是一个( )的方案,它可以解决一类问题。 4. 1. 在设计模式群体中,效果是指()。 解答: 1. 效果 2. 从场景进行设计的原则

3. 抽象 4. 原因和结果 三.判断 1. 适配器模式属于创建型模式。 2. 在设计模式中,“效果”只是指“原因和结果”。 3. 设计模式使代码编制不能真正工程化。 4. 设计模式的两大主题是系统复用与系统扩展。 解答: 1. 错 2. 对 3. 错 4. 对 四.名词解释 1. 设计模式 2. 模板 3. 模式 4. 内聚度 解答: 1. 是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性 2. 模式定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 3. 就是解决某一类问题的方法论。把解决某类问题的方法总结归纳到理论高度,那就是模式。 4. 五.简答题 1. 什么是设计模式?设计模式的目标是什么?

《软件工程》期末考试题及答案++精华版!!

《软件工程》期末考试样题 一、填空题 1.软件开发模型有(瀑布模型)(螺旋模型)第四代技术模型(原型模型)构件组装模型、混合模型。 2.可行性研究一般可以从(经济)可行性、(技术)可行性、运行可行性、法律可行性和开发可行性等方面来研究。 3.现在向银行存款,年利率为i,若希望在n年后从银行得到F元,现在应该存入的钱数为(F/(1+i)n)。 4.数据流图的基本符号包括(数据输入的源点和数据输出的汇点)、(加工)、(数据流)、(数据存储文件)。 5.Jackson图除了可以表达程序结构外,还可以表达(数据结构),它首先要分析(数据结构),并用适当的工具来描述。 6.详细设计的工具有图形工具)、表格工具和(语言工具)。 7.IPO图由(输入)、处理和(输出)三个框组成。这个图的特点是能够直观的显示三者之间的关系。 8.面向对象技术是一整套关于如何看待(软件系统)和(现实世界)的关系,以什么观点来研究问题并进行分析求解,以及如何进行系统构造的软件方法学。面向对象方法是一种运用(对象)、(类)、(继承)、(封装)、聚集、消息传送、多态性等概念来构造系统的软件开发方法。 二、单项选择题 1.下列( A )属于系统软件。 A.WINDOWS 2000 B.Word C.Flash D.3D MAX 2.下列哪个图是N-S图的构件( C )。 A. B. C. D. 3.对于螺旋模型,下列( D )不是利用笛卡尔坐 标表达的活动。 A. 制定计划 B. 实施工程 C. 风险分析 D. 程序编码 三、多项选择题 1.软件危机可以表现为(ABXD )。 A.产品不符合用户的需要 B.软件产品的质量差 C.软件的可维护性差 D.软件的价格昂贵 2.Jackson图中一般可能包括(ABCD )。 A.表头 B.表体 C.表名 D.字段名 3.关于内容耦合的描述正确的是(AD )。 A、内容耦合是最高程度的耦合 B、应该尽量使用内容耦合 C、高级语言一般设计成允许内容耦合的形式 D、如果一个模块有多个入口,可能发生内容耦合 4.下列属于不标准的书写格式(BCD )。 A、书写时适当使用空格分隔 B、一行写入多条语句 C、嵌套结构不使用分层缩进的写法 D、程序中不加注释 四、判断题(正确的在括号内打上“√”,错误的打上“×”) 1.软件生存周期是从软件开始开发到开发结束的整个时 期。() 2.系统流程图是一个典型的描述逻辑系统的传统工具。 () 3.数据流图和数据字典共同构成系统的逻辑模型。 (1) 4.扇出是一个模块直接调用的模块数目,一般推荐的扇出 为3或4。( 1 ) 5.耦合用于衡量一个模块内部的各个元素彼此结合的紧 密程度。()

吉林大学2012级软件设计模式试题

2014-2015学年第1学期 2012级《软件设计模式》考试试题(开卷) 考试时间:2014年 班级学号姓名 ?本试卷满分100分; ?请将答案写在答题纸上,写明题号,不必抄题,字迹工整、清晰; ?试题中使用C++语言作为描述语言,答题时可以使用C++或Java或C#程序设计语言中 的任意一种作为描述语言,但整个卷面只能使用其中一种,不得混合使用; ?请在答题纸和试题纸上都写上你的班级,学号和姓名,交卷时请将试题纸、答题纸和草纸 一并交上来。 一、单选题(共20分,每题2分) 1.类设计中,“变化是绝对的,稳定是相对的”,下列哪个不属于这句话中“变化”的范畴? (A) 改变函数参数的类型(B) 增加新的数据成员 (C) 改变编程语言(D) 改变对象交互的过程和顺序 2.Open-Close原则的含义是一个软件实体: (A) 应当对扩展开放,对修改关闭 (B) 应当对修改开放,对扩展关闭 (C) 应当对继承开放,对修改关闭 (D) 以上都不对 3.下列关于继承表述错误的是: (A) 继承是一种通过扩展一个已有类的实现,从而获得新功能的复用方法 (B) 泛化类(超类)可以显式地捕获那些公共的属性和方法。特殊类(子类)则通过附加 属性和方法来进行实现的扩展 (C) 破坏了封装性,因为这会将父类的实现细节暴露给子类 (D) 继承本质上是“白盒复用”,对父类的修改,不会影响到子类 4.下列关于对象组合/聚合,说法错误的是: (A) 容器类能通过被包含对象的接口来对其进行访问 (B) 属于黑盒复用,封装性好,因为被包含对象的内部细节对外是不可见 (C) 可以在运行时将被包含对象改变成同类型对象,从而改变容器类的行为效果,但没有 改变容器类的接口 (D) 比继承关系更加灵活,代价是相比继承关系,增强了类间的耦合度 5.用于分离接口和具体实现,使得接口和实现可独立变化的是: (A)适配器模式(B) 桥接模式(C) 命令模式(D)模板方法模式 6.体现“集中管理多个对象间的交互过程和顺序”的是: (A)生成器模式(B) 门面模式(C) 策略模式(D)中介者模式

软件设计师试题(带答案)

烟台市“东方杯”计算机软件技能竞赛(试题共11页) 2007年月日软件设计师 (考试时间14:00~16:00共120 分钟) 请按下述要求正确填写答题纸 1.将问题答案写在答题纸上,并在指定位置填写准考证号和姓名。 2.答题纸上除填写上述内容外只能写解答。 3.本试卷总分75分,共包括两部分,第一部分为综合知识测试,共45分;第二部分,包括三个题目,共30分。 4.解答时字迹务必清楚,字迹不清时,将不评分。

第一部分:单向选择(每题1分共45分) 试题1、2 某机主存容量为16MB ,cache 容量为16KB ,主存与cache 每块都分为16B 主存与cache 地址变换采用直接映像方法。这种映像方法优点是算法简单,缺点是 (1) 。若访问主存单元为B4AF45H ,而且该单元已经装入cache,则cache 的地址是 (2) 。 供选择的答案: (1)、 A: 转换方法复杂 B: 转换速度较慢 C: cache 利用不充分 D: 转换方法不直观 (2)、 A: 34AFH B: 2F45H C: 4AF5H D: B4AFH 试题3、4 某计算机字长为32位,浮点表示时,阶码占8位,尾数占24位(各包含1位符号位),阶码用补码表示,尾码用原码表示,该浮点数能表示的最大正数是 (3) ,能表示的最小负数是 (4) 。 供选择的答案: (3)、A: ( )23 7122--? B: ()()2371221--?- C: ( )24 7 12 21--?- D: ()237122---? (4)、A: ( )23 7 122 ---? B: ( )()23 7 12 2 1--?- C: ( )24 7 122 --? D: ( )()23 7 12 21---?- 试题5、6 可维护性是评价软件质量的重要方面,系统的可维护性通常包括 (5) , (6) 维护是为了扩充软件的功能或提高原有软件的性能而进行的维护活动。 供选择的答案: (5)、 A: 可用性和可理解性 B:可修改性、数据独立性和数据一致性 C:可测试性和稳定性 D:可理解性、可修改性和可测试性 (6)、 A:改正性 B:完善性 C:适应性 D:合理性 试题7、8 形式语言是使用来描述模块具体 (7) 的非正式的比较灵活的语言,有点是接近 (8) 供选择的答案: (7)、 A:算法 B:结构 C:行为 D:状态 (8)、 A: 机器语言 B:汇编语言 C:高级语言 D:自然语言

最新软件工程期末考试题

41.软件是一种产品。 A.物质 B. 逻辑√ C. 工具 D. 文档 2.软件产品的生产主要___ _ _。 A. 研制√ B. 再生产 C. 开发 D. 生产 3.软件工程是一门__ _学科。 A. 工程性 B. 原理性 C. 综合性√ D. 理论性 4.类是面向对象方法中的一个重要概念,类的描述分为:名称、和操作。 A. 角色 B. 用例 C. 方法 D. 属性√ 5.下列描述中正确的是___ __。 A.软件工程的主要是解决软件开发中的技术问题 B.软件工程主要解决软件产品的生产率问题 C.软件工程的主要思想是强调在软件开发过程中需要运用工程化的原则√ D.软件工程只是解决软件项目的问题. 6.需求分析最终结果是产生。 A.项目开发计划B.可行性分析报告C.设计说明书D.需求分析说明书√7.需求分析中,开发人员要从用户那里解决最重要的问题是。 A.要让软件做什么√B.要给软件提供哪些信息 C.要求软件工作效率怎样D.要让该软件具有何种结构 8.分层DFD是一种比较严格又易于理解的描述方式,它的顶层图描述了系统的。 A.软件的作者B.输入与输出√C.细节D.绘制的时间 9.数据字典中,一般不包括条目。 A.源点与终点√B.数据存储C.数据流D.加工 10.软件需求分析是保证软件质量的重要步骤,它的实施应该是在。 A.编码阶段B.软件设计阶段√C.软件定义过程D.软件开发全过程11.软件的主要功能和结构是在阶段确定的。 A.测试B.编程C.分析设计√D.维护 12.需求分析最终结果是产生。 A.需求分析说明书√B.可行性分析报告C.项目开发计划D.设计说明书 13.可行性研究主要从方面进行研究。 A.技术可行性,经济可行性,操作可行性B.经济可行性,系统可行性,时间可行性 C.经济可行性,系统可行性,操作可行性D.技术可行性,经济可行性,社会可行性√ 14.可行性分析研究的目的是。 A.项目值得开发与否√B.开发项目C.争取项目D.规划项目 15.需求分析中开发人员要从用户那里了解。 A.输入的信息B.用户使用界面C.软件做什么√D.软件的规模 16.需求分析阶段研究的对象是。 A.软硬件要求B.系统要求C.分析员要求D.用户需求√ 17.系统流程图用于可行性分析中的的描述。 A.目标系统B.当前逻辑模型C.当前运行系统√D.新系统 18.数据字典是用来定义中的各个成分的具体含义的。

相关主题
文本预览
相关文档 最新文档