UML 基本介绍

  1. UML(统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果
  2. UML本身是一套符号的规定, 就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系,比如
    1. 接口
    2. 实现
    3. 泛化(继承)
    4. 依赖
    5. 组合
    6. 聚合

  1. 使用UML来建模,常用的工具有Rational Rose, 也可以用一些插件来建模

UML建模插件(Eclipse版)

自行参考老师的建模工具

UML建模插件(IDEA版)

因为现在开发中大多数都是使用的IDEA,虽然视频中使用的是Eclipse, 但是我还是使用IDEA来写

在这个给大家推荐一个很好用的UML插件

安装PlantUML

https://www.yuque.com/jieshou-r0wj4/gtydap/me3gmz

安装直接参考链接安装就可以,我单独写了一篇,就不在这里再写了

这个插件功能非常强大,不止可以用来画类图和根据类直接解析成图还可以画

我们这里只说Class 类图

符号,关系

参考官网 类图符号

https://plantuml.com/zh/class-diagram

我这里只写一下关系符号

语法

描述

样式

(--)代表直线(..)代表虚线

关系描述

图样式

A --|> B

继承

A ..|> B

实现

A ..> B

依赖

A --> B

关联

A --o B

聚合

A --* B

组合

其他语法直接看上面的链接, 里面有详细写 语法

UML 图

画图其实和写文章差不多,都是把自己的思想描述表达出来,关键是在于思路和条理

分类

用例图

use case

静态结构图

类图, 对象图, 包图, 组件图, 部署图

动态行为图

交互图(时序图与协作图), 状态图, 活动图

说明:

  1. 类图是描述类与类之间的关系, 是UML 图中最核心的, 同样也是设计模式中的核心

UML 类图

基本介绍

  1. 用于描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系
  2. 类之间的关系: 依赖, 继承, 实现, 关联, 聚合 和 组合

示例

代码形式

package com.dance.design.uml.demo;public class Person {private Integer id;private String name;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}
}

在这里教一个小技巧, 我们写完代码后不需要手动去画类图,可以直接使用PlantUML Parser解析出来

在类上点击

起一个名字点击生成,就可以得到类图了

是不是非常Nice

依赖关系

只要是在类中用到了对方, 那么他们之间就存在依赖关系,如果没有对方,编译都通不过

代码

package com.dance.design.uml.dep;public class PersonServiceBean {private PersonDao personDao;public void savePerson(Person person){}public IDCard getIDCard(Integer personId){ return new IDCard(); }public void modify(){Department department = new Department();}
}
class PersonDao{}
class IDCard{}
class Person{}
class Department{}

类图

这个生成出来只有类图,没有依赖关系, 自己去写关系,通过上面说的符号,关系

我这里写一遍后面就直接贴图了

@startuml
class com.dance.design.uml.dep.PersonServiceBean {
- PersonDao personDao
+ void savePerson(Person)
+ IDCard getIDCard(Integer)
+ void modify()
}
class com.dance.design.uml.dep.PersonDao {
}
class com.dance.design.uml.dep.IDCard {
}
class com.dance.design.uml.dep.Person {
}
class com.dance.design.uml.dep.Department {
}
com.dance.design.uml.dep.PersonServiceBean ..> com.dance.design.uml.dep.PersonDao
com.dance.design.uml.dep.PersonServiceBean ..> com.dance.design.uml.dep.IDCard
com.dance.design.uml.dep.PersonServiceBean ..> com.dance.design.uml.dep.Person
com.dance.design.uml.dep.PersonServiceBean ..> com.dance.design.uml.dep.Department
@enduml

OK了

小结

  1. 类中用到了对方
  2. 如果是类的成员属性
  3. 如果是方法的返回类型
  4. 如果是方法接收的参数类型
  5. 方法中有使用到

泛化(继承)关系

泛化其实就是继承, 是依赖关系的一种特殊情况

代码

package com.dance.design.uml.ext;public abstract class AbstractPerson {public void save(){}public void delete(){}
}
class Person extends AbstractPerson{}

类图

刚才在点击IDEA的时候发现IDEA其实默认是带了Diagrams这个类图插件的,这个也挺好用的直接就能显示,但是好像不能修改,但是可以控制方法,构造,接口这些是不是展示,感觉也挺好的, 有喜欢的可以去试试, 这里我们还是用PlantUML吧

