UML(Unified Modeling Language,统一建模语言)是一种标准化的可视化建模语言
UMLUnified Modeling Language统一建模语言是一种标准化的可视化建模语言广泛用于面向对象软件系统的分析、设计与文档化。它不依赖于特定编程语言或开发方法而是提供一套通用图形符号如类图、用例图、时序图、活动图等帮助开发者、分析师和利益相关者在不同抽象层次上理解系统结构与行为。在面向对象Object-Oriented, OO范式中UML 是核心支撑工具类图Class Diagram描述类、接口、属性、方法及它们之间的关系继承、关联、聚合、组合、依赖等直接映射面向对象的封装、继承与多态特性用例图Use Case Diagram从用户视角刻画系统功能边界与参与者交互体现OO中“以对象/角色为中心”的需求建模思想时序图Sequence Diagram展示对象间按时间顺序的消息传递反映OO中对象协作与消息驱动的行为模型其他图状态图、组件图、部署图等分别支持行为建模、架构设计与系统部署共同构成完整的OO系统生命周期视图。UML本身不是方法论但常与面向对象分析与设计OOAD、RUPRational Unified Process等方法结合使用强调模型驱动开发MDD和可追溯性。# 示例UML类图对应Python类定义简化示意classAnimal:def__init__(self,name:str):self.namenamedefspeak(self)-str:raiseNotImplementedErrorclassDog(Animal):# 继承关系UML中的泛化箭头defspeak(self)-str:returnf{self.name}barks!# 关联示例Owner 与 Dog 之间可能存在1对多关联classOwner:def__init__(self,name:str):self.namename self.dogs[]# 聚合关系空心菱形UML类图中“聚合”Aggregation与“组合”Composition都是表示整体-部分Whole-Part关系的关联类型但二者在生命周期依赖性、所有权语义和语义强度上存在本质区别特征聚合Aggregation组合Composition语义“has-a” 的弱拥有关系部分可独立存在“contains-a” 的强拥有关系部分不能脱离整体而存在生命周期部分对象的生命周期独立于整体整体销毁部分仍可存活部分对象的生命周期由整体控制整体销毁 ⇒ 部分自动销毁UML符号空心菱形◇ 实线箭头指向部分实心菱形◆ 实线箭头指向部分示例图书馆有若干图书图书可被借出、转存、归属其他图书馆心脏是人体的组成部分人消亡 ⇒ 心脏失去功能/不再作为“活体心脏”存在✅代码体现以Python为例# ✅ 聚合部分Engine可独立创建、复用不随整体Car销毁而销毁classEngine:def__init__(self,model:str):self.modelmodelclassCar:def__init__(self,brand:str,engine:Engine):# 外部注入非内部创建self.brandbrand self.engineengine# 弱拥有engine可被多个Car共享或单独存在# 使用示例e1Engine(V6-Turbo)# Engine独立存在my_carCar(Toyota,e1)# 聚合关系建立delmy_car# 删除care1依然有效 → print(e1.model) 仍可执行# ✅ 组合部分Wheel由整体Car完全管理通常在内部创建并随整体销毁classWheel:def__init__(self,size:str):self.sizesizeprint(fWheel{size}created)classCarWithWheels:def__init__(self,brand:str):self.brandbrand self.wheels[Wheel(17-inch)for_inrange(4)]# 内部创建专属所有def__del__(self):print(Car destroyed → all wheels are discarded)# Python中__del__非确定性但语义上wheels不应再被外部使用# 使用示例carCarWithWheels(BMW)delcar# 触发__del__逻辑上wheels生命周期终结无外部引用时被GC回收⚠️ 注意UML是语义建模工具代码实现无法100%强制约束生命周期如Python无析构保证需靠设计约定文档代码审查保障语义一致性Java/C中可通过final字段、私有构造、RAIIC或try-with-resources等机制强化组合语义在数据库建模中组合常对应级联删除CASCADE DELETE聚合则多为限制删除RESTRICT或软删除。

相关新闻

基于AI的媒体资产管理:从非结构化素材到可检索知识图谱

