什么是统一建模语言(UML)UML与UML类图的基本概念

news2024/11/23 4:46:13

什么是统一建模语言UML(Unified Modeling Language)

UML

UML(统一建模语言)是一种通用的建模语言,用于描述软件系统的结构、行为和交互。它提供了一组符号和规则,用于创建可视化的图形模型,帮助开发人员、设计师和利益相关者之间进行沟通和理解。

起源和历史

  • UML起源于20世纪90年代初,由James Rumbaugh、Grady Booch和Ivar Jacobson等知名软件工程师合作开发。
  • 这三位工程师各自拥有自己的建模方法(Rumbaugh的OOA、Booch的OOD和Jacobson的OOSE),为了统一这些方法并提供一个通用的建模语言,他们联合起来并发展出了UML。

为何使用UML

  • 提供统一标准:UML提供了一个统一的标准化建模语言,使得不同团队和人员之间可以使用相同的符号和表示法进行沟通和交流。
  • 可视化表达:UML使用图形符号和图表来表示系统的结构和行为,使得复杂的概念和关系可以以直观的方式展示出来,提高了可理解性。
  • 易于学习和使用:UML的符号和规则相对简单,并且有大量的教程和工具支持,使得学习和使用UML相对容易。
  • 支持系统设计和分析:UML提供了丰富的建模工具和技术,支持系统设计、分析和实现的各个阶段,帮助开发人员更好地理解和规划系统。
  • 提高团队协作:通过使用UML,团队成员可以共享和交流对系统的理解和设计,促进团队之间的协作和沟通,减少误解和错误。

UML的优点

  • 统一标准化的建模语言
  • 可视化表达复杂概念和关系
  • 易于学习和使用
  • 支持系统设计和分析的各个阶段
  • 提高团队协作和沟通

总而言之,UML作为一种通用的建模语言,为软件开发提供了标准化的符号和表示法,帮助开发人员更好地理解、设计和实现软件系统,提高了软件开发过程的效率和质量。

Purpose of Class Diagrams

UML类图主要有以下几个目的:

  1. 显示系统中分类器的静态结构。
  2. 为UML规定的其他结构图提供基本符号和表示法。
  3. 对开发人员和团队成员有帮助。
  4. 业务分析师可以使用类图从业务角度对系统进行建模。

UML类图的组成部分

UML类图由以下两部分组成:

  1. 一组类(Classes)
  2. 类之间的关系(Relationships)

What is a Class

Class是系统中一组具有类似角色的对象的描述,它包括:

结构特征(Attributes)

结构特征定义了类的对象所"知道"的内容,包括:

  • 代表类对象的状态
  • 描述类的结构或静态特征

行为特征(Operations)

行为特征定义了类的对象所"能做"的事情,包括:

  • 定义了对象之间可能的交互方式
  • 描述类的行为或动态特征

Class Notation

类的表示包括三个部分:

类名(Class Name)

类名出现在第一个分区中。

类属性(Class Attributes)

属性显示在第二个分区中。
属性类型在冒号后面显示。
属性对应于代码中的成员变量(数据成员)。

类操作(方法)(Class Operations (Methods))

操作显示在第三个分区中,它们是类提供的服务。
方法的返回类型在方法签名的末尾的冒号后面显示。
方法参数的返回类型在参数名后面的冒号后面显示。
操作对应于代码中的类方法。

Class Relationships

类之间的关系

一个类可以与其他类之间存在一个或多个关系。关系可以是以下几种类型之一:(请参考右侧的图形表示关系)。

Relationship Type

关系的种类

Graphical Representation

图形解释

Inheritance (or Generalization):

继承(或泛化):

  • 表示“是一个”关系。
  • 抽象类名称以斜体显示。
  • SubClass1和SubClass2是Super Class的特化。
  • 从子类指向父类的实线箭头。
    继承

Simple Association:

简单关联:

  • 两个对等类之间的结构链接。
  • Class1和Class2之间存在关联。
  • 连接两个类的实线。
    简单关联

Aggregation:

聚合:

  • 一种特殊的关联类型。表示“部分-整体”关系。
  • Class2是Class1的一部分。
  • Class1可以关联多个Class2的实例(用*表示)。
  • Class1和Class2的生命周期是独立的。
  • 带有未填充菱形的实线,连接到复合类的关联端点。
    聚合

Composition:

