面向对象技术引论练习题
1、给出下列概念的定义,并说明它们在软件开发中的作用:
(1)对象 (2)类 (3)属性 (4)服务 (5)继承
(6)封装 (7) 关联 (8)聚合 (9) 消息 (10)抽象
2、介绍面向对象方法的主要思想,论述该方法为什么有利于改进软件开发。
3、以你所学习的OOA方法为背景,阐述OOA的主要过程与策略。
4、介绍在OOA和OOD模型中对下述概念(建模元素)的表示法。分别画出一般的图形表示,加以必要的解释,并给出一个例子。
类极其属性与服务
一般-特殊结构(包括多态性的表示)
整体-部分结构(包括多重性的表示)
实例连接(包括多重性的表示)
消息连接
5、(选做)用一幅图表示OOA的主要活动以及它们之间的关系。
6、针对建立类图的活动回答下述问题(从5个小题中选做一个):
为了发现候选的对象,应考虑问题域中哪些事物?如何判断一个候选的对象是否有用?
如何决定在各类对象中应定义哪些属性服务?
考虑哪些问题有助于建立一般-特殊结构?审查中应对哪些不合适的情况进行调整?
考虑哪些问题有助于建立整体-部分结构?审查中应对哪些不合适的情况进行修改?
如何决定在各个对象类之间应建立哪些实例连接和消息连接?
7、(选做)在一个商品订货系统中有供货商和购货商两类对象。一个供货商或购货商都可能与多方签订供需合同。
(1)画出这两种类及对象以及它们之间的实例连接。
(2)讨论这样的实例连接将给实现带来什么困难。
(3)给出一种解决办法,画出修改后的结果。
8、在OOD中用一些相对独立的组成部分隔离实现条件对整个模型的影响,这种设计方法可带来什么好处?简要介绍按此方法建立的OOD模型的每个组成部分及其作用。
(9—13题选做一个)
9、在OOD中要对OOA模型做哪些方面的调整使之成为OOD模型的问题域部分?
10、在OOD中为何有时要把多继承化为单继承?通过一个具体例子说明如何使用整体-部分结构把多继承化为单继承,分别画出转化前后的结构。
11、在人机交互部分的设计中如何运用类及对象、属性、服务、一般-特殊结构、整体-部分结构等概念表达图形用户界面中的有关成分?
12、进行任务管理部分的设计时需要识别哪几类任务?如何用主动对象表示任务?
13、在进行数据数据管理部分的OOD时,假如已选定用关系型数据管理系统进行数据存储,试回答:(1)怎样进行数据存放设计?(2)怎样设计数据管理部分的类及对象?(3)问题域部分应做哪些修改?
14、以你所知的一种编程语言为背景,对整体-部分结构给出两种不同的实现方式。讨论,用这两种方式实现的整体-部分结构有何差异?各自适合于何种不同情况?
15、针对表中列出的OOA/OOD模型成分,填写C++语言、Smalltalk和Eiffel语言中可实现这些成分的元素。
模型成分
C++
Smalltalk
Eiffel
对象
Object
Object
Object
类
Class
Class
Class
属性
成员变量
实例变量
变量
服务
成员函数
Method
例程
一般-特殊结构
基类和派生类
超类子类
祖先和子孙
整体-部分结构
嵌套对象或嵌入指针
嵌套对象
嵌套对象
实例连接
对象指针
对象标识集合
例程调用
消息连接
函数调用
消息
嵌入对象指针