UML图中类之间的关系

简介: 类图中的关系大致一下几种 l 泛化 l 关联 l 依赖 l 组合 l 聚合  泛化 泛化是子集和超集的关系,常使用继承和实现来表示; 继承:子类到超类的实线和空心三角箭头表示 实现:子类到超类的虚线和空心三角箭头表示  依赖 依赖常常表示 一方(客户)知道另一方(提供者)并且另一方(提供者)有所改变时会对一方(客户)产生影响。

类图中的关系大致一下几种

泛化

l 关联

l 依赖

l 组合

l 聚合

 泛化

泛化是子集和超集的关系,常使用继承和实现来表示;

继承:子类到超类的实线和空心三角箭头表示

实现:子类到超类的虚线和空心三角箭头表示

 依赖

依赖常常表示 一方(客户)知道另一方(提供者)并且另一方(提供者)有所改变时会对一方(客户)产生影响。这就是常常说的耦合。

依赖有许多种类型,比较常见的类型;

拥有提供者类型的参数

接收提供者类型的参数

提供者是超类或接口

向提供者发送消息。对提供者的可见性可能是 属性,参数变量,局部变量,全局变量或类方法。

 

  public class Client
    {

        /// <summary>
        /// 1.UpdatePrintMsg 方法接收Supplier对象作为参数,然后向其发送GetPrintMsg消息
        /// 由此可见 client对象对supper具有参数可见性,并且有发送消息的耦合,因此对supplier有依赖。
        /// 如果后者发生变化,client类将会受到影响。
        /// </summary>
        /// <param name="supplier"></param>
        public void UpdatePrintMsg(Supplier supplier)
        {
            var msg = supplier.GetPrintMsg();
            Console.WriteLine("客户端:call-》"+ msg);
        }

    }

    public class Supplier
    {
        public string Msg => "提供者信息";
        public string GetPrintMsg()
        {
            return Msg;
        }
    }

客户端调用并输出 :客户端: call-》提供者信息

  Client client = new Client();
  client.UpdatePrintMsg(new Supplier());

在看另外一个例子

public class Client
    {

        /// <summary>
        /// PrintCartNum方法调用了supplier的静态方法。因此client对象对suplier类
        /// 具有静态方法依赖。
        /// </summary>
        public void PrintCartNum()
        {
            long cartNum = Supplier.GetCartId();

            Console.WriteLine(cartNum);
        }

    }

    public class Supplier
    {
        public static long GetCartId() => 1000_2000_3000_4000;
    }

客户端调用并输出:1000200030004000

  Client client = new Client();

  client.PrintCartNum();

关联

关联是一种has a 的关系,用导航性箭头(即实线+箭头)由源对象(order)那个指向目标对象(OrderItem),表示Order的一个属性是orderItem对象。在具体的实现时往往表示为类的属性

关联也可以不带箭头表示双向关联

 

聚合

聚合是uml中一种模糊的关联,其不精确地暗示了整体-部分关系(和许多普通关联一样)

为什么还定义这一术语呢?参考uml创始人之一的话:“虽然并没有给聚合赋予太多的语义,但是每个人都认为这是必要的。可以将其视为建模的安慰剂。”因此,听从uml创始者的建议,不要费心去使用聚合。相反,在适当的时候要使用组合。

 

组合

组合也称为组合聚合,这是一种很强的整体-部分聚合关系,并且在某些模型中具有效用。总是暗示“拥有-部分”的某系变体。使用实心菱形箭头表示组合。

组合关系有一下几层含义:1)在某一时刻,部分的实例只能属于一个组成实例。

2)部分必须总是属于组成;3)组成要负责创建和删除其部分,既可以自己创建/删除部分,可以与其他对象协作来创建/删除部分。总之剑在人在,剑毁人亡。

 

目录
相关文章
|
数据可视化 uml
UML类图的六大关系,最佳学习理解方式
UML类图的六大关系,最佳学习理解方式
419 0
UML类图的六大关系,最佳学习理解方式
|
数据可视化 uml
UML图讲解(关联关系,单向关联,双向关联,自关联,组合关系,依赖关系,继承关系,实现关系)
UML图讲解,关联关系,单向关联,双向关联,自关联,组合关系,依赖关系,继承关系,实现关系。
3404 0
UML图讲解(关联关系,单向关联,双向关联,自关联,组合关系,依赖关系,继承关系,实现关系)
|
测试技术 uml
用例关系 和 UML类关系
用例关系 和 UML类关系
124 0
用例关系 和 UML类关系
|
测试技术 uml
UML图的依赖、关联、聚合、组合关系(突击软考)
UML图的依赖、关联、聚合、组合关系(突击软考)
223 0
|
测试技术 uml
一次讲清:UML类图中的六大关系
今天给大家分享UML图以及其中最重要的UML类图的几大关系,几分钟交会大家如何制作出UML类图。在UML的静态机制中类图是一个重点,它不但是设计人员关心的核心,更是实现人员关注的核心。
一次讲清:UML类图中的六大关系
|
uml
通过简单例子 | 快速理清 UML 中类与类的六大关系
通过简单例子 | 快速理清 UML 中类与类的六大关系
96 0
通过简单例子 | 快速理清 UML 中类与类的六大关系
|
uml
UML - UML中类与类的关系
UML - UML中类与类的关系
299 0
UML - UML中类与类的关系
|
数据可视化 测试技术 uml
UML——概述(事物、关系、图)
UML——概述(事物、关系、图)
229 0
UML——概述(事物、关系、图)
|
设计模式 数据可视化 测试技术
【设计模式】UML类图关系与符号
UML-Unified Model Language 统一建模语言,是在开发阶段,说明、可视化、构建和书写一个面向对象软件的开放方法。统一建模语言(UML)是一种模型化语言。模型大多以图表的方式表现出来。一份典型的建模图表通常包含几个块或框,连接线和作为模型附加信息之用的文本。
204 0
【设计模式】UML类图关系与符号
一张图搞定java类之间的6种关系,以后再也不怕画UML图了
java的类之间的关系:泛化、依赖、关联、实现、聚合、组合
一张图搞定java类之间的6种关系,以后再也不怕画UML图了