MINIBLOG

Blog Note Tags Links About
Home Search
May 8, 2026
miniyuan

面向对象技术引论第一次作业


1. 用况、用况图及其关系

  • 什么是用况:

    使用视角:用况是对操作者使用系统的一项功能时所进行的交互过程的描述。

    系统设计视角:一个用况规约了系统可以执行的一个动作序列。包括一些可能的变体,并对特定的操作者产生可见的、有值的结果。

  • 用况图的作用:

    用况图的作用是从用户或外部系统的视角描述系统的功能需求,明确系统边界、参与者、用况以及它们之间的关系,便于需求分析人员、开发人员和用户沟通。

  • 参与者和用况之间的关系:

    参与者和用况之间主要是关联关系,也称通信关系,表示某个参与者参与或触发某个用况。在用况图中,参与者通常画成小人,系统功能画成椭圆,二者之间用实线连接。

  • 用况和用况之间的关系:

    1. 包含关系:一个用况总是需要复用另一个用况的行为。表示为带箭头的虚线,标注 <<include>>,箭头指向被包含的用况。
    2. 扩展关系:某个用况在特定条件下对基础用况进行补充。表示为带箭头的虚线,标注 <<extend>>,箭头指向被扩展的基础用况。
    3. 泛化关系:一个用况是另一个用况的特殊形式。表示为实线空心三角箭头,箭头指向更一般的用况。

2. 类之间关系的概念

类图中描述类之间关系常用以下概念:

  1. 关联:表示两个类的对象之间存在结构性联系。通常用实线表示,可在两端标注角色名和多重性。
    • 聚合:一种特殊形式的关联,表示弱整体-部分关系,部分对象可以脱离整体对象存在。用空心菱形表示,菱形在整体一端。
    • 组合:一种特殊形式的关联,表示强整体-部分关系,部分对象依赖整体对象存在,整体销毁时部分也随之销毁。用实心菱形表示,菱形在整体一端。
  2. 泛化:表示继承关系,即子类是父类的一种特殊类型。用实线空心三角箭头表示,箭头指向父类。
  3. 实现:表示类实现接口或规格。用虚线空心三角箭头表示,箭头指向接口。
  4. 依赖:表示一个类在较弱程度上使用另一个类,例如方法参数、局部变量或临时调用。用带箭头的虚线表示,箭头指向被依赖者。

此外,还常用多重性表示一个类的对象与另一个类的对象之间的数量关系。

3. 社交平台用户部分类图的问题与改正

原图的问题主要有:

  1. 关系类型错误:用户和用户帖子、用户评论、用户点赞之间画成组合关系不合适。帖子、评论、点赞更像用户参与或产生的内容/行为记录,不应简单看作用户的组成部分。
  2. 类名冗余:类名“用户帖子”、“用户评论”、“用户点赞”把关联角色写进了类名。更合理的类名应是“帖子”、“评论”、“点赞”,用户与它们之间的关系通过关联名称表达。
  3. 缺少多重性:例如一个用户可以发表多篇帖子、多个评论、多个点赞记录。
  4. 类图信息不完整:所有类仅显示了类名,缺少属性栏(如帖子的标题、内容、发布时间)和必要的操作。
  5. 缺少内容间关系:原图没有表现评论、点赞与被评论/被点赞对象之间的关系。

可改为:

图 1:社交平台用户类图
图 1:社交平台用户类图

4. 图书状态类图的问题与改正

原图的问题主要有:

  1. 关系类型错误:把可借、已借出、修复中画成了图书的子类。实际上这些不是图书的种类,而是同一本图书在不同时刻可能处于的状态。应建模为状态属性,而不是继承层次。
  2. 类图信息不完整:所有类仅显示了类名,缺少属性栏和必要的操作。

可改为:

图 2:图书状态类图
图 2:图书状态类图

5. 文件夹与文件类图的含义

该类图表达了文件系统中的层次结构,其中空心菱形表示聚合关系,1 和 * 表示多重性:

  1. 文件夹与文件之间是聚合关系。一个文件夹可以包含多个文件,一个文件属于一个文件夹。
  2. 文件夹与文件夹之间也是聚合关系。一个父文件夹可以包含多个子文件夹,一个子文件夹属于一个父文件夹。

不过系统中子文件夹到父文件夹的多重性似乎应该改为 0..1?因为根文件夹没有父文件夹。

6. 绘图软件类图的问题与改进

原图的主要不足有:

  1. 关系类型缺失:成组图形与图形之间仅画了泛化,未画组合/聚合关系,无法表达”成组图形由多个图形组成”的递归结构。
  2. 缺少多重性:图片与图形、成组图形与子图形之间均未标注 1 对 * 的多重性。
  3. 基类未标记抽象:图形 作为基类应标注 <<abstract>>。
  4. 类图信息不完整:所有类仅显示类名,缺少属性(如圆的半径、矩形的长宽)和操作(如 draw())。

可改进如下:

图 3:绘图软件类图
图 3:绘图软件类图

7. 代码仓库托管平台类图

图 4:代码仓库托管平台类图
图 4:代码仓库托管平台类图

约束说明:

  1. 仓库的拥有者可以添加其他用户为协作者。
  2. 审核 PullRequest 的用户应是目标仓库的协作者。
  3. PullRequest 的状态可包括“待审核、已通过、已拒绝、已合并”。
  4. 只有审核通过的 PullRequest 才能合并到仓库代码中,合并后会形成新的提交或修改仓库的代码历史。

8. 自动售货机顺序图

图 5:自动售货机顺序图
图 5:自动售货机顺序图

该顺序图覆盖了用户选择商品、售货机检查库存、缺货提示、扫码支付、支付成功出货和支付失败提示等主要流程。

目录
  • 1. 用况、用况图及其关系
  • 2. 类之间关系的概念
  • 3. 社交平台用户部分类图的问题与改正
  • 4. 图书状态类图的问题与改正
  • 5. 文件夹与文件类图的含义
  • 6. 绘图软件类图的问题与改进
  • 7. 代码仓库托管平台类图
  • 8. 自动售货机顺序图
© 2026 miniyuan. All rights reserved.
Go to miniyuan's GitHub repo