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

UML介绍-不同类间关系

 

目录

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

继承关系

实现关系

关联关系

聚合关系

组合关系

数据库建模PowerDesigner 


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

继承关系

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

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

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

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

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

实现关系

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

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

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

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

关联关系

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

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

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

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

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

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

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

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

聚合关系

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

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

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

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

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

组合关系

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

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

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

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

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

数据库建模PowerDesigner 


http://www.kler.cn/a/378101.html

相关文章:

  • 数据结构(Java版)第六期:LinkedList与链表(一)
  • EMS(energy managment system)从0到1
  • 【MinIO系列】MinIO Client (mc) 完全指南
  • Unity3d 基于UGUI和VideoPlayer 实现一个多功能视频播放器功能(含源码)
  • 一个比RTK或redux更轻量级更易使用的 React 第三方状态管理工具库的配置与使用
  • CASA(Carnegie-Ames-Stanford Approach) 模型原理及实践
  • 【Linux】从零开始使用多路转接IO --- poll
  • 利用 Direct3D 绘制几何体—8.光栅器状态
  • 刘艳兵-DBA021-升级到Oracle Database 12c时,关于使用Export/Import方法迁移数据的说法是正确的?
  • 第三次RHCSA作业
  • 【vue】11.Vue 3生命周期钩子在实践中的具体应用
  • 《JVM第1课》Java 跨平台原理
  • qt QScrollArea详解
  • Git 的特殊配置文件
  • FPGA实现串口升级及MultiBoot(十一)QuickBoot介绍
  • ‌MySQL中‌between and的基本用法‌、范围查询
  • 干货|前端项目一些响应式布局问题(固定宽度仍可以实现响应式)
  • CTF-pwn:libc2.27指针劫持[gyctf_2020_signin]
  • 通过不当变更导致 PostgreSQL 翻车的案例分析与防范
  • WeakReference与SoftReference以及结合ReferenceQueue实践整理
  • AppInventor2能否用网络摄像头画面作为屏幕的背景?
  • Golang--函数、包、defer、系统函数、内置函数
  • thinkphp8模型中 where数组条件大于,小于,like等条件时与tp5/6 的区别和使用示例
  • 3.3_JavaScript 对象与事件
  • 湖南(市场研究)源点咨询 市场调研公司与咨询公司有何不同?
  • Leetcode 腐烂的橘子