基于AI的媒体资产管理:从非结构化素材到可检索知识图谱

如果你是一位开发者,或者对内容创作、视频制作、数字资产管理感兴趣,那么“花絮Vlog”这个看似娱乐化的概念,可能比你想象中更值得关注。它背后代表的,是一套关于“非结构化内容资产”的采集、整理、复用与价值挖掘的完整技术栈和…

2026/10/2 20:53:38 阅读更多 →
3分钟快速汉化Figma界面:FigmaCN中文插件完整使用指南

3分钟快速汉化Figma界面:FigmaCN中文插件完整使用指南

3分钟快速汉化Figma界面:FigmaCN中文插件完整使用指南 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 还在为Figma的英文界面而烦恼吗?作为中文设计师&#xff0…

2026/10/13 4:56:08 阅读更多 →
“数据库”(Database)是指长期存储在计算机内、有组织的、可共享的数据集合

“数据库”(Database)是指长期存储在计算机内、有组织的、可共享的数据集合

“数据库”(Database)是指长期存储在计算机内、有组织的、可共享的数据集合,其核心特点是数据的结构化、持久化、独立性与共享性。而“数据库管理系统”(DBMS, Database Management System)是用于创建、管理、操作和保…

2026/10/12 18:04:06 阅读更多 →

最新新闻

AI时代个人量化:从零开发专属交易策略全流程

AI时代个人量化:从零开发专属交易策略全流程

AI时代最大的红利:个人做量化,也能开发出一套适合你的策略这几年AI的热度不用我多说,但很多人一提AI就想到大模型聊天、画图、写代码,真正把AI转化成个人生产力的场景,反而被我周围的量化交易玩家给玩明白了。我自己从…

2026/10/14 11:03:10 阅读更多 →
执行沙箱隔离实战:从命名空间到seccomp的多层防御设计

执行沙箱隔离实战:从命名空间到seccomp的多层防御设计

1. 执行沙箱隔离到底在解决什么问题第一次接触“执行沙箱隔离”这个概念,是在做一个代码在线评测功能的时候。用户提交一段代码,服务端要跑起来验证结果,跑完把输出返回去。听起来很简单对吧?但真正上线之后才发现,噩梦…

2026/10/14 11:03:10 阅读更多 →
商品列表接口设计:分页、筛选、排序背后的工程权衡

商品列表接口设计:分页、筛选、排序背后的工程权衡

上一篇讲了商品详情接口——它的难点在「各平台字段不一样」。 列表接口是它的姊妹,但难点完全不同。详情接口是「点查」:给一个确定的 ID,取一条确定的记录;列表接口是「扫描」:在一堆数据里,按用户给的任…

2026/10/14 11:03:10 阅读更多 →
Python在AI与数据分析中的核心应用与实践

Python在AI与数据分析中的核心应用与实践

1. 为什么Python是AI入门的首选语言 作为一个从2012年开始接触Python的老程序员,我至今记得第一次用10行代码完成C语言需要100行才能实现的数据处理时的震撼。Python凭借其近乎伪代码的语法设计,成为了人工智能领域当之无愧的" lingua franca"…

2026/10/14 11:03:10 阅读更多 →
RAG不评测等于闭眼调参:从指标原理到落地实践

RAG不评测等于闭眼调参:从指标原理到落地实践

做 RAG 不评测,等于闭着眼睛调参:一份从原理到落地的完整测评指南我见过太多做 RAG(检索增强生成)的同学,上线前说得头头是道,一问到“怎么证明你的系统比上个版本好”,立刻支支吾吾。RAG 项目最…

2026/10/14 11:03:10 阅读更多 →
Python实现重复文档查找与清理工具

Python实现重复文档查找与清理工具

1. 重复文档查找工具的设计与实现在日常工作中,我们经常会遇到文档重复的问题,特别是从QQ、微信等平台接收的文件,经常会在不同文件夹中保存多份相同内容但不同名称的文件。这些重复文件不仅占用宝贵的存储空间,还会导致文件管理混…

2026/10/14 11:02:10 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →