【软考中级攻略站】-软件设计师(8)- UML建模

什么是UML建模

UML(统一建模语言)是一种图形化的语言,用于描述软件系统的设计。简单来说,UML建模就像是用图画来表达软件系统是如何工作的,帮助开发者更好地理解、设计和交流软件的设计。

UML建模的目的

  1. 更好地理解系统:通过图形化的方式,让人们更容易理解软件系统的工作原理。
  2. 方便团队协作:UML图可以帮助团队成员更好地沟通,确保大家对软件的理解一致。
  3. 指导开发过程:UML图可以作为开发过程中的参考,帮助开发者按照设计来编写代码。
  4. 方便维护和扩展:有了UML图,未来的维护和扩展工作也会更加容易。

UML图的类型

UML图有很多种,以下是几种常见的类型:

  1. 用例图

    • 定义:展示系统的主要功能和用户之间的交互。
    • 例子:展示一个网上商城系统中用户可以进行的操作,如浏览商品、下单购买等。
  2. 类图

    • 定义:展示系统中类(Class)之间的关系。
    • 例子:展示一个图书馆系统中书籍、读者和管理员之间的关系。
  3. 序列图

    • 定义:展示对象之间的交互顺序。
    • 例子:展示用户登录系统的过程,包括用户输入用户名和密码,系统验证等步骤。
  4. 状态图

    • 定义:展示对象的状态变化及其触发条件。
    • 例子:展示一个订单的状态变化,如从“未支付”到“已支付”,再到“已发货”。
  5. 活动图

    • 定义:展示系统的流程和活动。
    • 例子:展示一个购物车结算的流程,包括选择商品、确认订单、支付等步骤。
  6. 组件图

    • 定义:展示系统组件之间的关系。
    • 例子:展示一个软件系统中各个模块之间的依赖关系。
  7. 部署图

    • 定义:展示系统在实际环境中的部署情况。
    • 例子:展示一个网站如何部署在服务器上,以及客户端如何与服务器通信

事物 

UML中的事物是用来描述系统中的各种元素的,它们是UML模型的基本组成部分。UML中的事物可以分为四大类:结构事物、行为事物、分组事物和注释事物。

1. 结构事物

结构事物是UML中用来描述系统静态部分的事物,它们代表系统中的持久对象或实体。结构事物包括:

    • 定义:描述了一组具有相同属性、操作和关系的对象。
    • 例子:在图书馆系统中,“书籍”类可以描述书籍的属性,如书名、作者、出版社等。
  1. 接口

    • 定义:定义了一组操作,这些操作可以由一个或多个类实现。
    • 例子:一个“可借阅”接口可以定义借书和还书的方法,由“书籍”类实现。
  2. 组件

    • 定义:表示软件中的物理部分,如源代码文件、库等。
    • 例子:一个“数据库组件”可以表示数据库系统中的模块。
  3. 节点

    • 定义:表示物理计算资源,如计算机、服务器等。
    • 例子:一台“Web服务器”可以表示部署应用程序的服务器。

2. 行为事物

行为事物描述了系统中的动态行为,即系统随着时间推移所做的事情。行为事物包括:

  1. 交互

    • 定义:描述了对象之间的通信。
    • 例子:一个“序列图”可以展示用户与系统之间的交互过程。
  2. 状态机

    • 定义:描述了对象在其生命周期中的状态变化。
    • 例子:一个“状态图”可以展示订单从“未支付”到“已支付”再到“已发货”的状态变化。

3. 分组事物

分组事物用于将其他事物组织在一起,以便更好地理解和管理它们。分组事物包括:

    • 定义:将相关的类、接口、组件等组织在一起。
    • 例子:一个“用户管理包”可以包含所有与用户管理相关的类。
  1. 构件

    • 定义:表示物理工件,如文档、源代码文件等。
    • 例子:一个“需求文档”可以表示系统需求文档。

4. 注释事物

注释事物用于添加注释或解释其他事物。注释事物包括:

  1. 注释
    • 定义:提供额外的信息或解释。
    • 例子:在类图中添加注释来解释某个类的用途或注意事项

关系 

1. 依赖

依赖是一种使用关系,它表示一个事物(称为客户端)使用另一个事物(称为供应商)。如果改变供应商可能会影响客户端,那么就存在依赖关系。

  • 定义:表示一个事物依赖于另一个事物的特性或行为。
  • 符号:通常用一条带箭头的虚线来表示。
  • 例子:如果一个类A需要使用类B提供的方法或属性,那么类A就依赖于类B

2. 泛化

泛化是一种继承关系,表示一个类(子类)继承另一个类(父类)的所有特性及行为。

  • 定义:表示一个类(子类)是另一个类(父类)的一种特殊情况。
  • 符号:用一条实线加空心三角箭头表示。
  • 例子:汽车类可以是车辆类的一个子类,继承车辆的所有属性和方法。

 

