Luckyxyz
首页
归档
关于
友链
切换模式
返回顶部
首页
技术实践
书斋絮语
说点儿什么
Luckyxyz
首页
技术实践
书斋絮语
说点儿什么
首页
归档
关于
友链
【软考】UML、事物(结构事物、行为事物、分组事物、注释事物)、关系(依赖、关联、聚集(聚合、组合)、泛化、实现)、单向关联、关联名、关联类、UML 图(类图)
技术实践
·
今天
Luckyxyz
# UML 统一建模语言 UML 由 3 个要素构成: UML 基本构造块、支配这些构造块如何放置在一起的规则和运用与整个语言的一些公共机制 UML 的词汇表包含 3 种构造块: - 事物:对模型中最具有代表性的成分的抽象 - 关系:把事物结合在一起 - 图:聚集了相关的事物 --- # 事物 结构事物、行为事物、分组事物、注释事物 ## 结构事物 UML 模型的静态部分,描述概念 或 物理元素。包括: 类(Class)、接口(Interface)、协作(Collaboration)、用例(Use Case)、主动类(Active Class)、构件(Component)、制品(Artifact)、节点(Node)  ## 行为事物 UML 模型的动态部分,是模型中的动词,描述了跨越时间和空间的行为。包括: 交互(Interaction)、状态机(State Machine)、活动(Activity)  ## 分组事物 UML 模型的组织部分,是一些由模型分解成的 “盒子”。 最主要的分组事物是:包(Package)。 结构事物、行为事物、其他分组事物都可以放进包内,纯粹是概念上的(仅在开发时存在)   ## 注释事物 UML 模型中的解释部分  --- # 关系 ## 依赖: 两个事物间的予以关系,其中一个事物(独立事物)发生变化会影响另一个事物(依赖事务)的语义 可能有方向的虚线  假设 A 有一个方法(行为),行为有一个参数,要根据依赖的对象 B 来做决定:行为(B) A 是学生,B 是书 读书(书),书发生变化:原本是计算机基础,所以当前的语义是:学生读计算机基础 假设现在书改成 数据库,那么学生的读书的行为语义就会发生变化:学生读数据库书 --- ## 关联 关联是一种结构关系,描述了一组链。链是对象之间的链接。 聚集是一种特殊类型的关联,描述了 整体 和 部分 间的结构关系 在关联上可以标注 重复度(多重度)和 角色 关联:直线,其实是双向箭头,A 跟 B 有关联,B 跟 A 有关联,简化成了一条边:无向边  多重度: 雇主可以雇佣员工,员工可以被雇主雇佣 `0..1`:0 个或 一个 `0..*`:0 个或 多个,* 是多个 交叉链, 1 个雇主,可以对应 0 个或 多个 员工 (一个左边的对象,可以对应右边多重度的对象) 1 个员工,只能对应 0 个或多个雇主 (一个右边,对应多少个左边)  --- ## 聚集 分为两种:聚合、组合 ### 聚合: 描述整体和部分的关系,一条边加一个空心菱形  聚合:**部分和整体的生命周期是不一致的,整体消失了,部分仍然存在,部分可以脱离整体存在** 班级 202:整体,学生:部分  学生是班级的一部分,如果毕业了,班级 202 就消失了,但是学生还存在 ### 组合: 部分和整体的生命周期是一致的,整体消失了,部分也消失。部分不可以脱离整体存在 一条边 加 一个 实心菱形 人:整体,大脑:部分  人不存在了,那么大脑也不存在了。大脑不能脱离人而存在 --- ## 泛化 泛化是一种 特殊(子类)/ 一般(父类)关系,特殊元素(子类)的对象可替代一般元素(父类)的对象。子元素共享了父元素的结构和行为 父类泛化子类 实线和一个空心箭头,子类指向父类  --- ## 实现 接口和实现他们的类或构件之间; 在用例和实现他们的协作之间 虚线+空心箭头  依赖的变体:精化、跟踪、包含、延伸 --- 类 A 在方法中定义使用了类 B 的一个对象,是依赖 方法使用完,关系就结束了,就不用再使用 B 了。关联可以理解为能保持更为长久关系的   可以有多个关联,但是每一个关联(每条线上)要标识清楚角色即可 比如 雇主 1 雇佣 员工 1 ,再上面再画一条关联的线,雇主 1 雇佣 员工 2 --- # 单向关联 实线的有向边 依赖:是一种偶然性、临时性的关系,比如 人--- >食物,人依赖食物,人饿的时候需要食物,但是吃饱了之后就不需要食物了。 但是关联比如 人 ---> 氧气,鱼 ---> 水,这个关联是比较持久的,人需要一直依赖氧气 --- # 关联名 可以在关联上写一个名字,表达关联的意思  --- # 关联类  一个学生可以借阅 0 本或 多本 图书,一本图书可以被 0 个或多个学生借阅。 所以学生和图书是多对多的关系 可以通过学生的学号、图书的图书名这两个信息确定一条记录:哪个学生借了哪本书 增加一个条件:一个学生可以重复借一本书,就会造成下面的情况:  不能很明确地标识这个关系。这样看起来会很冗余 增加一个额外的信息:借书时间(增加一个属性)  新增加的这个字段(借书时间),放在左边(学生类)、右边(图书类)都不是一个很好的选择。 此时可以从关联的无向边中单独拉出一条线指向结束时间,单独给他形成一个类,关联类  --- # UML 图  交互图:序列图、通信图 ## 类图 一组对象、接口、协作 和他们之间的关系 类图 是面向对象系统的建模中所建立的最常见的图 通常包含: - 类 - 接口 - 协作 - 依赖、泛化和关联关系(实现)  在属性、方法前有权限修饰符 `+`:公有的 public `-`:私有的 private `#`:受保护的 protected `~`:包的,package  例子:  部门 和 办公室 跟 公司是 组合的关系 多重度:一个公司对一个或多个部门,一个公司对一个或多个办公室 部门和办公室 有 关联关系 办公室 泛化 Headquarters (总部),办公室是 父类,总部是子类 一个部门有一个或多个成员,一个部门有一个经理 人 依赖于 人事记录,人 的操作中有一个 getPersonRecords(),获取人事记录 --- 类图可以包含注解和约束,可以含有包或子系统  ---  看图可以知道,Car 和 Boat 是继承了 Transport 的,正常来说 子类继承父类是会继承父类的行为的,也就是不必再重新写他的行为 但是可以看到 Car 和 Boat 都有一个 move() 意味着他们重新(覆盖了)父类的行为
软考
取消回复
提交评论
Luckyxyz
我们谈论生活,讨论技术,借由文字,抵达心灵。
热门文章
Obsidian 迁移全记录(又名:纯小白的闭坑指南)
【Kubernetes】第一个实例 - Java Web 应用
新年新气象,关于年终总结,关于未来展望
使用宝塔面板对网站、数据库等进行定时备份到腾讯云 COS 对象存储
2025 年
在细雨中呼喊,在困顿中挣扎
Ubuntu 22.04 server 安装教程
最新评论
山佳Ellen: 有独到的见地,有个性的思想,精彩!
t: 2026 扬帆起航, 喜迎新年,万象更新, 时间旅行,人间探索,...
tls: 赞一个
lovingchina: 我也准备从Joplin迁移到Obsidian,刚好参考你这一篇哈...
tl.s: 很棒的一本书,可以解答很多人们关于人工智能的疑惑。或许未来怎样谁...
tl.s: 很实用 🦆🦆
tl.s: 绘图很清晰,图示质量很高
热门标签
软考
Kubernetes
读书笔记
Linux
Ubuntu
生活随笔
生活
2025
Python3
Debian
Ansible
空间智能
openFuyao
技术实践
在细雨中呼喊
粤ICP备2024349207号