哦~原来继承关系是可以自动解析出来的, 但是依赖就不行了

然后又回去看了看 Diagrams 发现居然可以展示依赖关系,上面有个小按钮, 还有组合关系居然也显示出来了, 而且也能编辑修改,突然感觉PlantUML不香了

而且还可以控制是否展示方法,啥的

emm, 我们还是以PlantUML来写吧, 工作中自然是哪个好用 用哪个(然后我在后面其实都贴了Diagrams的图)

小结

  1. 泛化就是继承
  2. 我感觉这个名词绝对是个坑, 继承就继承白, 还泛化, 面试的时候肯定会有点蒙

实现关系

就是A类实现了B接口, 其实也是依赖的一种特殊情况

代码

package com.dance.design.uml.impl;public interface PersonService {void save();
}
class PersonServiceImpl implements PersonService{@Overridepublic void save() {System.out.println("实现");}
}

类图

没错, 我粘贴了Diagrams的图

但是突然发现两个一起使用会更好,如果是单个类文件的话,Diagrams会更好, 但是如果是包的话PlantUML会更好

有对比才有伤害

感觉PlantUML有点不好,就是在解析的时候不解析依赖关系, 其他的都很好,哎后面还是用PlantUML吧(渣男本难)

小结

实现关系其实 没什么好说的,这个是在开发中最常用的 接口+impl

关联关系

关联关系其实就是类与类之间的关联

常见的关联关系其实就是表设计时候的关系

关系

描述

1 对 1

一个人 一张身份证

1 对 多

一个公司下好多部门

多 对 多

一个部门下好多人, 一个人又存在于多个部门

关联具有导航性, 就是方向 1 -> 1 是单向的 如果是 1 <-> 1就是双向的

关系具有多重性

  • 1 表示有且仅有1个
  • 0... 表示0个或多个
  • 0,1 表示0个或者1个
  • n...m 表示n个到m个都可以
  • m...* 表示至少m个

一对一

代码

package com.dance.design.uml.gl.onevone;public class Person {/*** 身份证*/private IDCard idCard;
}
class IDCard{}

类图

一对多

代码

package com.dance.design.uml.gl.onevduo;import java.util.List;public class Gx {/*** 多部门*/private List<Department> departments;
}
class Department{}

类图

多对多

代码

package com.dance.design.uml.gl.duovduo;import java.util.List;public class Person {private List<Department> departments;
}
class Department{private List<Person> personList;
}

当然开发中不会这么写,一般都会用中间表,这里只是写样例

类图

聚合关系

基本介绍

聚合关系表示的是整体和部分的关系, 整体和部分可以分开, 聚合关系是关联关系的特例, 所以他具有关联的导航性和多重性

一台电脑由键盘, 显示器, 鼠标等部件组成; 组成电脑的各个配件是可以从电脑上分离出来的, 使用实线-空心菱形表示

代码

package com.dance.design.uml.gl.jh;public class Computer {public Mouse mouse;public Keyword keyword;public View view;
}
class Mouse{}
class Keyword{}
class View{}

类图

组合关系

基本介绍

组合关系: 也是整体与部分的关系, 但是整体和部分不可以分开

在我们看来, 台式机, 鼠标和键盘和显示器, 都是可以从主机上分离的, 所以他们是聚合关系, 但是如果是笔记本的话,显然自带键盘, 显示器都是不可分离的, 只有鼠标可以分离(触控板不可以), 这时显示器和电脑是组合关系,键盘和电脑是组合关系, 鼠标和电脑是聚合关系

代码

package com.dance.design.uml.gl.jh;public class Computer {public Mouse mouse;private Keyword keyword = new Keyword();private View view = new View();
}
class Mouse{}
class Keyword{}
class View{}

类图

组合采用实线-实心菱形表示

