统一建模语言(UML) |  类图

什么是UML?

  UML是一种用于可视化描述系统,具有广泛用途的建模语言。作为一种标准化的图形语言,在软件工业中被用于软件系统部件的具体化,可视化,结构化描述以及撰写文档,同样在商业模型中也得到应用。

UML的优点:

  • 使复杂的软件设计更为简单,也能够实现像OOP(面向对象编程)这一类被广泛应用的概念。
  • 用理解起来可能更容易的图来描述,避免了大量的文字。
  • 是表达和交流概念或系统结构变得更容易。
  • 在一张图中就能够描绘出整个系统。
  • 程序员实用类图来描述实际需求时,可让问题更加清晰明了,实现起来更容易。

UML的分类

  UML通常分为两类:描述结构的UML图(Structural UML diagrams)和描述行为的UML图(Behavioral UML diagrams),具体见下表:

描述结构的UML图 描述行为的UML图
  • 类图(Class diagram)
  • 包图(Package diagram)
  • 对象图(Object diagram)
  • 组件图(Component daigram)
  • 组合结构图(Composite structure diagram)
  • 部署图(Deployment diagram)
  • 活动图(Activity diagram)
  • 时序图(Sequence diagram)
  • 用例图(Use case diagram)
  • 状态图(State diagram)
  • 协作图(Communication diagram)
  • 交互关系概览图(Interaction overview diagram)
  • 时间线图(Timing diagram)

UML | 类图

  类图展示出OOP中的类,接口,及其中存在的关系,关联与协作。UML在类图中是标准化的。类是OOP的主要构件模块,而类图用恰当的结构展示OOP中遇到的一切,包括类,继承关系,类关系。它能够描述各种对象和它们之间的静态关系。使用类图的主要目的:

  • 类图是唯一能够恰当的展示出OOP中各种不同概念的UML。
  • 利用类图来对应用程序做出优化的设计与分析高效而快速。
  • 类图是部署图和组件图的基础。

类图一般的规则如下:

  • 每个类用一个矩形框表示,框内由类名,属性,及定义的操作三个子部件构成。
  • 三种表示可见性的修饰符:
    • + 表示public
    • # 表示protected
    • -  表示private
    • ~  表示default(无修饰符)

