面向对象(二)——UML基础

一、UML定义

UML 是 统一建模语言(Unified Modeling Language)的缩写。

它的标准定义是:一种用于给面向对象软件进行可视化、详述、构造和文档化的图形化语言。

  • 特点:不是程序设计语言,而是用于描述、可视化、构造和文档化软件系统的语言。

  • 组成要素:

    1. 基本构造块:事物、关系

    2. 图:将构造块组织成可视化表示

    3. 公用机制:贯穿整个语言的规则和公共机制

二、事物

UML 中的事物是构成模型的基本元素,分为 4 大类。

1. 结构事物

定义 :UML模型中的"名词",是模型的静态部分,描述概念或物理元素。

包括 :类、接口、协作、用例、主动类、构件、制品、结点

2. 行为事物

定义 :UML模型的动态部分 ,是模型中的"动词",描述跨越时间和空间的行为。

包括:交互、状态机、活动

3. 分组事物

定义 :UML模型的组织部分 ,是由模型分解成的"盒子"。包 是最主要的分组事物。

特点:

  • 把元素组织成组的机制

  • 结构事物、行为事物、其他分组事物都可放入包内

  • 包是概念上的(仅在开发时存在),不同于构件(运行时存在)

4. 注释事物

定义 :UML模型的解释部分,用来描述、说明和标注模型的任何元素。

特点:依附于一个元素或一组元素之上,对其进行约束或解释的简单符号

三、关系

UML 主要有 4 种核心关系,依赖、关联、泛化和实现。

1. 依赖(Dependency)

定义 :一个事物(独立事物)发生变化会影响另一个事物(依赖事物)的语义。

例子:

  • OrderService 依赖 OrderDAO:OrderService调用OrderDAO的save()方法,如果OrderDAO改了,OrderService也要改

  • 人 依赖 手机:人需要手机打电话,但手机不是人的一部分,只是临时使用

2. 关联(Association)

1.普通关联

定义 :一种结构关系,描述对象之间的连接(一组链接)。

例子:

  • 学生 和 课程:一个学生可以选多门课,一门课可以有多个学生

  • 人 和 身份证:一个人对应一张身份证(1对1)

2.聚集(Aggregation)(弱包含)

  • 描述整体和部分的结构关系

  • 整体和部分生命周期不一致 :整体消失,部分仍然存在

例子:

  • 公司 和 部门:公司倒闭了,部门可以换个公司继续存在

3. 组合(Composition)(强包含)

整体和部分的生命周期一致 :整体消失,部分也消失,部分不可以脱离整体存在。

例子:

  • 订单 和 订单项:订单删除后,订单项一定跟着删除

  • 房子 和 房间:房子拆了,房间也就不存在了

关系 生命周期 例子
聚集(弱包含) 不一致 公司 → 部门
组合(强包含) 一致 订单 → 订单项

3. 泛化(Generalization)

定义 :特殊/一般关系,子元素的对象可替代父元素的对象,子元素共享父元素的结构和行为。

例子:

  • 猫 泛化 动物:猫继承动物的属性和方法(年龄、名字、吃东西)

  • 学生 泛化 人:学生自动拥有人的姓名、年龄属性

4. 实现(Realization)

定义:一个类元指定了由另一个类元保证执行的契约。使用场景:

  • 接口 和 实现它们的类或构件

  • 用例 和 实现它们的协作

例子:

  • ArrayList 实现 List 接口:ArrayList 必须实现 add()、get()、size() 等方法

  • MySQLDriver 实现 JDBC 接口:MySQLDriver必须实现connect()、execute()等方

四、UML中的图

UML 2.0定义了13种图 ,分为结构图(静态) 和行为图(动态)

1.结构图(静态视图)

1.类图

2.对象图

3.构件图

构件之间的组织和依赖关系,关注静态实现视图。

4.部署图

描述物理节点与构件的配置

2.行为图(动态视图)

1.用例图

包含关系(《include》):一个用例包含另一个用例。

扩展关系(《extend》):一个用例执行的时候,可能会发生一些特殊的情况或可选的情况,这种情况解释这个用例的扩展用例。

泛化关系:父类与子类的关系。

2.顺序图

3.活动图

4.状态图

五、UML五种视图

从不同角度描述同一系统:

相关推荐
Li_RuiQi6 小时前
DAgger方法演进_独立学习笔记
笔记·学习·计算机视觉
rolt9 小时前
[存档]Alistair Cockburn-2003年11月UMLChina交流会
软件工程·产品经理·uml·敏捷开发·用例·cockburn
Li_RuiQi11 小时前
DAgger与交互式模仿学习_ACT学习笔记
笔记·学习
He BianGu11 小时前
【笔记】C# 中BindingFlags的详细作用
笔记·c#
AI视觉网奇11 小时前
turtle 入门教程笔记
笔记
跨知易知识产权12 小时前
美国专利确权是什么,和专利诉讼有什么不一样?
笔记
杨逢昌工厂6S管理12 小时前
126-杨逢昌6S三环体系:越做越乱的现场熵增机理与基准化治理——一线现场诊断笔记
经验分享·笔记·职场和发展·学习方法
悟道书生12 小时前
若依 RBAC 权限控制学习笔记
java·网络·笔记·sql·学习·vue
陈哈哈111113 小时前
折腾了半天,总算把 Vim 9.2 装明白了
笔记
陈哈哈111113 小时前
折腾了半天,总算把 OpenGL 的开发环境给装明白了
笔记