UML学习备忘录

news2025/1/24 10:42:48

UML学习备忘录

UML 全称是 Unified Modeling Language(统一建模语言),它以图形的方式来描述软件的概念。它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。UML的本质就是为了交流。

UML的概念包括了UML语义(Semantics)和UML表示符(Notation)两个部分。

UML语义定义了静态模型和动态模型。

UML表示符为开发者或开发工具使用这些图形符号和文本语法为系统建模提供了标准。

为什么需要 UML

一个软件项目要经历业务调研、立项、需求采集、架构设计、编码开发和测试验证等多个环节。

每个环节可能角色并不相同,同样的文档同样的话语越向后传递就越容易失真。因此就容易出现最终交付的产品不是客户真正想要的这种情况。

如何避免角色间信息传递的失真,保证信息能被准确的传达和准确的理解?一种好的办法就是大家使用标准化的语言。

统一建模语言(UML)就试图用标准化的语言来覆盖整个软件过程,让不同团队不同角色可以用相同的语言顺畅的沟通。

UML 的适用场景

UML 既可以描述某个问题领域,也可以表达构思中的软件设计,还可以描述已经完成的软件实现。

它适用于面向对象分析设计的整个过程。这个过程可以分为三个阶段,

第一个阶段是通过建模(modeling)将现实世界转为业务模型。

第二个阶段是对业务模型概念化,建立适合计算机理解和实现的模型,也就是概念(Conceptual)模型。

第三个阶段是对概念模型实例化,得到相对详细的设计(Design)模型。

参见下图:

 第三个阶段的定位:是系统实施中一个或多个对象的抽象,由此映射到实现代码,依赖于实施语言。主要工作是设计类结构:

“type(类型)”是对对象某一方面特征的归纳和抽象,映射到Java的 class。“attribute(属性)” 代表Java的 “field(字段)” 指类的成员变量; “operation(操作)” 代表Java的 “method(方法)指类的成员方法

UML图具体分类较多,UML图具体分类较多,UML图有很多种,但是并非必须掌握所有的UML图,才能完整系统分析和设计工作。一般说来,在UML图中,只要掌握类图、用例图、时序图的使用,就能完成大部分的工作。也就是说,掌握UML的20%,就能做80%的事情。对于程序员来说,最频繁使用的莫过于类图。

下面先看看类图。

类图(class Diagram)类图是面向对象建模的主要组成部分。类图以反映类的结构(属性、操作)以及类之间的关系为主要目的,描述了软件系统的结构,是一种静态建模方法。类图中的“类”与面向对象语言中的“类”的概念是对应的,是对现实世界中的事物的抽象。

 public class Employee {
  private String name;
  private int age;
  private String email;
  public void modifyInfo() {
    ......
  }
}

类的关系(Relationship)有泛化(Generalization)、实现(Realization)、依赖(Dependency)和关联(Association)。其中关联又分为一般关联关系、聚合关系(Aggregation)和组合关系(Composition)。

【此外还有只用于用例中的关系:扩展(extends)和包含(include)】

泛化(Generalization):继承的关系,实线带三角形箭头,指向父类。

实现(Realization):实现的关系,虚线带三角形箭头,指向接口。

关联(Association):拥有的关系,实线带普通箭头,指向被拥有者。

聚合(Aggregation):整体与部分的关系。实线带空心菱形,指向整体。

组合(Composition):整体与部分的关系,但不能离开整体而单独存在。实线实心菱形,指向整体。

依赖(Dependency):使用的关系,即一个类的实线需要另一个类的协助。虚线普通箭头,指向被使用者。

附、ProcessOn在线绘图网址 https://www.processon.com/

 进一步了解学习

什么是统一建模语言(UML)?

UML 入门指南 | 面向对象设计 | 类图 | 时序图 |(万字多图,非常干燥) - 知乎

一文掌握14种UML图 - 腾讯云开发者社区-腾讯云

UML Tutorial - Javatpoint

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

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

相关文章

前端ES5对象特性

ES5对象特性 对象和函数的原型 JS中每一个对象都有一个特殊的内置属性,这个特殊的对象可以指向其他的对象 我们通过引用对象的属性key来获取一个value时,它会触发 Get 的操作首先检查该对象是否有对应的属性,如果有的话就使用对象内的如果…

Pytorch中utils.data 与torchvision简介

Pytorch中utils.data 与torchvision简介1 数据处理工具概述2 utils.data简介3 torchvision简介3.1 transforms3.2 ImageFolder1 数据处理工具概述 Pytorch涉及数据处理(数据装载、数据预处理、数据增强等)主要工具包及相互关系如下图所示,主…

文献阅读(48)—— 长序列time-series预测【Informer】

文献阅读(48)—— 长序列time-series预测【Informer】 文章目录文献阅读(48)—— 长序列time-series预测【Informer】先验知识/知识拓展文章结构文章方法1. 文章核心网络结构(1) 传统意义上的transformer应…

数据结构4——线性表3:线性表的链式结构

基本概念 ​ 链式存储结构用一组物理位置任意的存储单元来存放线性表的数据元素。 ​ 这组存储单元既可以是连续的又可以是不连续的甚至是零散分布在任意位置上的。所以链表中元素的逻辑次序和物理次序不一定相同。而正是因为这一点,所以我们要利用别的方法将这些…

Kafka消息中间件(Kafka与MQTT区别)