一些常用的构成模型的组件:

  • 类(Class){名(name),属性(attribute),方法(method)
  • 对象(Object)
  • 接口(Interface)
  • 关系(Relationships) { 继承(inheritance),关联(association),泛化(generalization)}
  • 关联(association){双向,单向(unidirectional,aggregation)}

常用表示关系的组件:

关于绘制类图:

一些在线或离线的软件都能够完成类图的制作,比如Edraw max, lucid chart等。如果能在相关网站软件找到模板,制作类图更为方便。

推荐网站https://www.draw.io/,可制作各种各样的diagram,使用很快捷,可保存文件到本地,免费无需登录。之前也经常用来画流程图。

例子:

下图为实现interface和aggregation的类图描述。MovablePoint, MovableCircle实现Movable。MovablePoint成为MovableCircle一部分。

如下是一张类图,父类Animal有两个子类dog,cat。d1为子类dog的对象。

以下为对应代码:

import java.io.*; 

class GFG {
public static void main(String[] args)
{
dog d1 = new dog();
d1.bark();
d1.run();
cat c1 = new cat();
c1.meww();
}
} class Animal {
public void run()
{
String name;
String colour; System.out.println("animal is running");
}
} class dog extends Animal {
public void bark()
{
System.out.println("wooh!wooh! dog is barking");
}
public void run()
{
System.out.println("dog is running");
}
} class cat extends Animal {
public void meww()
{
System.out.println("meww! meww!");
}
}

参考资料:

[1]. Unified Modeling Language (UML) | Class Diagrams - GeeksforGeeks     https://www.geeksforgeeks.org/unified-modeling-language-uml-class-diagrams/

[2]. UML Class Diagrams Tutorial, Step by Step – Salma – Medium    https://medium.com/@smagid_allThings/uml-class-diagrams-tutorial-step-by-step-520fd83b300b

UML类图(Unified Modeling Language Class Diagrams)的更多相关文章

  1. 设计模式学习笔记(详细) - 七大原则、UML类图、23种设计模式

    目录 设计模式七大原则 UML类图 设计模式分类 单例模式 工厂设计模式 简单工厂模式 工厂方法模式(使用抽象类,多个is-a) 抽象工厂模式(使用接口,多个like-a) 原型模式 建造者模式 适配 ...

  2. UML(Unified Modeling Language)统一建模语言

    什么是模型 模型是对现实的简化 模型是提供系统的蓝图,模型可是包括详细计划.也可是是从更高程度考虑系统的总体计划,每个系统可以从不同的方面用不通过的模型来描述.因而每个模型都是在语义上闭合的抽象系统. ...

  3. 终于明白六大类UML类图关系了

    UML,全称Unified Modeling Language,统一建模语言.而UML图分为用例图.类图.对象图.状态图.活动图.时序图.协作图.构件图.部署图等9种图. 在面向对象语言中,我们经常看 ...

  4. 统一建模语言(UML,Unified Modeling Language)

    Something about UML: 统一建模语言(UML,英语:Unified Modeling Language)是非专利的第三代建模和规约语言.UML是一种开放的方法,用于说明.可视化.构建 ...

  5. 学习笔记之UML ( Unified Modeling Language )

    Unified Modeling Language - Wikipedia https://en.wikipedia.org/wiki/Unified_Modeling_Language The Un ...

  6. UML 类图介绍

    UML 类图介绍 一. UML 简介 UML ( Unified Modeling Language )即统一建模语言,是 OMG ( Object Management Group )发表的图标式软 ...

  7. UML类图还不懂?来看看这版乡村爱情类图,一把学会!

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.码场心得

  8. UML类图与面向对象设计原则

    1. 引言     从大一开始学习编程,到如今也已经有两年了.从最初学习的Html,Js,JaveSe,再到JavaEE,Android,自己也能写一些玩具.学习过程中也无意识的了解了一些所谓的设计模 ...

  9. UML类图的6大关系

    <小酌重构系列>已经完成了大约1/3了,在这些文章中,我使用了一些简单的类图来描述重构策略.在之后的文章中,我可能会借助稍微复杂一些的UML类图来介绍.但是在此之前,我觉得有必要先介绍一下 ...

随机推荐

  1. drupal7创建自定义的panels布局

    很简单,在主题的 *.info文件中添加一句代码: 这一句很简单,但也很重要,没有这一句,就没在panels的配置界面去显示自定义的布局 plugins[panels][layouts] = layo ...

  2. MVC 设计模式概述

    (尊重劳动成果,转载请注明出处:http://blog.csdn.net/qq_25827845/article/details/53292312) 1.MVC设计模式: 如图所示,MVC模式(Mod ...

  3. SD从零开始19-20

    SD从零开始19 免费货物(Free Goods) 包含和不包含赠品数量Exclusive and Inclusive Bonus Quantities 在一些产业领域,例如零售,化工行业,消费品行业 ...

  4. 【Python】pydot安装失败解决方法

    使用keras时输出网络结构需要用到pydot,总是安装失败,最后按照下面这样的步骤成功了. 1.安装graphviz:pip install graphviz 2.安装graphviz软件,地址在: ...

  5. bootstrap使用基础

    1.为了适应跨屏浏览,Bootstrap为单元格预定义了4种class ,分别对应于手机.ipad.笔记本电脑.台式机. <div class="row"> <d ...

  6. javascript中注册和移除事件的4种方式

    对于html中的一些元素注册事件的方式有多种 第一种: 复制代码代码如下: <script> function test() { alert("OK"); } < ...

  7. shell變量和數組

    我們要知道shell是一個很重要的腳本能幫助我們完成很多事情 shell語言其實和很多的語言的語法是差不多的 變量: 變量的定義很簡單的,但是等號兩邊是不可以有空格的(不能有空格) 命名只能使用英文字 ...

  8. Android 的提权(root)原理【转】

    Android的内核就是Linux,所以Android获取root其实和Linux获取root权限是一回事儿. su还需要所有者(Owner)是root才能正确的给其他程序赋予root权限.linux ...

  9. chmod chown llinux文件及目录的权限介绍

    linux 文件或目录的读.写.执行权限说明: chmod :设置文件或目录权限. u:所有者 g:所在组 o:其他组 a:所有人(u.g.o的总和) chmod  -R  文件1/文件2…..    ...

  10. 50家硅谷IT公司技术博客

    分享一下 50 家硅谷优秀 IT 公司技术博客,从中可以了解企业文化,技术特色和设计语言,如果直接列出来很单调,加上点评,算吐槽版吧. 知名大厂   1. Facebook https://www.f ...