UML(Unified Modeling Language) 统一建模语言,又称标准建模语言。是用来对软件密集系统进行可视化建模的一种语言。UML的定义包括UML语义和UML表示法两个元素。UML是在开发阶段,说明、可视化、构建和书写一个面向对象软件密集系统的制品的开放方法。最佳的应用是工程实践,对大规模,复杂系统进行建模方面,特别是在软件架构层次,已经被验证有效。统一建模语言(UML)是一种模型化语言。模型大多以图表的方式表现出来。一份典型的建模图表通常包含几个块或框,连接线和作为模型附加信息之用的文本。这些虽简单却非常重要,在UML规则中相互联系和扩展。

以上内容来自百度百科。

推荐一个绘图和学习的在线工具ProcessOn

UML类图,属于UML图中的一种,是在面向对象语言用中用来表示一个类的图形,基本的UML类图如下所示:

类简单表示:

如上图,就表示一个类,三个格子从上至下分别表示:

  • 类名(如果是接口,就使用斜体表示)
  • 类的特性(一般是类的字段和属性,可没有这一行)
  • 类的操作(一般是类的方法或行为)

它们前边的符号有以下几类:“+”表示public,“-”表示private,“#”表示protected

即最上边的UML类图表示代码如下:

public class Student {
private String name;
private String sex;
private int age; public void study() {
System.out.println("study");
} protected void sleep() {
System.out.println("sleep");
} public void eat() {
System.out.println("eat");
}
//get 和set方法和这个类的属性无关
}

类的关系表示:

  1. 继承关系(空心三角形加实线表示)

public class SeniorSchool extends Student {

    public void graduate() {
System.out.println("毕业");
}
public void cllegeEntranceExam() {
System.out.println("高考");
}
}
  1. 实现接口(空心三角形加虚线表示)

  • 让高三学再实现玩这个接口
public interface Play {
void play();
}
public class SeniorSchool extends Student implements Play {

    public void graduate() {
System.out.println("毕业");
} public void cllegeEntranceExam() {
System.out.println("高考");
}
//实现接口方法
@Override
public void play() {
System.out.println("高三学生玩");
}
}
  1. 依赖关系(用虚线箭头表示)

    所谓依赖关系,就是构造这个类的时候,可以依赖其他的类。比如:人类依赖水和空气,学生也是人类,所以如下
  • Student有一个构造方法如下:
/**
* Student的一个构造方法
* 依赖于Air 和 Water
*
* @param air
* @param water
*/
public Student(Air air, Water water) { }
  1. 关联关系(使用实线箭头表示)

所谓关联关系,其实就是这个类有一个属性是其他类,如下图和代码。

  • 宿舍类
public class Dormitory {
private String num;
}
  • 高一学生类
public class PrimaryStudent extends Student {

    private Dormitory dormitory;
}
  • 注意它和依赖关系的区别,有很多小伙伴很容易理解为这才是依赖关系
  1. 聚合关系(使用空心菱形和实线箭头表示)



    直接看代码,一目了然,学校中有很多学生就是一个聚合关系。说这个学校可能是有些难以被接受,如果是用学生群来表示可能会更容易理解
public class School {
private Student[] students;
}
  1. 合成(组合)关系(用实心菱形和实线箭头表示)
  • 它表示的是一种强‘拥有’关系,和之前的依赖与关联有很大的相似,就比如Stuent类中的这个name,sex,age属性,它就是一种组合关系,它们是一个Student类的组成,因为在初始化一个Student对象时,这三个就必须有。虽然这三个的类型是一个基本类型,如果是一个类的话就更好理解了,但是“万物皆对象”,也是可以勉强理解的。
  • 为了更好的理解,我们就给Student这个类一个组合关系的Book类。

public class Student {
private Book book; public Student(Book book) {
this.book = book;
}
}

欢迎关注我的微信公众号“小鱼与Java”,

最后再贴上整个图:

