《软件工程》习题参考答案10
作者名:不详 来源:网友提供 06年6月8日
第10章
1、说明对象、类、类结构、消息的基本概念。
答:(1)对象:对象是人们要进行研究的任何事物,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。对象包括有形实体、作用、事件、性能说明等类型。对象具有状态和行为。一个对象用数据值来描述它的状态,对象的操作则用于改变状态,对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。对象内的数据具有自己的操作,从而可灵活地专门描述对象的独特行为,具有较强的独立性和自治性,其内部状态不受或很少受外界的影响,具有很好的模块化特点。为软件重用奠定了坚实的基础。
(2)类:具有相同或相似性质的对象的抽象就是类。因此,对象的抽象就是类,类的具体化就是对象,也可以说类的实例是对象。
(3)类结构:类与类之间的结构关系,包括一般-具体结构关系和整体-部分结构关系。
一般-具体关系结构称为分类结构,也可以说是"或"关系或"is a"关系,类的这种层次结构可用来描述现实世界中的一般化的抽象关系,通常越在上层的类越具有一般性和共性,越在下层的类越具体、越细化。
整体-部分结构称为组装结构,它们之间的关系是一种"与"关系,或者是"has a"关系。类的这种层次关系可用来描述现实世界中的类的组成的抽象关系。上层的类具有整体性,下层的类具有成员性。
在类的层次结构中,通常上层的类称为父类或超类,下层类称为子类。
(4)消息:对象之间进行通信的构造叫做消息。在对旬的操作中,当一个消息发送给某个对象时,消息包含接收对象去执行某种操作的信息。接收消息的对象经过解释,然后给予响应。这种通信机制称为消息传递。发送一条消息的格式是"对象名.方法名(参数)"。
2、说明面向对象的特征和要素。
答:面向对象的特征是:
(1)对象唯一性。每个对象都有自身唯一的标识,在对象生存期中,其标识不变,不同的对象不能有不同的标识。
(2)分类性。是指将具有一致的数据结构(属性)和行为(操作)的对象抽象成类
(3)继承性。是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。
(4)多态性。是指相同的操作或函数过程可以作用于多种类型的对象上并获得不同的结果。
面向对象的要素是:
(1)抽象。
(2)封装性(信息隐蔽)
(3)共享性。
3、说明对象模型的特征,举现实世界的例子,给出它的一般关系、聚集关系的描述。
答:对象模型表示了静态的、结构化的系统数据性质,描述了系统的静态结构,它是从客观世界实体的对象关系角度来描述。表现了对象的相互关系。该模型的特征是用对象图来表现对象的结构、属性和操作,它是分析阶段三个模型的核心,也是其他两个模型的框架。
在对象模型中,定义了两种类的层次结构:一般化关系和聚集关系。
一般化关系是在保留对象差异的同时共享对象相似性的一种高度抽象方式,即"一般-具体"的关系。比如下图所示:

聚集关系是一种"整体-部分"关系。在这种关系中,有整体类和部分类之分。如下图所示:

4、说明动态模型的特征,说明事件,脚本、状态的含义。
动态模型是与时间和变化有关的系统性质,该模型描述了系统的控制结构,它表示了瞬时的、行为化的系统控制性质,它关心的是系统的控制,操作的执行顺序,它从对象的事件和状态的角度出发,表现了相互行为。
事件是指特定时刻发生的某件事情,它是某事情发生的信号,它没有持续时间,它是一种相对性的快速事件。
脚本是完成系统某个功能事件序列,侧重于表达说明发生于系统执行过程中的一个特定场景,用事件跟踪图表达。
状态是对象属性值的抽象。状态指明了对象对输入事件的响应。
5、说明功能模型的特征,比较功能模型的DFD和结构化方法的DFD异同。
答:功能模型描述了系统的所有计算。功能模型指出发生了什么,动态模型确定什么时候发生,而对象模型确定发生的客体。功能模型表明一个计算如何从输入值得到输出值,它不考虑所计算的次序。功能模型由多张数据流图组成。数据流图说明数据流是如何从外部输入、经过操作和内部存储输出到外部的。功能模型也包括对象模型中值的约束条件。
6、说明三种分析模型的关系。
答:三种分析模型之间关系是这样的:功能模型指出发生了什么,动态模型确定什么时候发生,而对象模型确定发生的客体。
7、说明对象建模的过程。
答:对象建模的过程如下:
首先标识类和关联,因为它们影响了整体结构和解决问题的方法,其次是增加属性,进一步描述类和关联的基本网络,使用继承合并和组织类,最后将操作增加到类中去作为构造动态模型和功能模型的副产品。
(1)确定类。构造对象模型的第一步是标出来自问题域的相关对象类,包括物理实体和概念。所有类在应用中都必须有意义。检查问题陈述中的所有名词,产生暂定类。然后去掉不必要的类和不正确的类。
(2)准备数据字典。为所有建模实体准备一个数据词典。准确描述各个类的精确含义,描述当前问题中的类的范围,包括对类的成员、用法方面的假设或限制。
(3)确定关联。两个或多个类之间的相互依赖就是关联。从问题中抽取所有可能的关联表示,把它们记下来,但不要过早去细化这些表述。
(4)确定属性。属性是个体对象的性质,通常用修饰性的名词词组来表示。只考虑与具体应用直接相关的属性,不考虑那些超出问题范围的属性,首先找出重要属性,避免那些只用于实现的属性,要为各个属性取有意义的名字。
(5)使用继承来细化类。
(6)完善对象模型。
8、说明动态建模的过程。
答:动态建模的过程如下:
(1)准备脚本
(2)确定事件
(3)准备事件跟踪表
(4)构造状态图
9、说明功能建模的过程。
答:功能建模的过程如下:
(1)确定输入、输出值
(2)建立数据流图
10、说明对象设计的步骤。
答:对象设计要确定实现用到的类、关联的完整定义,接口的形式以及实现操作方法的算法,可以增加实现必须的内部对象,对数据结构和算法进行优化。
(1)获得操作
(2)确定操作的目标对象
(3)算法设计
(4)优化设计
(5)控制的实现
(6)调整继承
(7)关联的设计
11、用面向对象方法建立一个现实问题的分析模型。
答:题目如下:
学校管理系统要存储下列数据:
(1)系:系名,系主任
学生:学号,姓名,学生所属系
教师:工作证号,姓名,教师所属系
研究生:专业方向
教授:研究领域
课程:课程号,名称,学分
(2)学生每学期要选修若干门课程,每门课有一个考试成绩;莫个学期开设的莫门课程只有一个任教教师;一个教师只任教一门课;一个教师有能力讲授多门课程,一门课程也可以有多位教师能够讲授;每个研究生只能跟随一位教授.
1)画出表示上述数据的对象模型(不必考虑服务)
2)给出实现这个对象模型的对象类设计.
解:暂无。
|