zoukankan      html  css  js  c++  java
  • UML类图

    一、UML类图基本介绍

    1,UML介绍

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

    2,UML图

      画UML图与写文章差不多,都是把自己的思想描述给别人看,关键在于思路和条理,UML图分类:

    • 用例图(use case)
    • 静态结构图:类图、对象图、包图、组件图、部署图
    • 动态行为图:交互图(时序图与协作图)、状态图、活动图

      说明:类图是描述类与类之间的关系的,是UML图中最核心的

    3,UML类图

    • 用于描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系。
    • 类之间的关系:依赖、泛化(继承)、实现、关联、聚合与组合

    二、类图——依赖(Dependence)

    1,基本介绍

    • 依赖关系:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖。
    • 代码表现:局部变量、方法的参数护着对静态方法的调用
    • 标识符:带箭头的虚线,指向被使用者

    2,示例图

      代码示例

    //另外4个类与当前类都是依赖关系
    public class PersonService {
        private PersonDao personDao;
        public void save(Person person) {
        }
        public IDCard getIDCard(Integer personid) {
            return new IDCard();
        }
        public void modify() {
            Department department = new Department();
        }
    }
    
    class PersonDao {}
    
    class Person {}
    
    class IDCard {}
    
    class Department {}

      

    3,总结

    • 类中用到了对方
    • 类的成员属性
    • 方法的返回类型
    • 方法接收的参数类型
    • 方法中使用到

    三、类图——泛化(Generalization)

    1,基本介绍

    • 泛化关系:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。
    • 标识符:带三角箭头的实线,箭头指向父类

    2,示例图

      代码示例

    public abstract class Father {
        public void eat() {
        }
    }
    
    public class Son extends Father {}

      

    3,总结

    • 泛化关系实际上就是继承关系
    • 如果A类继承了B类,我们就说A和B存在泛化关系

    四、类图——实现(Implementation)

    1,基本介绍

    • 实现关系:指的是一个class类实现Interface接口(可以是多个)的功能;实现是类与接口之间最常见的关系;在java中此类关系通过关键字implements明确标识
    • 标识符:带三角箭头的虚线,箭头指向接口

    2,示例图

      代码示例

    public interface PersonService {
        public void delete(int id);
    }
    
    public class PersonServiceImpl implements PersonService {
        @Override
        public void delete(int id) {}
    }

      

    五、类图——关联(Association)

    1,基本介绍

    • 关联关系:是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生、丈夫与妻子关联等。关联可以是双向关联,也可以是单向关联。双向关联可以有两个箭头或没有箭头,单向关联有一个箭头。它是依赖关系的特例
    • 0..1:表示可以有0个或者1个实例;0..*: 表示对实例的数目没有限制;1   :表示只能有一个实例;1..* :表示至少有一个实例
    • 标识符:带普通箭头的实心线,指向被拥有者

    2,示例图

      代码

    public class Teacher {
    }
    public class Student {
        Teacher teacher;
    }

      

    六、类图——聚合(Aggregation)

    1,基本介绍

    • 聚合关系:是整体与部分的关系,且部分可以离开整体而单独存在。聚合关系是关联关系的特例,所以他具有关联的导航性与多重性。
    • 标识符:使用带空心菱形的实现表示

    2,示例图

      代码示例,与关联代码一致

    public class Computer {
        Mouse mouse;
    
        public void setMouse(Mouse mouse) {
            this.mouse = mouse;
        }
    }
    
    public class Mouse {
    }

       

    七、类图——组合(Composition)

    1,基本介绍

    • 组合关系:是整体与部分的关系,但部分不能离开整体而单独存在组合关系也是关联关系的一种,是比聚合关系还要强的关系
    • 标识符:带实心菱形的实线,菱形指向整体

    2,示例图

      代码示例,与关联代码一致

    public class Computer {
        Mouse mouse = new Mouse();
    }
    
    public class Mouse {
    }

      

    八、总结

      组合、聚合、关联和依赖这几种关系都是语义级别的,所以从代码层面并不能完全区分各种关系。关系所表现的强弱程度依次为:组合>聚合>关联>依赖。

  • 相关阅读:
    《House of Cards》观后感
    几个常见的壳的脱壳
    【转】Arp的攻防实战
    Back Track 5 之 漏洞攻击 && 密码攻击 && Windows下渗透工具
    Back Track 5 之 Web踩点 && 网络漏洞
    Back Track 5 之 网络踩点(二)
    Back Track 5 之 网络踩点
    51单片机总线与非总线的程序对比
    关于PHP写的投票网站之刷票终结版
    关于PowerShell中的命令的别名
  • 原文地址:https://www.cnblogs.com/bbgs-xc/p/15173646.html
Copyright © 2011-2022 走看看