软件工程大复习(七)面向对象设计

7.1 软件设计概述

软件设计是软件开发过程中的一个阶段,它紧随需求分析之后。设计阶段的目标是将需求转化为一个完整的系统架构和详细设计,这将指导后续的编码和测试工作。软件设计可以分为两个主要部分:

  1. 概念性设计:确定系统的高层结构和组件,通常包括系统架构的设计。
  2. 详细设计:涉及具体实现细节,如类设计、接口定义、算法实现等。

7.2 面向对象设计建模

面向对象设计建模是使用面向对象的概念和UML图来构建系统的模型。这个过程包括:

  1. 类设计:细化类的结构,包括属性、方法和它们之间的关系。
  2. 接口设计:定义系统组件之间的契约,明确哪些方法是必须实现的。
  3. 继承和多态:使用继承来复用代码,使用多态来允许不同的对象对同一消息做出响应。
  4. 封装:确保类的内部状态和行为被适当隐藏,只通过公共接口暴露必要的操作。
  5. 组件和部署图:展示系统的物理组件如何分布在硬件上。

7.3 系统架构设计

系统架构设计是确定系统的高层结构,包括:

  1. 分层架构:将系统分解为多个层次,如表示层、业务逻辑层、数据访问层和数据层。
  2. 模式应用:使用设计模式来解决常见的设计问题,如单例模式、工厂模式等。
  3. 组件化:将系统分解为可重用的组件,每个组件都有明确的职责。
  4. 技术选型:根据项目需求选择合适的技术和工具。

7.4 系统元素设计

系统元素设计涉及设计系统中的各个元素,包括:

  1. 类和对象的具体实现:根据需求和设计模型,实现具体的类和对象。
  2. 数据库设计:设计数据库模式,包括表结构、索引和关系。
  3. 用户界面设计:设计用户界面,确保它既美观又用户友好。
  4. 算法设计:设计和选择高效的算法来实现系统功能。

7.5 面向对象设计示例

让我们通过一个简单的在线书店系统来说明面向对象设计的过程:

  1. 系统架构设计

    • 采用MVC(模型-视图-控制器)架构,将系统分为表示层、业务逻辑层和数据访问层。
    • 使用数据库来存储书籍信息和用户订单。
  2. 类设计

    • Book 类:属性包括title, author, price等;方法包括updatePrice(), displayDetails()等。
    • Order 类:属性包括orderDetails, totalCost等;方法包括addBook(), calculateTotal()等。
    • User 类:属性包括username, password, address等;方法包括login(), logout()等。
  3. 接口设计

    • IPaymentProcessor 接口:定义支付处理的方法,如processPayment()
  4. 组件化

    • 支付组件:处理支付事务。
    • 库存组件:管理书籍库存。
  5. 技术选型

    • 选择Java作为开发语言,使用Spring框架来实现业务逻辑。

选择题

  1. 题目 :在面向对象设计中,哪个设计原则强调"对扩展开放,对修改封闭"?
    • A. 封装
    • B. 继承
    • C. 多态
    • D. 开闭原则
    • 答案:D. 开闭原则
    • 解析:开闭原则是面向对象设计的一个基本原则,它强调设计的模块应该对扩展开放,对修改封闭。这意味着当系统需要扩展时,应该能够通过添加新的代码来实现,而不是修改现有的代码。

填空题

  1. 题目 :在UML中,______图用于展示系统的物理组件如何分布在硬件上。
    • 答案:部署图
    • 解析:部署图(Deployment Diagram)是UML中的一种图,用于展示系统的物理组件(如软件组件、硬件组件等)如何分布在硬件上。它帮助开发者理解系统的物理架构。

简答题

  1. 题目 :面向对象设计中的"封装"是什么意思?请简要解释。
    • 答案:封装是面向对象设计的一个基本概念,它指的是将数据(属性)和操作数据的方法(行为)捆绑在一起,并隐藏内部实现细节,只通过一个清晰的接口与外界交互。这样做可以提高代码的安全性和可维护性。

案例分析题

  1. 题目 :考虑一个在线书店系统,其中包含以下类:Book, Order, User。请描述这些类之间的关系,并解释如何使用面向对象设计原则来设计这个系统。
    • 答案
      • Book 类:属性包括title, author, price等;方法包括updatePrice(), displayDetails()等。
      • Order 类:属性包括orderDetails, totalCost等;方法包括addBook(), calculateTotal()等。
      • User 类:属性包括username, password, address等;方法包括login(), logout()等。
      • 关系:Order 包含多个 BookUser 可以创建 Order
      • 设计原则:使用封装来隐藏类的内部实现,使用继承来复用代码,使用多态来允许不同的对象对同一消息做出响应,使用开闭原则来确保系统对扩展开放,对修改封闭。
相关推荐
Olrookie3 分钟前
若依前后端分离版学习笔记(一)——本地部署
笔记·后端·开源
PerfumerKarma27 分钟前
【WebGPU学习杂记】数学基础拾遗(2)变换矩阵中的齐次坐标推导与几何理解
学习·线性代数·矩阵
knight_202439 分钟前
嵌入式学习日志————对射式红外传感器计次
stm32·单片机·嵌入式硬件·学习
go54631584651 小时前
基于分组规则的Excel数据分组优化系统设计与实现
人工智能·学习·生成对抗网络·数学建模·语音识别
##echo1 小时前
嵌入式Linux裸机开发笔记9(IMX6ULL)GPIO 中断实验(1)
linux·c语言·笔记·单片机·嵌入式硬件
●VON1 小时前
重生之我在暑假学习微服务第二天《MybatisPlus-下篇》
java·学习·微服务·架构·mybatis-plus
Yu_Lijing2 小时前
MySQL进阶学习与初阶复习第四天
数据库·学习·mysql
好学且牛逼的马3 小时前
学习随笔录
学习
我爱学嵌入式4 小时前
C语言第 9 天学习笔记:数组(二维数组与字符数组)
c语言·笔记·学习
im_AMBER7 小时前
学习日志19 python
python·学习