02-设计模式 UML类图相关推荐

  1. 23种设计模式 UML 类图及对应示例代码 (二)

    23种设计模式 UML 类图及对应示例代码 (二) 11.DoFactory.GangOfFour.Flyweight.Structural Flyweight:运用共享技术有效的支持大量细粒度的对象 ...

  2. 设计模式-UML类图

    篇文章来总结下UML类图,本来不打算讲UML类图的,因为我在学习设计模式的时候,一遇到有关UML的就会自动忽略,一看感觉就很复杂.但是随着学习的深入,发现不掌握UML类图,对设计模式或者某一个框架没有 ...

  3. 23种设计模式UML类图图解

    目录 一 .类图的表示 二.创建者模式 1.单例模式 2.简单工厂模式 3.工厂方法模式 4.抽象工厂模式 5.原型模式 6.建造者模式 三.结构型模式 1.代理模式 2.适配器模式 3.装饰者模式 ...

  4. 设计模式——UML类图

    统一建模语言简介 统一建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可视化建模语言,1997 年被国际对象管理组织(OMG)采纳为面向对象的建模语言的国际标 ...

  5. Java设计模式——UML类图

    一.引言 UML -- Unified modeling language UML (统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果. 在我们的 ...

  6. Java 大黑话讲解设计模式 -- UML类图

    前言 关于UML类图的这篇文章,我觉得把它放在设计模式专栏的篇首最为合适,因为在学习设计模式的时候,经常会遇到有关UML类图,没有去专门学过的童鞋肯定会感觉很复杂.学到后面,发现不掌握UML类图,对设 ...

  7. Java设计模式—UML类图

    个人感觉总结很好的UML类图,转http://blog.csdn.net/u013467442/article/details/41808501 UML类图几种关系的总结 在UML类图中,常见的有以下 ...

  8. 极简设计模式 - UML类图几种线条

    文章目录 前言 1.组合 2.聚合 3.关联 3.1单向关联 3.2双向关联 3.3自关联 4.依赖 5.实现 6.继承(泛化) 总结 参考 前言 设计模式系列目录 中间先夹一篇类图的基本点吧,与人方 ...

  9. 23种设计模式——UML类图+简要分析+例题

    三类设计模式 创建型模式,共五种:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式. 结构型模式,共七种:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式. 行为型模 ...

  10. [大话设计模式]UML类图基本图示法,以及PowerDesigner的工具板介绍

    文章目录 矩形方块讲解 继承关系 实现接口 聚合关系 组合关系 依赖关系 关联关系 矩形方块讲解 继承关系 PowerDesigner中对应实现继承关系对应的工具板是Generalization 实现 ...

最新文章

  1. iOS 9音频应用开发基础教程(大学霸内部资料)
  2. 精益数据分析 | 你孜孜追求的“增长”可能只是自嗨
  3. 【rabbitmq】Authentication failed (rejected by the remote node), please check the Erlang cookie
  4. mysql 实时血备份_windows下设置自动备份 mysql 批处理
  5. Chrome查看cookie
  6. Mr.J-- jQuery学习笔记(二十一)--模拟微博页面
  7. 为什么女人喜欢有钱的男人?
  8. php redis list 长度限制,(PHP)redis List(列表)操作
  9. JS === 实现通过点击td 跳转相应的图片
  10. 如何学习opencv
  11. java编程新手自学手册_Java Web编程新手自学手册
  12. 运算放大器由来及虚短虚断的讨论
  13. RG Magic Bullet
  14. NSIS求助!!!,如有大佬知道怎么办,请留言回复!!!感谢!!!
  15. 用上柔宇「办公神器套装」,我一天就写了三天的稿子
  16. python爬取美女_知乎大神用Python爬取高颜值美女(Python爬虫+人脸检测+颜值检测)...
  17. asp.net使用Aspose.Cells实现excel预览
  18. 2021年中国面料行业现状分析:行业毛利率为11.9%[图]
  19. Jetty的安装、配置和使用(三种使用方式)
  20. 中国数字标牌行业市场供需与战略研究报告

热门文章

  1. IntelliJ IDEA / Webstorm 2019.3 PJ方法(永久有效)
  2. 如何将ip修改成域名
  3. 网络 | NAT、SNAT、DNAT
  4. Java中求集合交集、并集、差集
  5. matlab标线,如何在matlab中以方位角画线?
  6. 使用git命令——分支切换
  7. python pandas读取csv文件指定行_python pandas获取csv指定行 列的操作方法
  8. The pylance server crashed 5 times in the last 3 minutes
  9. Linux系统一键安装可视化桌面环境支持浏览器及RDP访问
  10. 企业服务总线(ESB)