关于UML

本秂侑毒 提交于 2019-12-16 10:02:26

写在设计模式之前,我为什么要写UML(Unified Modeling Language 统一建模语言)呢?主要是为接下来的设计模式考虑的,每一篇设计模式我都会从UML图,案例,应用三个方面来写,力求更通俗易懂的理解每一个设计模式,学以致用;设计模式的随笔博文中主要参考了《图解设计模式》一书,希望看到我博文的朋友多多支持,共同进步。话不多说,我们正式开始。

UMlL是让系统可视化、让规格和设计文档化的表现方法

一:类图

用于表示类、接口、实例之间的静态关系

1、类、类的层级结构、可见性

abstract class ParentClass {
    public int field1;
    protected short field2;
    byte field3;      
    private long field4;

    abstract void methodA(){
        // 
    }

    public void methodB(){
        //
    }
}

class ChildClass extends ParentClass{
    static float field1;
    private double field2;
    
    void methodA(){
        //
    }

    static void methodC(){
        //
    }
}    

 

 说明如下:

(1)长方形代表着类,被划分为三个区域,分别代表着类名、字段名、方法名

(2)抽象类或则会抽象方法(abstract)用斜体表示

(3)字段名前面的符号代表访问控制符,图中方法名前面的访问控制符未标注。public(+)、protected(#)、default(~)、private(-)

(4)static关键字修饰的字段名或者方法名用下划线(_)表示

(5)图中的空心箭头形状代表继承,由子类指向父类

2、接口和实现类

interface ActionInterface{
    abstract methodA();
    abstract methodB();    
}

class Action implements ActionInterface{
    void methodA(){
        //
    }
    
    void methodB(){
       //
    } 
} 

  

 

 说明如下:

(1)接口名用斜体显示

(2)带有虚线的空心箭头代表接口与实现类的关系,由实现类指向接口

3、聚合

class Color{
    //  
}

class Fruit{
    Color color;
    //
}

class Basket{
    Fruit[] fruits;
    //
}

  

 

 说明如下:

图中有Color(颜色)、Fruit(水果)、Basket(篮子)三个类,其中一个Basket的实例中包含多个Fruit类的实例,一个Fruit实例包含一个Color实例,将这种关系成为聚合关系。即只要一个类持有另外一个类一个或多个实例,就是聚合关。

 

二:时序图

程序在工作时其内部方法的调用顺序,随时间发生变化的动态行为

class client{
    Server server;
    
    void work(){
        server.open();
        server.print();
        server.close();
    }

    //  
}

class Server{
    Device device;
    
    void open(){
        //
    }

    void print(){
        device.write();
    }

    void close(){
        //
    }
}


class Device{
     void write(){
        //
     }
}

  

 

 说明如下:

(1)最上面的三个长方形代表类的实例,可用 实例名:类名表示

(2)每个实例下面有一条虚线,称为生命线,代表这个实例的生命周期,虚线上的小长方形代表一个方法

(3)实心箭头代表调用的方法,虚线箭头代表返回

(4)时序图应该从左往右,从上往下沿着生命线查看

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!