打开UML类图的正确姿势的更多相关文章

  1. 最全Pycharm教程(43)——Pycharm扩展功能之UML类图使用 代码结构

    版权声明:本文为博主原创文章,转载时麻烦注明源文章链接,谢谢合作 https://blog.csdn.net/u013088062/article/details/50353202 1.什么是UML ...

  2. intellij idea 高级用法之:集成JIRA、UML类图插件、集成SSH、集成FTP、Database管理

    之前写过一篇IntelliJ IDEA 13试用手记,idea还有很多高大上的功能,易用性几乎能与vs.net媲美,反正我自从改用idea后,再也没开过eclipse,今天来看几个高级功能: 一.与J ...

  3. webpack环境搭建开发环境,JavaScript面向对象的详解,UML类图的使用

    PS:因为所有的设计模式都是基于面向对象来完成的,所以在讲解设计模式之前先来过一下面向对象都有哪些知识点 搭建开发环境 初始化npm环境 下载安装nodejs安装即可,nodejs自带npm管理包,然 ...

  4. UML类图的6大关系

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

  5. [.net 面向对象程序设计深入](1)UML——在Visual Studio 2013/2015中设计UML类图

    [.net 面向对象程序设计深入](1)UML——在Visual Studio 2013/2015中设计UML类图 1.UML简介 Unified Modeling Language (UML)又称统 ...

  6. UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)

    UML类图关系(泛化 .继承.实现.依赖.关联.聚合.组合) 继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父 ...

  7. UML——在Visual Studio 2013/2015中设计UML类图

    1.UML简介 Unified Modeling Language (UML)又称统一建模语言或标准建模语言. 简单说就是以图形方式表现模型,根据不同模型进行分类,在UML 2.0中有13种图,以下是 ...

  8. 转:深入浅出UML类图(具体到代码层次)

    深入浅出UML类图 作者:刘伟 ,发布于:2012-11-23,来源:CSDN   在UML 2.0的13种图形中,类图是使用频率最高的UML图之一.Martin Fowler在其著作<UML ...

  9. [转载]UML类图总结

    前言 类图和序列图是UML中最常用的两种Diagram.我将做详细的总结.在许多书中,或者网站中,在介绍一个系统的子系统的设计时,很多时候,都是给出简单的类图来简述构成子系统的类之间的关系.这足以说明 ...

随机推荐

  1. List泛型

    .Net自从2.0以后开始支持泛型. 泛型的作用:可以创建独立于被包含类型的类和方法.泛型类使用泛型类型,并可以根据需要使用特定的类型替换泛型类型.这就保证了类型安全性:如果某个类型不支持泛型类,编译 ...

  2. winForm学习 2019年4月11日

    1.Directory静态类 相似类:File.Path.StreamReader.StreamWirter 创建文件夹:Directory.CreateDirectory 删除文件夹:Directo ...

  3. 浅析 .NET 中 AsyncLocal 的实现原理

    目录 前言 1.线程本地存储 2.AsyncLocal 实现 2.1.主体 AsyncLocal<T> 2.2.AsyncLocal<T> 在 ExecutionContext ...

  4. #《Essential C++》读书笔记# 第三章 泛型编程风格

    基础知识 array与vector是连续存储空间,可以用指针的算术运算实现对容器的访问.list也是一个容器,不同的是,list的元素以一组指针相互链接(linked):前向(forward)指针指向 ...

  5. SpringBoot缓存 --(二)Redis单机缓存

    pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  6. qt creator源码全方面分析(2-9)

    目录 Semantic Highlighting 通用高亮 高亮和折叠块 Semantic Highlighting Qt Creator将C++,QML和JavaScript语言理解为代码,而不是纯 ...

  7. Html介绍,认识html标签

    什么是网页?网页就是我们我们提前写好的代码样式经过浏览器的渲染展示出来的样式效果.其实我们常说的上网就是浏览各式各样的网页,这些网页都是由html标签组成,下面就是一个简单的网页,效果图如下: 简单看 ...

  8. vue(四)--属性绑定

    v-bind通过v-bind进行属性绑定v-bind:href, 可以简写成 :href <body> <div id="app"> <a v-bin ...

  9. 第二章.学习halcon的准备工作

    *图片读取 read_image (Test1, 'C:/Users/Administrator/Desktop/new/Test1.jpg') *文件夹读取 list_files ('C:/User ...

  10. P1055 ISBN号码(getline(cin,s); printf("%s",str); )

    题目描述 每一本正式出版的图书都有一个 ISBN 号码与之对应,ISBN 码包括 9 位数字.1 位识别码和 3 位分隔符,其规定格式如 x-xxx-xxxxx-x,其中符号 - 就是分隔符(键盘上的 ...