zoukankan      html  css  js  c++  java
  • UML常用图、常见关系、设计模式

    1、UML简介

    uml,统一建模语言。

    使用面向对象设计的建模工具,比如starUML,但独立于任何具体程序设计语言。

    对系统产品进行说明、可视化和编制文档。

    2、UML常用关系

    • 泛化(Generalization):一种继承关系,继承是类与类或者接口与接口最常见的关系
    • 实现(Realization):实现是类与接口中最常见的关系
    • 依赖(Dependency):类与类之间的关系,虚线+箭头,比较弱
    • 关联(Association):类与类/接口之间的关系,实线+箭头,比较强
    • 聚合(Aggregation):强的关联关系,整体和部分的关系,同时是可以分离的
    • 组合(Composition):比聚合更强,是一种强聚合关系。体现整体与部分的关系,但此时整体与部分是不可分的

      各种关系的强弱顺序:泛化= 实现> 组合> 聚合> 关联> 依赖

     

    泛化关系

    一种继承关系,子类继承自父类,而父类是从子类泛化而来;

    一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;

    在Java中此类关系通过关键字extends明确标识,在c++中用:来表示。

    例子:

    //C#代码,类B继承类A
    class ClassB: ClassA { }
    //Java代码
    class ClassB extends ClassA{}

     实现关系

    是一种类与接口的关系,一个class类实现interface接口(一个或者多个)的功能。

    实现是类与接口中最常见的关系

    Java中通过implements关键字来表示,在c#中用“:”表示

    例子:

    //C#代码
    class
    ClassC:InterfaceC{ }

     依赖关系

     表示类与类之间的连接,表示一个类依赖于另外一个类的定义,依赖关系时是单向的。

    类与类之间的关系,虚线+箭头,比较弱

    在java中,依赖表现为:局部变量,方法中的参数和对静态方法的调用

    例子:某人要过河,则人与船的关系就是依赖,人过河之后,与船的关系就解除了,因此是一种弱的连接。

    代码实现:

    //Person类依赖Boat类
    
    //Boat类,定义了method1方法/函数
    public class Boat{
        public method1(){}
    }
    
    //Person类
    public class Person {
        //通过参数的形式用Boat类
        public method2(Boat boat){
            boat.method1();
        }
    
        //直接应用Boat类
        public method3(){
            Boat.method1();
        }
    }

     关联关系

    是一种拥有的关系,它使一个类知道另一个类的属性和方法

    类与类之间的关系,实线+箭头,比较强

    关联关系有单向关联、双向关联、自身关联、多维关联等等。其中后三个可以不加箭头。

    关联有两个端点,每个端点可以有一个基数,表示这个关联的类可以有几个实例:

      0..1 表示可以有0个或者1个实例

      0..* 表示对实例的数目没有限制

      1     表示只能有一个实例

      1..* 表示至少有一个实例

    表现在代码层面,为被关联的类B以类属性的形式出现在类A中,也可能是关联类A引用了被关联类B的全局变量。

    ps:多维关联有这个标志

    例子1:使用实例变量来实现的

     聚合关系

    强的关联关系,整体和部分的关系,同时是可以分离的

    例子:带空心菱形的实心线,菱形指向整体

     组合关系

    比聚合更强,是一种强聚合关系。体现整体与部分的关系,但此时整体与部分是不可分的

    例子:带实心菱形的实线,菱形指向整体

    一图概括

    3、UML常用图

    • 静态结构图Static Structure Diagram

    类图Class Diagram
    对象图Object Diagram
    用况图Use Case Diagram

    • 交互图Interaction Diagram

    顺序图/时序图Sequence Diagram
    协作图/通信图Collaboration Diagram/ communication Diagram
    状态图State chart Diagrams
    活动图Activity Diagrams

    ps:协作图和时序图在语意上是相通的,所以可以互相转换

    • 实现图Implementation Diagrams

    构件图Component Diagram
    部署图Deployment Diagram

    4、UML设计模式

    参考:https://www.cnblogs.com/zytrue/p/8484806.html

  • 相关阅读:
    流程图的标准画法
    java应用,直接请求没问题,通过nginx跳转状态吗400
    jenkins启动java项目的jar包总是退出
    可以通过下面的脚本直观的看一下当前系统中所有进程的得分情况:
    sonarqube安装的坑
    Windows共享设定-使用net use添加网络盘带上账号密码
    Synctoy2.1使用定时任务0X1
    如果报错,使用 journalctl -f -t etcd 和 journalctl -u etcd 来定位问题。
    NodePort 只能在node节点上访问,外部无法访问
    mysql5.7 yum安装
  • 原文地址:https://www.cnblogs.com/pskcoco/p/12607655.html
Copyright © 2011-2022 走看看