面向对象方法概论
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
习题
第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、简述控制流间常用的通信机制。
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、编写一段面向对象程序,解释面向对象中的封装原则和信息隐蔽原则。
针对一个你所熟悉的问题,选用一种可视化的编程环境,构造用户界面,查看编程环境自动生成的代码。