定义

统一建模语言(英语: Unified Modeling Language ,缩写UML)是非专利的第三代建模和规约语言。

UML特点

  • UML是一种开放的方法
  • 用于说明、可视化、构建和编写一个正在开发的面向对象的、软件密集系统的制品的开放方法。
  • UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效。

UML2.2分类

UML2.2中一共定义了14种图示,分类如下:

  • 结构式图形:强调的是系统式的建模

    • 静态图(类图,对象图,包图)
    • 实现图(组件图,部署图)
    • 剖面图
    • 复合结构图
  • 行为式图形:强调系统模型中触发的事件
    • 活动图
    • 状态图
    • 用例图
  • 交互式图形:属于行为式图形子集合,强调系统模型中的资料流程
    • 通信图
    • 交互概述图(UML2.0)
    • 时序图(UML2.0)
    • 时间图(UML2.0)

UML类图

定义

Class Diagram:用于表示类、接口、实例等之间相互的静态关系。虽然名字叫类图,但类图中并不只有类(也包括权限,属性,方法等)。

记忆技巧

箭头方向

  • 定义子类时需要通过extends关键字指定父类
  • 子类一定是知道父类定义的,但父类并不知道子类的定义
  • 只有知道对方信息时才能指向对方
  • 所以箭头方向是从子类指向父类

实线-继承|虚线-实现

  • 空心三角箭头:继承或实现
  • 实线继承, is a关系,扩展目的,不虚,很结实
  • 虚线-实现,虚线代表“虚”,无实体

实线-关联|虚线-依赖

  • 实线-关联关系:关系稳定,实打实的关系,铁哥们
  • 表示一个类对象和另一个类对象有关联
  • 通常是一个类中有另一个类对象做为属性

  • 虚线-依赖关系:临时用一下,若即若离,虚无缥缈,若有若无
  • 表示一种使用关系,一个类需要借助另一个类来实现功能
  • 一般是一个类使用另一个类做为参数使用,或作为返回值

空心菱形-聚合|实心菱形-组合

  • 菱形就是一个盛东西的器皿(例如盘子)
  • 聚合:代表空器皿里可以放很多相同东西,聚在一起(箭头方向所指的类)
  • 组合:代表满器皿里已经有实体结构的存在,生死与共

  • 整体和局部的关系,两者有着独立的生命周期,是has a的关系
  • 弱关系
  • 消极的词:弱-空

  • 整体与局部的关系,和聚合的关系相比,关系更加强烈
  • 两者有相同的生命周期, contains-a的关系
  • 强关系
  • 积极的词:强-满

常见数字表达及含义,假设有A类和B类,数字标记在A类侧

  • 0..1:0或1个实例.
  • 0..*:0或多个实例.
  • 1..1:1个实例.
  • 1:只能有一个实例.
  • 1..*:至少有一个实例.

类图详解

类图从上到下包含:

  • 类名:抽象类使用斜体表示,接口用<>表示
  • 属性:访问权限+属性名:属性类型
    • +:public
    • -:private
    • #:protected
    • ~:default
    • 下横线表示static
  • 方法: 访问权限+方法名:返回值类型
    • +:public
    • -:private
    • #:protected
    • ~:default
    • 下横线表示static
    • 斜体表示抽象方法

典型的类图表示:

UML时序图

Sequence Diagram :是显示对象之间交互的图,这些对象是按时间顺序排列的。

时序图中包括的建模元素主要有:

  • 对象(Actor)
  • 生命线(Lifeline)
  • 控制焦点(Focus of control)
  • 消息(Message)等

典型的一个时序图如下:

