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

什么是统一建模语言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.hqwc.cn/news/26591.html

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

相关文章

【Leetcode】43. 字符串相乘

Halo,这里是Ppeua。平时主要更新C,数据结构算法,Linux与ROS…感兴趣就关注我bua! Leetcode 43 题目:示例:题解:详细图解:代码实现: 题目: 示例: 题解: 这是…

DBeaver数据库管理工具安装连接PostgreSQL和DM

文章目录 1. 安装2. 连接PostgreSQL3. 连接DM83.1 下载驱动3.2 添加驱动3.3 连接3.4 创建表空间和用户3.5 执行sql 4. 连接Mysql 1. 安装 下载地址 https://dbeaver.io/download/ 2. 连接PostgreSQL 配置显示所有数据库 第二个勾选会显示模板数据库 点击测试连接&#xff0…

如何搭建个人博客?

博客成品展示: 首页: 代码高亮 文章分类 首先需要准备一台云服务器和域名。 域名没有备案的话推荐雨云的美国,速度挺快的。 点我跳转服务器购买地址 配置选入门版也够用了,一年大概200块钱不到,标准版更好咯&#x…

【UniApp开发小程序】项目创建+整合UI组件(FirstUI和uView)

创建项目 下图为初始化的项目的文件结构 引入组件 俗话说:“工欲善其事,必先利其器”,为了更加方便地开发出页面较为美观的小程序,我们先引入成熟的UI组件,再开始开发之旅。(如果你是前端高手&#xff0…

mycat设置sql隔离级别的问题

问题 General log中出现大量SQL “SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ”。 该语句会引起两个问题, 1: "REPEATABLE READ"不是我们预期的事物隔离级别。 2: 大量无效的SQL影响性能。 注: MySql的可重复读会带来怎样…

[STM32教程]01如何开始准备hal库的开发环境

文章目录 概述1、认识硬件环境1.1 ARM简介1.2 STM32简介 2. 软件开发环境准备2.1 Keil MDK安装2.2 安装STM32Cube MX2.3 安装STM32 HAL库2.4 St-Link V2使用 总结 概述 本文介绍如何准备stm32f103的hal库工程开发环境,包括cubemx安装、keil mdk安装、stm32 hal库安…

Linux下如何部署Nuxt项目(二)

Linux下如何部署Nuxt项目(一)_小鸟哗啦啦的博客-CSDN博客,书接上回,以实际场景开始。 请认真看完这篇文章,还不会部署Nuxt,我直接拿弹弓打你们家玻璃! 一、nuxt的配置检查 服务端渲染的应用,应该是先编译构…

【从零开始学习JAVA | 第二十九篇】Stream流

目录 前言: Stram流: 设计目标: 使用步骤: 1.先得到一条Stream流,并把数据放上去。 2.利用Stream流中的各种API进行操作。 使用Stream流的注意事项: 总结: 前言: 本文我们将学习Stream流…

vue3 前端编码规范

prettier 配置 1. vscode 安装prettier 的 插件 2. 新建 .prettierrc 文件 {"semi": false, // 不尾随分号"singleQuote": true, // 使用单引号"trailingComma": "none" // 多行逗号分隔的语法,最后一行不加逗号 }eslin…

《远见》阅读笔记

不同的环境,不同的职业,职业生涯的建议并没有什么不同 找到热爱的工作,建立热爱的生活 如何思考职业远景 如何分配时间 如何扩张人脉 职业生涯决策框架 三个部分 职场思维、框架、工具实用性建议和案例现实生活为基础,平衡职…

Animboat Application Framework

SpringBoot的服务将部署在云端 管理云端数据和处理分布式的业务请求 本地基础服务将作为云端和终端中间媒介, 与局域网内其它dcc 插件或者app运行实例进行通信, 同时本地基础服务将负责本地数据的管理。 每个AppInstance都会有自己的FlaskSvr用于与Loc…

Acrel-1000DP分布式光伏系统在重工企业的应用

安科瑞 崔丽洁 摘 要:分布式光伏发电特指在用户场地附近建设,运行方式以用户侧自发自用、余电上网,且在配电系统平衡调节为特征的光伏发电设施,是一种新型的、具有广阔发展前景的发电和能源综合利用方式,它倡导就近发电…