组合:

  • 一种特殊的聚合关系,当整体被销毁时,部分也会被销毁。
  • Class2的生命周期与Class1相连。
  • Class2不能独立存在。
  • 带有填充菱形的实线,连接到复合类的关联端点。
    组合

Dependency:

依赖:
在这里插入图片描述

  • 如果对一个类的定义的更改可能导致对另一个类的更改(但反过来不成立),则存在依赖关系。
  • Class1依赖于Class2。
  • 带有虚线和开放箭头的线条。
    依赖

Navigability

导航性

箭头表示在一个实例参与关系时,是否可以确定与之相关的另一个类的实例。

上面的图示表明:

  • 给定一个电子表格,我们可以找到它所包含的所有单元格,但是
  • 我们无法从一个单元格中确定它所属的电子表格,即无法从单元格导航到电子表格,所以单元格的导航性是不可行的。
  • 给定一个单元格,我们可以获取相关的表达式和值,但是
    • 给定一个值(或表达式),我们无法找到这些属性所属的单元格,即无法从值或表达式导航到单元格,所以值或表达式的导航性是不可行的。

简而言之,导航性指的是在关系中是否可以通过一个实例来导航到与之相关的其他实例。根据箭头的存在与否,我们可以确定导航性的可行性。

Visibility of Class attributes and Operations

类属性和操作的可见性

在面向对象设计中,有关属性和操作的可见性有一种标记表示法。UML识别了四种可见性类型:public(公共)、protected(受保护)、private(私有)和package(包内)。

在类中的属性和操作名称之前,使用 +、-、# 和 ~ 符号表示属性和操作的可见性。

  • + 表示公共属性或操作
  • - 表示私有属性或操作
  • # 表示受保护属性或操作
  • ~ 表示包内属性或操作

参考:https://www.visual-paradigm.com/guide/uml-unified-modeling-language/what-is-class-diagram/

仅供学习使用,勿用做商业和其他违法用途

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【雕爷学编程】Arduino动手做(149)---MAX9814咪头传感器模块6

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…

resolvecomreference任务返回了false,但未记录错误

IDE从VS2015升级到了VS2022,然后就报了这个错,百度搜了下,没有啥结果,后来发现,2015可以用的一个dll在2022不能用了,把不能用的dll移除即可

VxLAN学习

目录 什么是VXLAN 为什么需要VXLAN 虚拟机动态迁移,要求提供一个无障碍接入的网络 什么是服务器虚拟化技术? 什么是虚拟机动态迁移? VXLAN如何满足虚拟机动态迁移时对网络的要求? 数据中心租户数量激增,要求提供…

TIOBE 2023年7月编程语言排行榜:C++即将超越C!

一、TIOBE统计数据(2023年7月) TIOBE Index编程社区指数是编程语言流行度的一个指标。评级基于全球熟练工程师的数量、课程和第三方供应商的数量。Google、Bing、Yahoo!、维基百科、亚马逊、YouTube 和百度等流行搜索引擎用于计算评级。 七月头条&#…

性能测试工具 Jmeter 测试 JMS (Java Message Service)/ActiveMQ 性能

目录 前言 ActiveMQ 介绍 准备工作 编写jndi.properties添加到ApacheJMeter.jar 中 下载 ActiveMQ 配置 Jmeter 进行测试 点对点 (Queues 队列) 配置 Jmeter 进行测试 发布/订阅 (Topic 队列) 配置发布 Publisher 配置订阅 Subscriber 总结 前言 JMeter是一个功能强大…

【Java】如何有效防止API的重放攻击?API接口防止参数篡改?

文章目录 前言一、API接口常见的安全防护要做到主要有以下几点:二、请求参数防篡改三、防止重放攻击3.1、基于timestamp的方案3.2、基于nonce的方案3.2、基于timestamp和nonce的方案3.3、微信公众号如何保证消息不会被重放攻击 前言 API重放攻击(Replay Attacks)又…

uniapp调接口出现跨域问题。

今天在写uniapp项目的时候,使用在线模拟接口的时候,出现跨域问题。 【问题描述】: ①在内嵌浏览器运行,不会出现跨域问题,好像是内嵌浏览器自动去掉了跨域问题。 ②在外部浏览器调用的时候会出现跨域问题。&#xf…

Yalmip工具箱使用教程(2)-决策变量进阶

博客中所有内容均来源于自己学习过程中积累的经验以及对yalmip官方文档的翻译:https://yalmip.github.io/tutorials/ 1.决策变量的定义 1.1 sdpvar 上文简单介绍了sdpvar函数的用法,接下来将对其进行详细介绍。复习一下,sdpvar函数的基本语…

