• UML统一建模语言


    一、基本介绍

      (1)UML——Unified modeling language(统一建模语言),是一种用于软件系统分析和设计的语言工具,它用于帮助软件开发人员进行思考和记录思路的结果

      (2)UML 本身是一套符号的规定,就像数学符号和化学符号一样,这些符号用于描述软件模型中的各个元素和他们之间的关系,比如类、接口、实现、泛化、依赖、组合、聚合等,如下图

                  

    二、UML图

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

      UML 图分类:

      (1)用例图(use case)

      (2)静态结构图:类图、对象图、包图、组件图、部署图

      (3)动态行为图:交互图(时序图与协作图)、状态图、活动图

    三、UML类图

      (1)用于描述系统中的类(对象)本身的组成和类(对象)之间的各种静态关系

      (2)类之间的关系:依赖、泛化(继承)、实现、关联、聚合与组合

      举例:将以下代码转换为UML类图

     1 class Person { //代码形式->类图
     2     private Integer id;
     3     private String name;
     4 
     5     public void setName(String name) {
     6         this.name = name;
     7     }
     8 
     9     public String getName() {
    10         return name;
    11     }
    12 }

      结果:

      

      UML类图---依赖关系(Dependence)

      只要是在类中用到了对方,那么他们之间就存在依赖关系。如果没有对方,连编译都无法通过

      示例代码:

     1 class PersonServiceBean {
     2     private PersonDao personDao;
     3 
     4     public void save(Person person){
     5     
     6     }
     7 
     8     public IDCard getIDCard(Integer personid) {
     9 
    10     }
    11 
    12     public void modify() {
    13         Department department = new Department();
    14     }
    15 
    16 }
    17 
    18 class PersonDao {
    19 }
    20 
    21 class IDCard {
    22 }
    23 
    24 class Person {
    25     
    26 }
    27 
    28 class Department {
    29 }

      转换成类图:

      

       总结:如何判断两个类之间是否为依赖关系

      (1)类中用到了对方

      (2)类的成员属性

      (3)方法的返回类型

      (4)方法接收的参数类型

      (5)方法体中使用到

      UML类图---泛化关系(Generalization)

      泛化关系实际上就是继承关系,它是依赖关系的特例

      示例代码:

     1 abstract class DaoSupport {
     2     public void save(Object entity) {
     3         
     4     }
     5 
     6     public void delete(Object id) {
     7         
     8     }
     9 
    10 }
    11 
    12 
    13 class PersonServiceBean extends DaoSupport {
    14     
    15 }

      转换成类图:

      

       总结:

      (1)泛化关系实际上就是继承关系

      (2)如果 A 类继承了 B 类,我们就说 A 和 B 存在泛化关系

      UML类图---实现关系(Implementation)

      实现关系实际上就是 A类实现 B 接口,它是依赖关系的特例

      示例代码:

    1 interface PersonService {
    2     public void delete(Integer id);
    3 }
    4 
    5 class PersonServiceBean implements PersonService {
    6     public void delete(Integer id) {
    7     }
    8 }

      转换成类图:

      

      UML类图---关联关系(Association)

      关联关系实际上就是类和类之间的联系,它是依赖关系的特例

      关联具有导航性,即双向关系或单向关系

      关系具有多重性:如“1”(表示有且仅有一个),“0...”(表示0个或者多个),“0,1”(表示0个或者一个),“n...m”(表示n到m个都可以),“m...*”(表示至少m个)

      单向一对一关系:

    1 public class Person {
    2     private IDCard idCard;
    3 }
    4 
    5 public class IDCard {
    6     
    7 }

      转换成类图:

      

      

       双向一对一关系:

    1 public class Person {
    2     private IDCard idCard;
    3 }
    4 
    5 public class IDCard {
    6     private Person person;
    7 }

      转换成类图:

      

       

      UML类图---聚合关系(Aggregation)

      聚合关系(Aggregation)表示的是整体和部分的关系,整体与部分可以分开

      聚合关系是关联关系的特例,所以他具有关联的导航性与多重性

      举例:一台电脑由键盘(keyboard)、显示器(monitor),鼠标(mouse)等组成,组成电脑的各个配件是可以从电脑上分离出来的,使用带空心菱形的实线来表示

      示例代码:

     1 public class Computer {
     2     private Mouse mouse;
     3     private Keyboard keyboard;
     4     private Monitor monitor;
     5 
     6     public void setMouse(Mouse mouse) {
     7     }
     8 
     9     public void setKeyboard(Keyboard keyboard) {
    10     }
    11 
    12     public void setMonitor(Monitor monitor) {
    13     }
    14 }
    15 
    16 public class Keyboard {
    17 }
    18 
    19 public class Monitor {
    20 }
    21 
    22 public class Mouse {
    23 }

      转换成类图:

      

       

      UML类图---组合关系(Composition)

      组合关系(Composition)跟聚合关系(Aggregation)一样,也是整体与部分的关系,但是整体与部分不可以分开

      例如:在程序中我们定义实体:Person,IDCard 和 Head, 那么 Head 和 Person 就是组合,IDCard 和 Person 就是聚合,但是如果在程序中 Person 实体中定义了对 IDCard 进行级联删除,即删除 Person 时连同 IDCard 一起删除,那么 IDCard  和 Person 就是组合了

      具体代码:

     1 public class Person {
     2     private IDCard idCard;
     3     private Hand hand = new Hand();
     4 }
     5 
     6 public class IDCard {
     7 }
     8 
     9 public class Hand {
    10 }

      转换成类图:

      

       

  • 相关阅读:
    LeetCode Longest Uncommon Subsequence II
    Leetcode Longest Uncommon Subsequence I
    LeetCode 557. Reverse Words in a String III
    LeetCode 394. Decode String
    LeetCode 419. Battleships in a Board
    LeetCode 366. Find Leaves of Binary Tree
    LeetCode 408. Valid Word Abbreviation
    LeetCode 532. K-diff Pairs in an Array
    LeetCode Minimum Absolute Difference in BST
    LeetCode 414. Third Maximum Number
  • 原文地址:https://www.cnblogs.com/yijiahao/p/14521033.html
Copyright © 2020-2023  润新知