3. 关联

关联描述了一组对象之间的一种结构连接,表示两个或多个类之间的连接关系。

  • 定义:表示一个类的对象与另一个类的对象之间的联系。
  • 符号:用一条实线来表示,两端可以有箭头表示导航性。
  • 例子:一个“学生”类可以与一个“课程”类相关联,表示学生选修了某门课程。

 

4. 实现

实现是接口和实现它的类之间的关系,表示一个类(实现者)实现了接口中定义的行为。

  • 定义:表示一个类(实现者)实现了接口中定义的所有方法。
  • 符号:用一条实线加三角箭头表示,类似于泛化的关系。
  • 例子:一个“可打印”接口可以被“文档”类实现,这样文档类就可以打印文档内容。

 

 类图

类图是UML中最常用的图之一,它用于描述系统的静态结构。类图展示了系统中的类、接口、它们的属性(字段)、方法(操作)以及类之间的关系。

类图的组成元素

类图主要由以下几个部分组成:

  1. :代表系统中的一个抽象概念,包含一组属性和方法。
  2. 接口:定义了一组方法的集合,类可以通过实现接口来获得这些方法。
  3. 关联:表示类之间的连接关系。
  4. 聚合:一种特殊的关联关系,表示整体与部分之间的关系,部分可以存在于多个整体中。
  5. 组合:也是一种特殊的关联关系,但比聚合更紧密,表示部分是整体的一部分,且部分不能脱离整体而存在。
  6. 依赖:表示一个类依赖于另一个类的功能。
  7. 泛化:表示继承关系,一个类(子类)继承另一个类(父类)的属性和方法。
  8. 实现:表示一个类实现了某个接口。

类图的绘制方式

一个类在类图中通常表示为三个部分的矩形框:

  1. 顶部:类的名称,通常是粗体字。
  2. 中部:类的属性(字段),描述类的数据。
  3. 底部:类的方法(操作),描述类的行为。

属性和方法的可见性通常用符号来表示:

  • + 表示公共(Public),外部可以直接访问。
  • - 表示私有(Private),只能在类内部访问。
  • # 表示受保护(Protected),类及其子类可以访问。
  • ~ 表示包级(Package),同一个包内的类可以访问。

类图的例子

让我们通过一个简单的例子来理解类图。

假设我们要设计一个简单的图书管理系统,包含如下几个类:

  1. 书籍(Book):包含书籍的基本信息。
  2. 图书馆(Library):包含书籍的集合,并且能够进行借书、还书等操作。
  3. 用户(User):包含用户的基本信息,并且能够借书、还书。
类图
1+-----------------+       +-----------------+       +-----------------+
2| 书籍 (Book)     |       | 图书馆 (Library)|       | 用户 (User)     |
3+-----------------+       +-----------------+       +-----------------+
4| -书名: String   |       | -书籍列表: Book[]|       | -用户名: String |
5| -作者: String   |       | +借书(User, Book): void|   | -密码: String   |
6| -出版社: String |       | +还书(User, Book): void|   | +借书(Book): void|
7+-----------------+       +-----------------+       +-----------------+
8| +借书(): void   |       | +查找书籍(String): Book|  | +还书(Book): void|
9| +还书(): void   |       | +添加书籍(Book): void |  +-----------------+
10+-----------------+       +-----------------+      (依赖)  ------------>  (依赖)
11       |                      |                     |
12       |                      |                     |
13(关联)  ---------------->  (关联)  ------------>  (关联)
14       |                      |
15       |                      |
16+-----------------+       +-----------------+
17| 书籍接口 (Bookable)|       | 可借阅 (Borrowable)|
18+-----------------+       +-----------------+
19| +借书(): void   |       | +借(): void     |
20| +还书(): void   |       | +还(): void     |
21+-----------------+       +-----------------+
22 (实现)  ---------------->  (实现)

在这个类图中:

  • 书籍(Book) 类实现了 书籍接口(Bookable),意味着它必须实现接口中定义的方法。
  • 图书馆(Library) 类与 书籍(Book) 类之间存在关联关系,表明图书馆包含了一个书籍列表。
  • 用户(User) 类与 图书馆(Library) 类之间存在依赖关系,因为用户需要通过图书馆来借书和还书。
  • 可借阅(Borrowable) 接口被 书籍(Book) 类实现,表示书籍支持借书和还书的方法。

使用类图的好处

  • 清晰性:类图能够清晰地展示系统中类之间的关系。
  • 易于理解:对于大型项目,类图可以帮助开发人员快速了解系统结构。
  • 方便讨论:类图是一个很好的工具,可以帮助团队成员讨论和设计系统架构。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值