文章目录KafkaKafka重要原理Topic 主题Partition 分区Producer 生产者Consumer 消费者Broker 中间件Offset 偏移量Kafka与mqtt区别Kafka Kafka是一个分布式流处理平台,它可以快速地处理大量的数据流。Kafka的核心原理是基于发布/订阅模式的消息队列。Kafka允许多个…

C++基础——C++面向对象之重载与多态基础总结(函数重载、运算符重载、多态的使用)

【系列专栏】:博主结合工作实践输出的,解决实际问题的专栏,朋友们看过来! 《QT开发实战》 《嵌入式通用开发实战》 《从0到1学习嵌入式Linux开发》 《Android开发实战》 《实用硬件方案设计》 长期持续带来更多案例与技术文章分享…

MySQL8.0.16存储过程比5.7.22性能大幅下降

MySQL8.0.16存储过程比5.7.22性能大幅下降 1、背景 从5.7.22迁移数据库到8.0.16,发现存储过程执行性能大幅下降。原来在5版本上执行只需要3-5秒,到8版本上居然要达到上万秒。 5版本: call Calculation_Week() OK 时间: 3.122s 8版本&#x…

移动通信(16)信号检测

常见的信号检测算法一般包括以下几类检测算法:最优、线性和非线性。最优检测算法:最大似然算法线性检测算法:迫零检测算法和最小均方误差检测算法非线性检测算法:串行干扰消除检测算法球形译码检测算法属于一种次优检测算法&#…

凤凰游攻略

凤凰游攻略1 装备📦1.1 证件1.2 日常用品1.3 药品1.4 衣物1.5 洗漱用品2 交通🚗3 住宿🏠4 美食🍕5 拍照📷5.1 租苗族服5.1.1 单租服装5.1.2 服装化妆5.2 一条龙旅拍6 路线🗺️景点🏙️7 注意⚠️…

计算机网络的166个概念你知道几个 第十二部分

计算机网络安全安全通信的四大要素:机密性、保温完整性、端点鉴别和运行安全性。机密性:报文需要在一定程度上进行加密,用来防止窃听者截取报文。报文完整性:在报文传输过程中,需要确保报文的内容不会发生改变。端点鉴…

java StringBuilder 和 StringBuffer 万字详解(深度讲解)

StringBuffer类介绍和溯源StringBuffer类常用构造器和常用方法StringBuffer类 VS String类(重要)二者的本质区别(含内存图解)二者的相互转化StringBuilder类介绍和溯源StringBuilder类常用构造器和常用方法String类,St…

0308java基础-注解,反射

一,注解 1.什么是注解: Annotation是从jdk5.0开始引入的新技术作用: 不是程序本身,可以对程序作出解释可以被其他程序读取格式: 以注释名在代码中存在,还可以添加一些参数值SuppressWarnings(value"…

0103 MySQL06

1.事务 1.一个事务其实就是一个完整的业务逻辑 如:转账,从A账户向B账户转账10000,将A账户的钱减去10000(update),将B账户的钱加上10000(update),这就是一个完整的业务逻…

【Mybatis】| 如何创建MyBatis的工具类

目录🌟更多专栏请点击👇一、前言二、实现过程1. 创建一个ThreadLocal对象2. 初始化SqlSessionFactory3. 获取并存储sqlSession对象4. 关闭sqlSession对象三、 总代码🌟更多专栏请点击👇 专栏名字🔥Elasticsearch专栏e…

向2022年度商界木兰上榜女性致敬!

目录 信息来源: 2022年度商界木兰名单 简介 评选标准 动态 榜单 为你心中的2023商界女神投上一票 信息来源: 2022年度商界木兰榜公布 华为孟晚舟获商界木兰最高分 - 脉脉 【最具影响力女性】历届商界木兰榜单 中国最具影响力的30位商界女性名单…

基于Vue+Vue-cli+webpack搭建渐进式高可维护性前端实战项目

本文是专栏《手把手带你做一套毕业设计毕业设计》的实战第一篇,将从Vue脚手架安装开始,逐步带你搭建起一套管理系统所需的架构。当然,在默认安装完成之后,会对文件目录进行初步的细化拆分,以便后续功能迭代和维护所用。…

经典100道mysql的面试题

100道mysql的面试题 目录100道mysql的面试题1. MySQL 索引使用有哪些注意事项呢?索引哪些情况会失效索引不适合哪些场景索引的一些潜规则2. MySQL 遇到过死锁问题吗,你是如何解决的?3. 日常工作中你是怎么优化SQL的?4. 说说分库与…

字体反爬慢慢总结破解方式

什么是字体反爬 网页开发者自己创造一种字体,因为在字体中每个汉字都有其代号,那么以后再网页中不会直接显示这个文字的效果。而是显示其代号,因此即使获取了网页的文本内容。也只是获取到文字的代号,而不是文字本身。 简单来说&…

逻辑优化基础-shannon decomposition

1. 简介 在逻辑综合中,香农分解(Shannon decomposition)是一种常用的布尔函数分解方法。它将一个布尔函数分解为两个子函数的和,其中每个子函数包含一个布尔变量的取反和非取反的部分。 具体来说,假设对于一个布尔函…

Mysql 索引特点

承接上文Mysql Server原理简介聚簇索引、二级索引、联合索引分别具备什么样的特点?聚簇索引数据跟索引放在一起的叫聚簇索引;数据和索引分开存储的叫非聚簇索引;innodb存储引擎,数据和文件都放在ibd文件中,实际的数据是…