• 02【UML统一建模语言】


    二、UML统一建模语言

    统一建模语言(Unified Modeling Language,UML)是一种为面向对象系统的产品进行说明、可视化和编制文档的一种标准语言,UML是面向对象设计的建模工具,独立于任何具体程序设计语言。它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息。

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

    2.1 类、接口

    2.1.1 类

    类(Class)是指具有相同属性、方法和关系的对象的抽象,它封装了数据和行为,在 UML 中,类使用包含类名、属性和操作且带有分隔线的矩形来表示。

    一个类具有属性和行为

    属性用UML格式如下:

    [可见性]属性名:类型[=默认值]
    
    • 1
    • 可见性:
      • +(Public):公有
      • -(Private):私有
      • #(Protected):受保护的

    示例:-name:String

    行为用UML格式如下:

    [可见性]行为名称(参数列表)[:返回类型]
    
    • 1

    示例:+eat():void

    下图所示是一个Perons类的UML图表示:

    class Person{
        private String name;
        private Integer age=10;
        private Date bithday;
        
        public void eat(){
            
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    2.1.2 接口

    接口(Interface)是一种特殊的类,它具有类的结构但不可被实例化,只可以被子类实现。它包含抽象操作,但不包含属性。它描述了类或组件对外可见的动作。在 UML 中,接口使用一个带有名称的小圆圈来进行表示。

    下图所示是一个Swimmable接口的UML图表示:

    public interface Live {
        void eat();
        void sleep();
        Integer cal(Integer a,Integer b); 
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    2.2 类之间的关系

    在软件系统中,类与类之间存在各种关系。根据类与类之间的耦合度从弱到强排列,UML 中的类图有以下几种关系:依赖关系、关联关系、聚合关系、组合关系、泛化关系和实现关系。其中泛化和实现的耦合度相等,它们是最强的。

    2.2.1 依赖关系(Dependency)

    依赖(Dependency)关系是对象之间耦合程度最低的一种关联关系,只要是在类中用到了对方,那么他们之间就存在依赖关系。如果没有对方,连编绎都通过不了。

    public class Person {
        
        private String username;
    
        // 买手机
        public CellPhone buyCellPhone() {
            return new CellPhone();
        }
    
        // 吃鸡肉
        public void eat(Chicken chicken) {
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    下图表示Person的依赖关系:

    在这里插入图片描述

    Tips:依赖关系使用虚线表示

    2.2.2 关联关系(Association)

    关联(Association)关系是表示对象之间的一种引用关系,如用户与角色、老师与学生、员工与部门等;关联关系分为一般关联关系聚合关联关系组合关联关系等;三者在代码上的表现相同,只是语意上有所差别。

    • 关联关系:代表一种拥有关系

    • 聚合关系:是整体与部分之间的关系,部分可以离开整体独立存在

    • 组合关系:部分与整体同生共死,部分无法脱离整体而单独存在

    我们先看一般关联关系:

    一般关联关系强调拥有关系,即我拥有你,你拥有我(也可以单向拥有)

    public class Student {
        private String username;
    
        private List<Teacher> teachers;
    }
    public class Teacher {
        private String username;
    
        private List<Student> students;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    依赖关系:

    在这里插入图片描述

    关联可以是双向的,也可以是单向的。在 UML 类图中,双向的关联可以用带两个箭头或者没有箭头的实线来表示,单向的关联用带一个箭头的实线来表示;

    例如:只有学生拥有老师,那么Student的依赖线指向Teacher;

    2.2.3 聚合关系(Aggregation)

    聚合(Aggregation)关系也是关联关系的一种,聚合关系强调的是独立,即部分离开了整体依旧可以单独存在,例如部门与员工,部门撤销了,员工依旧可以独立存在。

    public class Department {
        private List<Employee> employees;
    }
    public class Employee {
        public void work(){}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    依赖关系图:

    在这里插入图片描述

    在 UML 类图中,聚合关系使用带空心菱形的实线来表示,菱形指向整体

    2.2.4 组合关系(Composition)

    组合(Composition)关系也是关联关系的一种,但它是一种更强烈的聚合关系。组合关系强调整体与部分的关系,但是整体与部分不可以分开;例如,人和头(心)的关系,没有了人,头(心)也就不存在了。

    public class Person {
        private Head head=new Head();
        
        private Heart heart=new Heart();
    }
    
    public class Head {
    }
    public class Heart {
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    依赖关系图:

    在这里插入图片描述

    组合关系使用带实心菱形的实线来表示,菱形指向整体。

    2.2.5 泛化关系(Generalization)

    泛化(Generalization)关系是对象之间耦合度最大的一种关系,实际上就是一种继承关系

    public class Animal {
        public void eat(){}
        public void sleep(){}
    }
    public class Cat {
    }
    public class Chicken {
    }	
    public class Duck {
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    依赖关系图:

    在这里插入图片描述

    泛化关系用带空心三角箭头的实线来表示,箭头从子类指向父类

    2.2.6 实现关系(Realization)

    实现(Realization)关系是接口与实现类之间的关系,实现关系是依赖关系的特例

    public interface Swimming {
        void swimming();
    }
    public class Student implements Swimming {
        @Override
        public void swimming() {
    
        }
    }
    public class Teacher implements Swimming {
        @Override
        public void swimming() {
    
        }
    }
    public class Worker implements Swimming {
        @Override
        public void swimming() {
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    关系依赖图:

    在这里插入图片描述

    实现关系使用带空心三角箭头的虚线来表示,箭头从实现类指向接口

  • 相关阅读:
    Jenkins代码检测和本地静态检查
    Flutter For Web——一个简单的图片素材网站
    【校招VIP】前端操作系统之进程与线程
    SpringBoot项目如何实现热启动?
    服务器监控软件(二 、具体安装篇)
    Prometheus集成consul[被监控对象开启basic认证]
    现在学习软件测试好找工作吗
    sublime merge 自定义命令
    Idea远程debug操作步骤(连接服务器)
    CanvasScaler计算方法
  • 原文地址:https://blog.csdn.net/Bb15070047748/article/details/125434549