习题
第1章面向对象方法概论
1、与传统开发方法相比,面向对象方法有什么优点?
2、查阅资料,进一步讨论UML与面向对象方法的关系。
3、封装的目的是什么?在面向对象方法中封装的目的是如何达到的?
4、针对你过去使用传统开发方法所建造的系统的不足,总结一下问题的原因。考虑如果使
用面向对象方法,在哪些方面可能会获益。
5、面向对象方法的一个主要原则是抽象。思考一下在工作和学习中你经常在什么场合下运用抽象原则。
第2章什么是面向对象分析
1、简述OOA模型及OOA过程。
2、为什么要进行OOA?
3、简述问题域与系统责任间的关系。
4、OOA是如何应对需求变化性的?
5、为什么把用类图构建的模型称为基本模型?
6、你对本章讲述的分析面临的主要问题有过什么实际感受?请举例说明。
第3章建立需求模型——用况图
1、用况之间的关系可为包含关系、扩展关系或继承关系,三种关系之间有相同之处吗?它
们之间的区别又在哪?
2、论述用况图在面向对象方法中的地位。
3、怎样理解把系统内外的交互情况描述清楚了,就明确了系统边界?
4、对于3.3.1节中的收款用况,补充用信用卡付款和使用优惠卡的描述。
5、通常自动售货机会按用户的要求进行自动售货,供货员会巡查向其内供货,取款员会定
时取款。针对上述要求,请建立用况图,并描述各个用况。
6、现要开发一个购书积分系统,其中至少要具有申请积分卡、增加积分、查看积分和按积
分奖励功能。请建立用况图,并描述各个用况。
第4章建立类图
1、论述类与对象之间的关系以及关联与链之间的关系。这四者之间还有什么联系吗?
2、在什么情况下使用组合关系进行建模?
3、总结继承关系的用途。
4、图4-44表明,一名教师可以在一个或多个系中任职,而且在二者间使用的是聚合关系。在二者间可以使用组合关系吗?请解释原因。
5、举例说明类继承结构中的重载与多态。
6、面包是由面包片组成的。面包与面包片之间的关系是聚合还是组合?
7、一本书含有若干章,一章有若干节,一节由一些段落和图组成,一个段落由一些句子组成。请给出一个描述上述事物以及它们之间关系的类图。
8、请指出下图中存在的问题,并进行改正。
9、有的房间是立方体的,有的是圆柱体的。根据这样的说法,现给出了一个类图,请指出其中存在的问题,并进行改正。
10、解释如下类图的含义。
11、下面的左图描述的结构是一个在一些文献中称之为容器的示例。与集合管理器(参见图4-39)不同的是,容器不负责创建对象。右图是一个较为复杂的容器示例,请体会其含义。
12、仿照集合管理器(参见图4-39),建立一张类图,用其描述管理一组对象的容器。
13、在商店里购物,要在买卖双方发生交易关系。请使用关联类建立一张类图,然后再把关联类转化为普通类。
14、体会如下两个图的含义,并分别给出实际的例子。
15
16
17、为火车票预定系统建立类图。具体的需求为:预定某一车次的车票,包括具体的时间和座位;在预定后,顾客必须在一定的时间内购票,否则预定无效;旅行社和火车售票处均可进行预定业务。
18、针对自行车,建立一个简单的类图。
19、针对下述问题,建立一个类图:有两种顾客,一种是常客,享受公司的一些优惠待遇;
另一种是散户。
20、对于你所学习过的课程,建立类图。课程所属于的科目是不同的,而且有些课程需在某
些先修课程之后开设。
21、针对无向图和有向图分别建立类图。
第5-7章
1、在什么情况下要建立顺序图?
2、使用信用卡可以在AMT机上进行取款。针对一次取款,建立顺序图。注意ATM机是与
银行连网的。
3、几台计算机公用一台打印机,打印机由一台打印服务器管理。请按这些要求,建立顺序
图。
4、在什么情况下要建立状态机图?
5、状态机图中一定要有终止状态吗?请举例说明。
6、总结状态机图中的事件的种类。
7、在一个继承结构中,一般类与特殊类的状态机图相同吗?请解释原因。
8、为一个只有两个按钮的简易电子手表建立状态机图。一个按钮用于选择显示时间和设置时间,一个按钮用于增减时间。时间包括小时、分和秒。
9、把AMT机作为一个类,建立状态机图。
10、针对简易电梯,建立状态机图。
11、在图书馆中,购入的书在半个月内为新书,以后为旧书。书无论新旧,都可以向外借阅。针对上述要求建立状态机图。
12、状态机图中的内部转移与外部转移有什么不同?
13、几台计算机公用一台打印机,打印机由一台打印服务器管理,请建立通信图。
14、说明活动图中的分支与合并以及分岔与汇合的作用。
15、针对在商场购物,请建立活动图。
16、为什么要使用包?怎样划分包?请回答这两个问题。
17、若干包组织的是类图,且两个包之间有引入依赖,那么不同包中的类之间的可以有关系吗?举例说明。
18、针对开发一个小程序的过程,建立一个活动图。
19、针对第4章的4.3.2中的例题3 集合管理器,建立顺序图。20、针对开关电动门建立一个状态机图。
第8-10章
1、描述OOA与OOD之间的关系。
2、OOD模型是什么?OOD的过程是什么?
3、比较结构化设计与面向对象设计。
OOA与OOD的分工观点。5在你的工作实践中,考虑过复用吗?描述一下如何对类进行复用。
6 举例说明,如何把多继承结构化解为单继承。
7针对C++或Java,总结关联的实现方式。
8现决定用链表实现栈。请先设计一个栈,再针对C++对其进行调整。
9第5章的5.2.1节的内容,进一步领会连接器的含义。
10选择一个Windows环境下的应用系统的窗口,绘制一幅类图,描述窗口中的各种部件以及其间的关系。
11针对一个你所熟悉的问题,选用一种可视化编程环境,决定应该对哪部分界面内容进行建模,并构造该界面。
12分析一个你所熟知的软件,看其是如何对命令进行组织的,并分清楚高层命令、基本命令和命令步都有那些。14在图形用户界面的设计中,有时使用模型-视图-控制器(Model-View-Controller)模式。查有关资料,给出该模式的类图和顺序图。现要在分布式环境下使用该模式,请针对某一种情况给出一张顺序图。
第11-15章
1、为什么要用主动对象表示控制流?
2、针对一个你所熟悉的并发系统,用顺序图对控制流之间的交互进行建模。
3、怎样协调控制流?
4、一个对象中有一个操作附有特征{Sequential},另一个操作附有特征{Guarded},这两个操作能同时执行吗?请说明理由。
5、简述控制流间常用的通信机制。
java面向对象的特征有哪些方面
6、给出一个控制流示例,并进行描述。
6说明存储与检索永久对象的意义。
7如果使用关系数据库系统存储永久对象,说明如何存储永久类之间的一对多聚合关系,如何存储永久类之间的多继承关系。
8说明使用专门设立的类进行存储与检索永久对象的过程。
9查资料,了解面向对象数据库系统的产品化程度,并分析其对面向对象概念的支持程度。10一张表中要有一个主关键字,该表与其他表连接时还要使用外键。请考虑主关键字和外键的联系,并考虑由此而带来的数据冗余性。
11列举一个永久存储类间的多对多关联,并设计存储它们的数据库表。
12为如下的永久存储类以及其间的关联设计数据库表。
13构件图的用途是什么?
14针对你所编制过或熟知的一个系统,绘制构件图和部署图。
15描述构件图中接口和端口的作用,说明二者之间的关系。
16思考:
1)如何通过使用接口来体现构件的新增加功能;
2)如何通过使用接口和构件来体现系统的新增加功能。
17举例说明连接件是如何实现的。
18查有关文献,看有些聚类技术可用于识别构件(即,用哪些类构成一个构件)。
19构件图的用途是什么?
20针对你所编制过或熟知的一个系统,绘制构件图和部署图。
21描述构件图中接口和端口的作用,说明二者之间的关系。
22思考:
1)如何通过使用接口来体现构件的新增加功能;
2)如何通过使用接口和构件来体现系统的新增加功能。
23举例说明连接件是如何实现的。
24查有关文献,看有些聚类技术可用于识别构件(即,用哪些类构成一个构件)。
在什么情况下,应该编写一个新系统而不使用Facade模式?请举例。
25对比类适配器与对象适配器的工作原理。
26列举一个可使用Strategy模式解决的问题。
27在图12-11所示的模型中,如果还要检测二氧化碳的浓度,那么应该怎样修改模型?若要复用显示温度和压力的类,又该怎样修改模型?
28在Abstract Factory模式中,类AbstractFactory的作用是什么?其下的具体子类的作用又是什么?
29 Factory Method模式命名中的Factory和Method的含义是什么?
30本章中的设计模式对变化性解决的侧重点都各是什么?
31针对观察者模式,建立一张顺序图。出两个设计模式,看它们是如何考虑使设计易变性最小化的。
32查软件工程的书籍,阅读有关模块内聚与耦合的内容,进一步领会OO中对内聚和耦合的要求。
33查有关对类库(如C++类库或Java类库)的评价资料,按照OOD的评价准则分析评价的合理性。
第16章系统与模型
1、系统与子系统以及子系统之间有什么关系,如何进行表示?
2、说明视图、模型及系统之间的关系。
3、简述各视图的构成。
4、进行模型之间的一致性检查应该注重哪些方面?
5、请思考本章中的表14-1中的内容与本书中的OOA模型和OOD模型的关系。
第17章 面向对象的编程实现
1、面向对象编程语言在面向对象方法中处于什么地位?
2、选定一种面向对象编程语言,举例说明如何定义类、对象、关联、单继承、多继承、聚
合和组合。
3、用C++重写本章第2节中的例题“生产者与消费者”的代码。
4、完成本章第3节利用关系数据库对继承进行存储的例题。
5、编写一段面向对象程序,解释面向对象中的封装原则和信息隐蔽原则。
针对一个你所熟悉的问题,选用一种可视化的编程环境,构造用户界面,查看编程环境自动生成的代码。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。