zoukankan      html  css  js  c++  java
  • 打开UML类图的正确姿势

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

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

    UML类图,属于UML图中的一种,是在面向对象语言用中用来表示一个类的图形,基本的UML类图如下所示:
    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. 继承关系(空心三角形加实线表示)
      UML图入门UML图学习UML类图
    public class SeniorSchool extends Student {
    
        public void graduate() {
            System.out.println("毕业");
        }
        public void cllegeEntranceExam() {
            System.out.println("高考");
        }
    }
    
    1. 实现接口(空心三角形加虚线表示)
      UML图入门UML图学习UML类图
    • 让高三学再实现玩这个接口
    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. 关联关系(使用实线箭头表示)

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

    UML图入门UML图学习UML类图

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

    UML图入门UML图学习UML类图

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

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

    最后再贴上整个图:

  • 相关阅读:
    STM32 F4 DAC DMA Waveform Generator
    STM32 F4 General-purpose Timers for Periodic Interrupts
    Python第十四天 序列化 pickle模块 cPickle模块 JSON模块 API的两种格式
    Python第十三天 django 1.6 导入模板 定义数据模型 访问数据库 GET和POST方法 SimpleCMDB项目 urllib模块 urllib2模块 httplib模块 django和web服务器整合 wsgi模块 gunicorn模块
    查看SQL Server服务运行帐户和SQL Server的所有注册表项
    Pycharm使用技巧(转载)
    SQL Server 2014内存优化表的使用场景
    Python第十天 print >> f,和fd.write()的区别 stdout的buffer 标准输入 标准输出 从控制台重定向到文件 标准错误 重定向 输出流和输入流 捕获sys.exit()调用 optparse argparse
    Python第七天 函数 函数参数 函数里的变量 函数返回值 多类型传值 函数递归调用 匿名函数 内置函数
    Python第六天 类型转换
  • 原文地址:https://www.cnblogs.com/Lyn4ever/p/12319667.html
Copyright © 2011-2022 走看看