常用化合物谱图数据库查询系统-40个软件免费查!

化学图谱是用于描述化学物质结构和性质的图形化表示方法,在有机化学、材料科学、生物化学、药物化学等领域都被广泛的应用研究分析。不同类型的化学谱图适用于不同的化学分析和研究领域,为此笔者调研了常用化合物谱图数据库及各个类型的主流使用化学谱图…

(RX200)R5F52315ADFP/R5F52318ADFL/R5F52316CDFL微控制器基于RXv2 32位内核,54MHz 闪存 LQFP

RX200 32位微控制器 (MCU) 在功率效率和性能之间实现了平衡。这些MCU在工作模式下的电流消耗为0.12mA/MHz,在待机模式下的电流消耗仅为0.8μA(保留RAM内容)。RX200 MCU具有54MHz的最高CPU运行速度,可提供4.16 CoreMark/MHz的高性能…

Home Assistant 南方电网 计算电费

目录 1.China Southern Power Grid Statistics集成2.获取当月用电情况3.计算电费然后在UI上显示3.效果 1.China Southern Power Grid Statistics集成 链接 2.获取当月用电情况 因为我的电费是固定的,没有阶梯电价 用电量 * 0.63906875 电费 3.计算电费然后在UI…

ESXI8.0安装教程,在VMware Workstation安装esxi

文章目录 🐟前言🐟安装🐟在VMware WorkStation中创建虚拟机🐟ESXI部署安装🐟安装完成后配置 🐟前言 ESXI8.0版本开始最低RAM从以前的4GB变为8GB 本文所使用到的镜像以及Key都可以到我的网站中下载 地址&…

Python——— 面向对象

(一)初识面向对象 Python完全采用了面向对象的思想,是真正面向对象的编程语言, 完全支持面向对象的基本功能,例如:继承、多态、封装等。 Python 支持面向过程、面向对象、函数式编程等多种编程范 式。 Pyth…

数据结构初阶--排序2

目录 前言快速排序思路hoare版本代码实现挖坑法代码实现前后指针法代码实现 快排优化三项取中法代码实现三指针代码实现 快排非递归代码实现 归并排序思路代码实现归并非递归代码实现 计数排序思路代码实现 前言 本篇文章将继续介绍快排,归并等排序算法以及其变式。…

2023年iOS App Store上架流程详解(上)

目录 1.注册开发者账号 2.登录并配置人员 3.申请证书和配置文件 一.证书管理​ 二.新建证书​ 三.使用appuploader服务同步证书​ 1)申请证书 2)添加Identifiers和配置App ID 3)申请配置文件 1.在Xcode项目中配置签名 2.上传应用包…

数据库应用:死锁、悲观锁、乐观锁

目录 一、理论 1.死锁 2.悲观锁 3.乐观锁 二、总结 一、理论 1.死锁 (1)概念 死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系…

INVDIA GPU参数列表:P100,V100,A100,A800,H100等性能参数

一、P100与V100 训练深层神经网络的时候,V100比P100快大约2倍 二、A100 三、A800 四、H100 引用 1、 世上最全NVDIA GPU参数列表: V100, A100, A800,H100,3090,4090, A40&#xf…

Unity使用Android Stdio接入SDK制作AAR包

最近需要在Unity2021版本中接入SDK,发现和直接接入SDK有些区别,这里把接入的流程记录一下。 Unity在最新的版本中把UnityPlayActivity.java,从Class.jar中移除,需要在Unity的工程内找到这个文件,并把其加入到Android …

【监控系统】Prometheus监控组件Mysql-Exporter配置实战

Mysql-Exporter主要监控Mysql数据库的稳定性、吞吐量、连接情况、缓冲池使用情况、查询性能等各项指标,是我们压测时常常需要监控的一些指标。 目前,Exporter 支持高于5.6版本的 MySQL 和高于10.1版本的 MariaDB。在 MySQL/MariaDB 低于5.6版本时&#…

MobPush 最佳实践:消息重弹

功能概述 消息重弹功能,可在安卓在线通道送达的消息被其他消息挤下去时,重新置顶,增加消息的曝光度和点击率。 适用场景 仅支持Mob通过自有TCP通道下发的通知消息,不支持自定义推送消息支持开发者后台和推送API配置使用 功能使…