UML介绍-不同类间关系

 

目录

不同的类间关系有着各自独特的体现方式。

继承关系

实现关系

关联关系

聚合关系

组合关系

数据库建模PowerDesigner 


UML(Unified Modeling Language)即统一建模语言,是一种用于软件系统分析、

设计和文档编制的可视化建模语言。  StarUML

从其构成来看,UML 包含多种类型的图,可分为结构类图和行为类图

结构类图包括类图、对象图、构件图、部署图等。

类图是最常见的,用于描述系统中的类、类的属性、操作以及类之间的关系,

继承、实现、关联、聚合、组合等关系都能在类图中清晰呈现。

对象图是类图的实例化,展示特定时刻系统中对象的状态和关系。

构件图用于描述软件构件之间的依赖关系,帮助进行系统的物理架构设计。

部署图则是对软件系统部署到硬件环境的规划,包括服务器、存储设备等硬件资源和软件构件的分布。

行为类图有活动图、状态图用例图序列图、协作图等。

活动图用于描述业务流程或系统操作的流程,类似流程图,但更注重活动的并行、分支等情况。

状态图主要展示对象在其生命周期内的状态变化及触发状态转换的事件

用例图从用户角度出发,描述系统的功能需求,包括参与者和用例以及它们之间的关系,

能清晰地表明系统能为用户做什么。序列图和协作图都用于描述对象之间的交互顺序,

序列图强调时间顺序,协作图侧重对象之间的协作关系。

UML 的优势在于能够提供一种标准的、直观的方式来表达软件系统的架构、功能和行为。

对于开发团队而言,它有助于不同角色(如开发人员、测试人员、项目经理等)之间的沟通,

使大家对系统有统一的理解。在系统分析和设计阶段,

通过绘制各种 UML 图,可以更好地梳理业务逻辑、规划系统结构,

也有利于发现系统中的潜在问题。在项目的文档编制方面,UML 图能够替代大量的文字描述,

使文档更加简洁明了,易于维护。

不同的类间关系有着各自独特的体现方式。

继承关系

语义:继承关系表示类与类之间的 “是一种” 的关系,子类继承父类的属性和方法

例如,“轿车” 类继承 “汽车” 类,意味着轿车是一种汽车,它拥有汽车的基本属性和行为,

并可能有自己的特殊属性和行为。

体现方式在 UML 类图中,继承关系用空心三角形箭头的连线表示,箭头方向从子类指向父类

例如,从 “轿车” 类指向 “汽车” 类的连线带有空心三角形箭头,清晰展示了继承的方向。

实现关系

语义:实现关系体现类与接口之间的关系,表明一个类实现了某个接口规定的行为。

比如,“打印机类” 实现了 “打印接口”,意味着打印机类必须提供打印接口中定义的打印功能。

体现方式:在 UML 类图中,实现关系用空心三角形箭头和虚线的连线表示,箭头方向从实现类指向接口。

例如,从 “打印机类” 指向 “打印接口” 的连线是带有空心三角形箭头的虚线。

关联关系

语义:关联关系体现类之间的结构联系,反映对象之间的相互连接。

以 “学生” 类和 “课程” 类为例,学生和课程之间存在选课的关联,

表明学生与课程在业务逻辑上的连接。

体现方式:在 UML 类图中,关联关系用直线连接两个类。这条直线可以带有角色名称和多重性标记。

角色名称说明一个类在关联中所扮演的角色,

多重性标记则规定了一个类的多少个对象与另一个类的对象发生关联。

例如,在 “学生” 和 “课程” 的关联中,在 “学生” 到 “课程” 的连线上,

课程端可标注 “选修课程” 作为角色名称,多重性可能为 “*”,表示学生可选多门课程。

聚合关系

语义聚合关系是一种弱的 “整体 - 部分” 关系,部分对象可独立存在。

如 “图书馆” 和 “书籍” 的关系,书籍可独立于图书馆存在。

体现方式:在 UML 类图中,聚合关系用空心菱形箭头的连线表示,箭头从整体类指向部分类。

例如,从 “图书馆” 类指向 “书籍” 类的连线带有空心菱形箭头,