Java设计模式(一)UML总结的更多相关文章

  1. 图解Java设计模式之UML类图

    图解Java设计模式之UML类图 3.1 UML基本介绍 UML图 UML类图 3.1 UML基本介绍 1)UML – Unified modeling language UML(统一建模语言),是一 ...

  2. Java设计模式精讲之UML急速入门

    简单记录 - 慕课网 - Java设计模式精讲 Debug方式+内存分析 文章目录 第2章 UML急速入门 2-1.UML简单入门 UML定义 UML特点 UML 2.2分类 UML类图 理解泛化.实 ...

  3. Java设计模式(二) 工厂方法模式

    本文介绍了工厂方法模式的概念,优缺点,实现方式,UML类图,并介绍了工厂方法(未)遵循的OOP原则 原创文章.同步自作者个人博客 http://www.jasongj.com/design_patte ...

  4. Java设计模式---工厂模式(简单工厂、工厂方法、抽象工厂)

    工厂模式:主要用来实例化有共同接口的类,工厂模式可以动态决定应该实例化那一个类.工厂模式的形态工厂模式主要用一下几种形态:1:简单工厂(Simple Factory).2:工厂方法(Factory M ...

  5. 浅析JAVA设计模式之工厂模式(一)

    1 工厂模式简单介绍 工厂模式的定义:简单地说,用来实例化对象,取代new操作. 工厂模式专门负责将大量有共同接口的类实例化.工作模式能够动态决定将哪一个类实例化.不用先知道每次要实例化哪一个类. 工 ...

  6. JAVA设计模式总结之23种设计模式

    上一篇总结了设计模式的六大原则<JAVA设计模式总结之六大设计原则>,这一篇,正式进入到介绍23种设计模式的归纳总结. 一.什么是设计模式                         ...

  7. 折腾Java设计模式之建造者模式

    博文原址:折腾Java设计模式之建造者模式 建造者模式 Separate the construction of a complex object from its representation, a ...

  8. 折腾Java设计模式之中介者模式

    博文原址:折腾Java设计模式之中介者模式 中介者模式 中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性.这种模式提供了一个中介类,该类通常处理不同类之间的通信,并 ...

  9. 折腾Java设计模式之备忘录模式

    原文地址:折腾Java设计模式之备忘录模式 备忘录模式 Without violating encapsulation, capture and externalize an object's int ...

  10. 折腾Java设计模式之状态模式

    原文地址 折腾Java设计模式之状态模式 状态模式 在状态模式(State Pattern)中,类的行为是基于它的状态改变的.这种类型的设计模式属于行为型模式.在状态模式中,我们创建表示各种状态的对象 ...

随机推荐

  1. 《深入理解Java虚拟机》第2版挖的坑终于在第3版中被R大填平了

    这是why技术的第34篇原创文章 本周还是在家办公的一周,上面的图就是我在家的工位,和上周<Dubbo Cluster集群那点你不知道的事>这篇文章里面的第一张图片比起来,升级了显示器支撑 ...

  2. centos 7安装reids

    一.reids下载  下载地址: https://redis.io/ 二.解压安装 ① 解压:tar -zxvf redis-5.0.5.tar.gz ② 安装环境:yum install gcc-c ...

  3. Angular路由使用

    一. 路由:根据不同URL地址,动态让根组件挂载其他组件来实现单页面应用,相对地址 1. 项目一开始创建就会询问是否添加路由(Angular routing) 2. 有无路由区别{ 1. 多了一个ro ...

  4. springmvc maven idea 多模块开发(三):建立子模块

    传统的多模块方式是建立domain.dao.service等,这种方式是按照软件架构进行分割,现在更多的应该是倾向按照功能来解耦,module前期可以配置成jar,后期也可以建立独有的页面,独立的站点 ...

  5. 关于宏MACRO,我们需要知道的事

    一.先从最宏观的角度来了解宏,这里的宏观角度是指程序的运行流程: 1,提交代码后,SAS先把代码读取储存到堆栈中: 2,用文本扫描插件来扫描堆栈中的代码,从上到下,从左到右: 3,扫描到一个分号,则编 ...

  6. SignalR—实例

    本例子将讲述使用SignalR实现页面实时显示数据,而不是需要用户刷新页面或使用Ajax轮询才能实现实时显示数据. 1.使用NuGet安装SignalR. 2.创建Hub类,起名为testHub. 3 ...

  7. 9种分布式ID生成之 美团(Leaf)实战

    整理了一些Java方面的架构.面试资料(微服务.集群.分布式.中间件等),有需要的小伙伴可以关注公众号[程序员内点事],无套路自行领取 更多优选 一口气说出 9种 分布式ID生成方式,面试官有点懵了 ...

  8. 浅析word2vec(一)

    1 word2vec 在自然语言处理的大部分任务中,需要将大量文本数据传入计算机中,用以信息发掘以便后续工作.但是目前计算机所能处理的只能是数值,无法直接分析文本,因此,将原有的文本数据转换为数值数据 ...

  9. CODEFORCES ROUND#624 DIV3

    这次比赛从名字就可以看出非常水,然鹅因为第一次打codeforces不太熟悉操作只来的及做签到题(还错了一次) A,B,C都是签到题考点思维就不写了 D题 https://codeforces.ml/ ...

  10. java设计模式学习笔记--浅谈设计模式

    设计模式的目的 编写软件的过程中,程序员面临着来自耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性等多方面的挑战.设计模式为了让程序具有更好的 1.代码重用性(即:相同功能的代码,不用多次编写) ...