当前位置: 首页 > news >正文

UML建模案例分析-类图中的关系

概要

类图之间的关系比较多,绝大多数情况下重点关注的还是关联关系、组合、聚合这三种,最终是如何对应到代码上的。

例子

以订单为例:订单和订单项之间是组合关系,这和数据库实体之间不一样。数据库实体有主外键,开发数据库时间久了再去建立类图,就总不放心两个类之间通过什么关联的,就总想着增加一个“外键”,比如在订单项类中增加一个属性“订单编号”,这回就放心了。

实际上,订单和订单项类之间是这样访问的:

Class 订单{

public:

合计总价();

计算附加费();

检查订单完整性();

检查库存();

private:

订单名称;

下单日期;

税金;

运费;

订单项;  //订单项类对象的list

};

订单项和零件类之间也是如此,只是关联关系有方向,即,只能在订单项中创建零件的对象,反之不行。如果要求相互都可以创建对方的对象,关联关系不加箭头,即没有方向。

另外强调一点,因为订单和订单项之间是组合关系,组合和聚合这种表示"强"拥有的关系,通常都是让订单项作为订单的属性;而订单项和零件之间这种“弱”拥有关系,通常都是在函数中需要临时访问时才动态创建一个零件类对象。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 大模型/NLP/算法面试题总结2——transformer流程//多头//clip//对比学习//对比学习损失函数
  • stm32使用双通道ADC读取
  • 2024辽宁省数学建模B题【钢铁产品质量优化】思路详解
  • TCP网络传输控制协议
  • 在 WebSocket 连接建立之前进行身份验证时,token 应该如何存储
  • 【ARM】MDK安装ARM_compiler5无法打开安装程序
  • Debezium系列之:验证mysql、mariadb等兼容mysql协议数据库账号权限
  • 用 Kotlin 编写四则运算计算器:从零开始的简单教程
  • 数据结构(2)
  • 单目测距 单目相机测距 图片像素坐标转实际坐标的一种转换方案
  • MySQL中记录(Documents)的基本操作——添加记录和查找记录
  • 树莓派+攀腾PMSA003-PM2.5传感器监测空气质量【含源码+接线图】
  • Navicat 17 新特性 | 原生支持 Linux ARM 平台以及银河麒麟和统信操作系统
  • 应变与几何方程——弹性力学
  • Kithara与OpenCV (一)
  • [NodeJS] 关于Buffer
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 【347天】每日项目总结系列085(2018.01.18)
  • 2017前端实习生面试总结
  • Spring核心 Bean的高级装配
  • Swift 中的尾递归和蹦床
  • ucore操作系统实验笔记 - 重新理解中断
  • 读懂package.json -- 依赖管理
  • 观察者模式实现非直接耦合
  • 理清楚Vue的结构
  • 前端之Sass/Scss实战笔记
  • 前嗅ForeSpider中数据浏览界面介绍
  • 通信类
  • 小程序 setData 学问多
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 由插件封装引出的一丢丢思考
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • ​比特币大跌的 2 个原因
  • ​一些不规范的GTID使用场景
  • # 飞书APP集成平台-数字化落地
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • #数学建模# 线性规划问题的Matlab求解
  • (11)MSP430F5529 定时器B
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (六) ES6 新特性 —— 迭代器(iterator)
  • (免费领源码)python#django#mysql公交线路查询系统85021- 计算机毕业设计项目选题推荐
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (一)springboot2.7.6集成activit5.23.0之集成引擎
  • (转)【Hibernate总结系列】使用举例
  • .bat批处理(五):遍历指定目录下资源文件并更新
  • .gitignore文件设置了忽略但不生效
  • .Net 8.0 新的变化
  • .net core 3.0 linux,.NET Core 3.0 的新增功能
  • .net core 6 redis操作类
  • .Net MVC + EF搭建学生管理系统
  • .net 调用php,php 调用.net com组件 --
  • .NET_WebForm_layui控件使用及与webform联合使用
  • .NET下的多线程编程—1-线程机制概述
  • @NoArgsConstructor和@AllArgsConstructor,@Builder