表明图书馆拥有书籍,但书籍可脱离图书馆。

组合关系

语义组合关系是强的 “整体 - 部分” 关系,部分对象不能脱离整体对象独立存在。

比如 “汽车” 和 “发动机” 的关系,发动机离开汽车就失去了原有的功能意义。

体现方式在 UML 类图中,组合关系用实心菱形箭头的连线表示,箭头从整体类指向部分类。

例如,从 “汽车” 类指向 “发动机” 类的连线带有实心菱形箭头,

体现发动机对汽车的紧密依附。

数据库建模PowerDesigner 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/462821.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言 | Leetcode C语言题解之第528题按权重随机选择

题目: 题解: typedef struct {int* pre;int preSize;int total; } Solution;Solution* solutionCreate(int* w, int wSize) {Solution* obj malloc(sizeof(Solution));obj->pre malloc(sizeof(int) * wSize);obj->preSize wSize;obj->total…

Yocto 项目中 layer.conf 文件的基本框架与模版

一个在layer.conf文件的基本框架: # 层的名称,可自定义,用于标识该层 LCONF_VERSION "7" LAYERNAME "my_layer"# 层的优先级,整数,用于确定层在构建顺序中的位置 # 数字越大,优先级…

计算机毕业设计Hadoop+大模型地震预测系统 地震数据分析可视化 地震爬虫 大数据毕业设计 Spark 机器学习 深度学习 Flink 大数据

温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…

移植 AWTK 到 纯血鸿蒙 (HarmonyOS NEXT) 系统 (1) - 让 OpenGLES 应用跑起来

在正式移植 AWTK 之前,我们先尝试在 HarmonyOS 上运行一个简单的 OpenGLES 应用程序。虽然可以确定这一步肯定是可行的,但是作为一个 HarmonyOS NEXT 新手,还是先从简单的应用程序开始,把坑都踩一遍,遇到问题比较好解决…

Node.js:内置模块

Node.js:内置模块 Node.jsfs模块读取文件写入文件__dirname path模块路径拼接文件名解析 http模块创建服务 Node.js 传统的JavaScript是运行在浏览器的,浏览器就是其运行环境。 浏览器提供了JavaScript的API,以及解析JavaScript的解析引擎&a…

《Web性能权威指南》-WebRTC-读书笔记

本文是《Web性能权威指南》第四部分——WebRTC的读书笔记。 第一部分——网络技术概览,请参考网络技术概览; 第二部分——无线网络性能,请参考无线网络性能; 第三部分——HTTP,请参考HTTP; 第四部分——浏览…

vscode ssh连接autodl失败

autodl服务器已开启,vscode弹窗显示连接失败 0. 检查状态 这里的端口和主机根据自己的连接更改 ssh -p 52165 rootregion-45.autodl.pro1. 修改config权限 按返回的路径找到config文件 右键--属性--安全--高级--禁用继承--从此对象中删除所有已继承的权限--添加…

HTML 基础标签——多媒体标签<img>、<object> 与 <embed>

文章目录 1. `<img>` 标签主要属性示例注意事项2. `<object>` 标签概述主要属性示例注意事项3. `<embed>` 标签概述主要属性示例注意事项小结在现代网页设计中,多媒体内容的使用变得越来越重要,因为它能够有效增强用户体验、吸引注意力并传达信息。HTML 提…

Android——横屏竖屏

系统配置变更的处理机制 为了避免横竖屏切换时重新加载界面的情况&#xff0c;Android设计了一中配置变更机制&#xff0c;在指定的环境配置发生变更之时&#xff0c;无需重启活动页面&#xff0c;只需执行特定的变更行为。该机制的视线过程分为两步&#xff1a; 修改 Androi…

宝塔使用clickhouse踩坑

前言 最近有个物联网项目&#xff0c;需要存储物联网终端发送过来的信息&#xff08;类似log日志&#xff0c;但又要存储在数据库里&#xff0c;方便后期聚合统计&#xff09;&#xff0c;本来想写文件的奈何客户要求聚合统计&#xff0c;所以只能用数据库才能达到更高的计算效…

探索Python新境界:Buzhug库的神秘面纱

文章目录 探索Python新境界&#xff1a;Buzhug库的神秘面纱第一部分&#xff1a;背景介绍第二部分&#xff1a;Buzhug库是什么&#xff1f;第三部分&#xff1a;如何安装Buzhug库&#xff1f;第四部分&#xff1a;Buzhug库函数使用方法第五部分&#xff1a;Buzhug库使用场景第六…

跨越科技与文化的桥梁——ROSCon China 2024 即将盛大开幕

在全球机器人技术飞速发展的浪潮中&#xff0c;ROS&#xff08;Robot Operating System&#xff09;作为一款开源的机器人操作系统&#xff0c;已成为无数开发者、研究人员和企业的首选工具。为了进一步推动ROS的应用与发展&#xff0c;全球知名的机器人操作系统会议——ROSCon…

ZDS 数字股票 布局全球视野,开启智能金融新篇章

在全球金融市场蓬勃发展的背景下&#xff0c;Zeal Digital Shares&#xff08;ZDS&#xff09;正迈向一个全新的发展阶段。通过采用先进技术与深度融合人工智能&#xff08;AI&#xff09;&#xff0c;ZDS 吸引了各类顶尖人才&#xff0c;不仅推动了创新金融服务的建设&#xf…

Python酷库之旅-第三方库Pandas(190)

目录 一、用法精讲 881、pandas.Index.is_方法 881-1、语法 881-2、参数 881-3、功能 881-4、返回值 881-5、说明 881-6、用法 881-6-1、数据准备 881-6-2、代码示例 881-6-3、结果输出 882、pandas.Index.min方法 882-1、语法 882-2、参数 882-3、功能 882-4、…

LSTM模型改进实现多步预测未来30天销售额

项目源码获取方式见文章末尾&#xff01; 600多个深度学习项目资料&#xff0c;快来加入社群一起学习吧。 《------往期经典推荐------》 项目名称 1.【BiLSTM模型实现电力数据预测】 2.【卫星图像道路检测DeepLabV3Plus模型】 3.【GAN模型实现二次元头像生成】 4.【CNN模型实…

三周精通FastAPI:27 使用使用SQLModel操作SQL (关系型) 数据库

官网文档&#xff1a;https://fastapi.tiangolo.com/zh/tutorial/sql-databases/ SQL (关系型) 数据库 FastAPI不需要你使用SQL(关系型)数据库。 但是您可以使用任何您想要的关系型数据库。 这里我们将看到一个使用SQLModel的示例。 SQLModel是在SQLAlchemy和Pydantic的基础…

C语言 ——— 学习和使用 strstr 函数,并模拟实现

目录 strstr 函数的作用 学习 strstr 函数​编辑 使用 strstr 函数 模拟实现 strstr 函数 strstr 函数的作用 查找子字符串 返回指向 str1 中第一次出现的 str2 的指针&#xff0c;如果 str2 不是 str1 的一部分&#xff0c;则返回 null 指针 学习 strstr 函数 函数的参数…

将 IBM WatsonX 数据与 Milvus 结合使用,构建用于知识检索的智能 Slack 机器人

在当今快节奏的工作环境中&#xff0c;快速轻松地访问信息对于保持生产力和效率至关重要。无论是在 Runbook 中查找特定说明&#xff0c;还是访问关键知识转移 &#xff08;KT&#xff09; 文档&#xff0c;快速检索相关信息的能力都可以产生重大影响。 本教程将指导您构建一个…

《高频电子线路》—— 振荡器稳定性问题

文章内容来源于【中国大学MOOC 华中科技大学通信&#xff08;高频&#xff09;电子线路精品公开课】&#xff0c;此篇文章仅作为笔记分享。 振荡器稳定性问题 频率准确度 & 频率稳定度 希望频率稳定度越小越好。 频率稳定度分类 影响振荡频率稳定度的参数 振荡频率是和电…

基本查询【MySQL】

文章目录 基本查询插入时是否更新替换查询指定列查询查询字段为表达式为查询结果指定别名结果去重where条件NULL 的查询 结果排序筛选分页结果UpdateDelete截断表聚合函数分组(group by)having && where 基本查询 建表 mysql> create table Student (-> id int…