软件工程理论与实践 (吕云翔) 第十章: 面向对象设计课后习题及答案解析

第十章: 面向对象设计

1.判断题

(1)在面向对象的设计中,应遵循的设计准则除了模块化、抽象、低耦合和高内聚外,还有信息隐藏。(√)

(2)面向对象分析和设计活动是一个多次反复选代的过程。(√)
(3)关系数据库可以完全支持面向对象的概念,面向对象设计中的类可以直接对应到关系数据库中的表。(×)

解析:虽然关系数据库可以存储和管理数据,但关系数据库模型与面向对象模型有一定差异。面向对象设计中的类和对象并不直接对应关系数据库中的表,需要进行对象关系映射(Object-Relational Mapping,ORM)来将对象模型映射到关系数据库中的表结构。

(4)面向对象设计是在分析模型的基础上,运用面向对象技术生成软件实现环境下的设计模型。(√)

2.选择题

(1)面向对象设计阶段的主要任务是系统设计和(D)
A.结构化设计
B.数据设计
C.面向对象程序设计
D.对象设计
(2)只有类的共有界面的成员才能成为使用类的操作,这是软件设计的(B)原则
B.信息隐藏
A.过程抽象
D.共享性
C.功能抽象

解析:只有类的共有界面的成员(公有方法和属性)才能成为使用类的操作,这符合软件设计的信息隐藏原则。

(3)(B)是表达系统类及其相互联系的图示,它是面向对象设计的核心,是建立状态
图、协作图和其他图的基础。
B.类图
A.部署图
C.组件图
D.配置图
(4)下面所列的性质中,(D)不属于面向对象设计的特性。
B.重用性
A.继承性
C.封装性
D.可视化
(5)下列是面向对象设计方法中有关对象的叙述,其中(B)是正确的。
A.对象在内存中没有它的存储区
B.对象的属性集合是它的特征表示
C.对象的定义与程序中类型的概念相当

D.对象之间不能相互通信
(6)面向对象设计中,基于父类创建的子类具有父类的所有特性(属性和方法),这一特
点称为类的(C)。
B.封装性
A.多态性
C.继承性
D.重用性

3.简答题

(1)请比较结构化软件设计方法和面向对象软件设计方法。

​ 面向对象的设计更符合复杂的、随机性较强,适合并发性的系统软件设计,而不适合逻辑性很强的系统软件设计。结构化软件设计一般从系统功能人手,按照需求将系统功能分为若干个子功能模块。面向对象设计方法比结构化设计方法更具有优势,使用范围更广。由于在类中封装了属性和方法,因此在面向对象的类设计中已经包含了面向过程中的过程设计。此外,与面向过程中的数据设计所不同的是,面向对象设计中的数据设计并不是独立进行的,面向对象设计中的类图相当于数据的逻辑模型,可以很容易地转换成数据的物理模型。

(2)请简述面向对象设计的启发规则。

​ 面向对象设计的启发规则包括:

  • 设计结果应该请易懂。
  • 类的等级深度应该适当。
  • 要尽量设计简单的类。
  • 使用简单的协议。
  • 使用简单的操作。
  • 把设计的变动减至最小。

(3)请简述面向对象的设计原则

1)模块化。在结构化的设计中,一个模块通常为一个过程或一个函数,它们封装了一系列的控制逻辑;而在面向对象的设计中,一个模块通常为一个类或对象,它们封装了事物的属性或操作。
2)抽象化。类是对一组具有相似特征的对象的抽象。可以说,类是一种抽象的数据类型。同时,对象也是对客观世界中事物的抽象。它用紧密结合的一组属性和操作来表示事物的客观存在。
3)信息隐藏。对于类而言,其内部信息(如属性的表示方法和操作的实现算法)对外界是隐藏的。外界通过有限的接口来对类的内部信息进行访问。类的成员都具有相应的访间控制的属性。
4)低耦合。在面向对象的设计中,耦合主要是指对象之间的耦合,即不同对象之间相互关联的紧密程度。低耦合有利于降低由于一个模块的改变而对其他模块造成的影响。
5)高内聚。内聚与耦合密切相关,低耦合往往意味着高内聚。提高模块的内聚性有利于提高系统的独立性。
6)复用性。构造新类时,需要考虑该类将来被重复利用的可能。提高类的复用性可以节约资源,精简系统结构。

(4)请简述系统设计和对象设计。

​ 系统设计关注于确定实现系统的策略和目标系统的高层结构,系统设计是定义系统的整体结构和组织方式,包括模块关系、数据流动和交互等。对象设计是在系统设计基础上进行的更具体和具体的设计,关注于对象和类的属性、方法和关系。系统设计关注整体架构,对象设计关注具体实现。它们相互配合,确保系统开发成功。

4.应用题

(1)在一个习题库下,各科教师可以在系统中编写习题及标准答案,并将编写的习题和答案加人题库中,或者从题库中选取一组习题组成向学生布置的作业,并在适当的时间公布答案。学生可以在系统中完成作业,也可以从题库中选择更多的习题练习。教师可以通过系统检查学生的作业,学生可以在教师公布答案后对自已的回答进行核对。阅读这一情境,分析出该系统所包括的实体类并适当添加属性,绘制出类图。

具有以下实体类和它们的属性:

  1. 教师(Teacher)类:
    • 属性:教师ID、姓名
  2. 学生(Student)类:
    • 属性:学生ID、姓名
  3. 习题(Exercise)类:
    • 属性:习题ID、题目、标准答案
  4. 题库(QuestionBank)类:
    • 属性:题库ID、题目集合
  5. 作业(Assignment)类:
    • 属性:作业ID、习题集合、截止时间
  6. 答案(Answer)类:
    • 属性:作业ID、学生ID、答案

软件工程理论与实践 (吕云翔) 第十章: 面向对象设计课后习题及答案解析_第1张图片

(2)利用面向对象的设计方法设计某网上书店系统。这里可以做一些假设。

以下是一个基本的面向对象设计:

  1. 实体类:
  • 书籍(Book):属性包括书籍ID、书名、作者、出版社、价格等。
  • 顾客(Customer):属性包括顾客ID、姓名、地址、联系方式等。
  • 订单(Order):属性包括订单ID、顾客信息、书籍信息、订单日期等。

2.功能类:

  • 书店(Bookstore):包含书籍的管理功能,如添加书籍、删除书籍、更新书籍信息等。
  • 购物车(ShoppingCart):用于顾客选择想购买的书籍并生成订单。
  • 订单处理(OrderProcessing):处理生成的订单,包括验证库存、计算总价、生成订单号等。
  • 支付(Payment):处理订单的支付流程,包括选择支付方式、验证支付信息等。
  • 发货(Delivery):处理订单的发货流程,包括选择快递公司、更新订单状态等。

3.关联关系:

  • 书籍与书店之间存在关联,书店可以管理多种书籍。
  • 顾客与购物车之间存在关联,顾客可以将书籍添加到购物车。
  • 顾客与订单之间存在关联,顾客可以生成多个订单。
  • 订单与书籍之间存在关联,一个订单可以包含多种书籍。

软件工程理论与实践 (吕云翔) 第十章: 面向对象设计课后习题及答案解析_第2张图片

你可能感兴趣的:(软件工程,软件工程)