`
chunming525
  • 浏览: 55499 次
  • 性别: Icon_minigender_1
  • 来自: 衡阳
社区版块
存档分类
最新评论

一直让我迷惑的问题-UML的类图关系(c#实例)

阅读更多

    UML的类图关系分为: 关联、聚合/组合、依赖、泛化(继承)。

     /// <summary>
    /// UML类图关系:关联
    /// </summary>

    #region 双向关联:双方都拥有对方的一个指针,当然也可以是引用或者是值。C1-C2

   

    class C1
    {
        public C2 theC2 = new C2();
    };

    class C2
    {
        public C1 theC1 = new C1();
    };
    #endregion

    #region 单向关联:C3有C4的指针,而C4对C3一无所知。C3->C4

   

    class C3
    {
        public C4 theC4 = new C4();

    };

    class C4
    {

    };
    #endregion

    #region 自身关联(反身关联):自己引用自己,带着一个自己的引用。

   

    class C14
    {
        public C14 theC14 = new C14();

    };

    #endregion

    /// <summary>
    /// UML类图关系:聚合/组合
    /// 当类之间有整体-部分关系的时候,我们就可以使用组合或者聚合。
    /// </summary>


    //聚合:表示C9聚合C10,但是C10可以离开C9而独立存在
    //(独立存在的意思是在某个应用的问题域中这个类的存在有意义)。

   

    class C9
    {
        public C10 theC10 = new C10();
    };

    class C10
    {

    };

    //组合(也有人称为包容):一般是实心菱形加实线箭头表示,
    //表示的是C8被C7包容,而且C8不能离开C7而独立存在。
    //但这是视问题域而定的,例如在关心汽车的领域里,
    //轮胎是一定要组合在汽车类中的,因为它离开了汽车就没有意义了。
    //但是在卖轮胎的店铺业务里,就算轮胎离开了汽车,它也是有意义的,这就可以用聚合了。

   

    class C7
    {
        public C8 theC8 = new C8();
    };

    class C8
    {

    };

    //可以看到,代码和聚合是一样的。具体如何区别,可能就只能用语义来区分了。

    /// <summary>
    /// UML类图关系:依赖
    /// </summary>

    //指C5可能要用到C6的一些方法,也可以这样说,
    //要完成C5里的所有功能,一定要有C6的方法协助才行。
    //在形式上一般是C5中的某个方法把C6的对象作为参数使用(假设C5依赖于C6)。
    //注意,要避免双向依赖。一般来说,不应该存在双向依赖。

   

     using namespaceOfC6

    class C5
    {
        void Func(C6 c6)
        { }
    };

    /// <summary>
    /// UML类图关系:泛化(继承)
    /// </summary>

    
   

    class C11
    {
    }

    class C12 : C11
    {
    }


     重复度

这里再说一下重复度,其实看完了上面的描述之后,我们应该清楚了各个关系间的关系以及具体对应到代码是怎么样的,所谓的重复度,也只不过是上面的扩展,例如A和B有着“1对多”的重复度,那在A中就有一个列表,保存着B对象的N个引用,就是这样而已。

    依赖和聚合\组合、关联等有什么不同呢?

    关联是类之间的一种关系,例如老师教学生,老公和老婆,水壶装水等就是一种关系。这种关系是非常明显的,在问题领域中通过分析直接就能得出。

    依赖是一种弱关联,只要一个类用到另一个类,但是和另一个类的关系不是太明显的时候(可以说是“uses”了那个类),就可以把这种关系看成是依赖,依赖也可说是一种偶然的关系,而不是必然的关系,就是“我在某个方法中偶然用到了它,但在现实中我和它并没多大关系”。例如我和锤子,我和锤子本来是没关系的,但在有一次要钉钉子的时候,我用到了它,这就是一种依赖,依赖锤子完成钉钉子这件事情。

    组合是一种整体-部分的关系,在问题域中这种关系很明显,直接分析就可以得出的。例如轮胎是车的一部分,树叶是树的一部分,手脚是身体的一部分这种的关系,非常明显的整体-部分关系。

    上述的几种关系(关联、聚合/组合、依赖)在代码中可能以指针、引用、值等的方式在另一个类中出现,不拘于形式,但在逻辑上他们就有以上的区别。

     这里还要说明一下,所谓的这些关系只是在某个问题域才有效,离开了这个问题域,可能这些关系就不成立了,例如可能在某个问题域中,我是一个木匠,需要拿着锤子去干活,可能整个问题的描述就是我拿着锤子怎么钉桌子,钉椅子,钉柜子;既然整个问题就是描述这个,我和锤子就不仅是偶然的依赖关系了,我和锤子的关系变得非常的紧密,可能就上升为组合关系(让我突然想起武侠小说的剑不离身,剑亡人亡...)。这个例子可能有点荒谬,但也是为了说明一个道理,就是关系和类一样,它们都是在一个问题领域中才成立的,离开了这个问题域,他们可能就不复存在了。

分享到:
评论

相关推荐

    C# WinForm-UML类图程序,绘制UML程序-2023(绘制uml类图,保存,打开文件等等)

    在本文中,我们将深入探讨如何使用C# WinForm来创建一个UML类图程序,以及如何实现绘制、保存和打开UML类图的功能。UML(统一建模语言)是一种标准化的图形建模语言,用于软件工程和其他领域,用于描述系统的设计和...

    ROSE画图--UML类图关系大全.doc

    本篇文章将深入探讨ROSE工具如何用于绘制UML类图及其包含的各种关系,结合文档“ROSE画图--UML类图关系大全.doc”,我们将详细解析UML类图中的关键概念和关系。 首先,UML类图是描述系统静态结构的一种模型,它通过...

    UML基础与应用--UML类图解析

    UML类图主要用于描述系统的静态结构,定义类、接口、关联、泛化、实现等关系。 UML类图的组成部分包括: 1. 类(Class):对真实世界中事物的抽象,描述名称、属性和方法。 2. 关联(Association):描述类之间的...

    uml 类图实例

    uml 类图实例 oom powerdesigner 绘制

    六大UML类图以及关系

    ### UML类图关系详解 #### 一、引言 UML(Unified Modeling Language,统一建模语言)是一种广泛应用于软件工程领域的图形化语言,它帮助开发者理解和设计系统。其中,UML类图是最常用的一种图示方式,用于描述系统...

    23种设计模式-UML-类图.docx

    UML类图可以用来描述软件系统的类和对象之间的关系,包括继承关系、组合关系、关联关系等。 三、抽象工厂模式 抽象工厂模式是一种创造型设计模式,提供了一种创建一系列相关或相互依赖对象的接口,而无需指定它们...

    AndroidStudio-UML类图插件-simpleUML

    androidStrudio插件simpleUML,本来想通过androidstudio plugin 自动下载,发现找不到,最后只能从网上下载一个,然后离线安装,运行了效果确实不错,可以根据已有的代码生成UML,plantuml 这个跟eclipse配合安装了,...

    UML类图关系大全

    本文将详细介绍UML类图中的几种主要关系类型:关联、聚合/组合以及依赖,并通过具体的实例和代码示例来帮助读者更好地理解这些概念。 #### 二、关联 关联是UML中最基本的关系类型之一,用于描述两个类之间的连接。...

    JDK UML 类图大全

    在JDK中,UML类图可以帮助我们理解和分析Java类库的结构,包括类、接口、继承关系、关联、聚合和组合等。 **类图的基本元素** 1. **类(Class)**: 类图的核心元素,表示具有共同属性、操作和关系的一组对象。在...

    UML类图说明类图关系

    ### UML类图关系详解 #### 一、引言 统一建模语言(Unified Modeling Language,简称UML)是一种广泛使用的图形化语言,用于软件工程的设计、开发和维护。其中,UML类图是用于描述系统中类的静态结构的重要组成...

    UML类图关系大全!!!!!

    UML类图是UML中最常见和基础的图表之一,它直观地展示了系统中各类之间的关系。在这个“UML类图关系大全”中,我们将深入探讨类图中的各种关系,帮助你全面理解这些概念。 首先,我们要了解类图的基本元素:类、...

    从UML类图到关系数据库表的代码生成方法

    从UML类图到关系数据库表的代码生成方法研究 UML(统一建模语言)是一种用于软件系统建模的标准化建模语言,它的类图是其中最常用的一种图示,用于表示系统中类的静态结构。关系数据库是目前主流的数据库管理系统,...

    UML中类图实例讲解关系

    UML类图关系讲解 UML(Unified Modeling Language),即统一建模语言,是一种标准的建模语言,用于描述软件系统的结构、行为和业务过程。UML类图是UML中的一种重要组成部分,用于描述类和对象之间的关系。 1.UML...

    spring源码全部uml类图

    UML(统一建模语言)类图是理解软件设计的重要工具,它可以帮助开发者直观地看到类之间的关系,如继承、实现、关联、依赖等。在"spring源码全部uml类图"中,我们可以深入探讨Spring框架的内部结构和设计模式。 首先...

    计算器 UML类图 c++

    首先,类图是UML中的核心概念之一,它展示了类的结构和关系。对于一个计算器应用,我们可以设想几个关键的类:`Calculator`(计算器)、`Expression`(表达式)、`Operand`(操作数)以及可能的`Operator`(运算符)...

    UML类图中的类 抽象类,具体类,主动类等

    在UML(统一建模语言)中,类图是一种重要的模型表示工具,它用来描绘系统中的类、接口以及它们之间的关系。类图中的类扮演着核心角色,它们定义了系统的结构和行为。类可以分为抽象类和具体类,以及主动类和非主动...

    eclipse画UML类图的jar包.zip

    UML类图是UML中的核心元素,它用于表示系统的静态结构,包括类、接口、继承关系、关联关系等。 这个压缩包包含以下三个文件: 1. net.java.amateras.xstream_1.3.4.jar:这是一个基于XStream库的Java类,用于对象...

    UML类图关系大全word文件

    在UML类图中,关系是描述类与类之间相互作用和联系的重要工具。以下是针对UML类图中几种主要关系的详细说明: 1. **关联**: 关联是类之间的基本关系,表明一类知道另一类的存在,并可以访问其公共属性和方法。...

    UML类图的各符号含义及表示

    类图是UML中最基础的图表之一,它用于描绘类与类之间的静态结构关系。下面我们将详细解释UML类图中各符号的含义。 1. 类(Class):在UML类图中,类通常用三层矩形表示。第一层写类的名称,如果类是抽象的,则名称...

    UML 类图 关系 大全 泛化、关联、依赖等

    UML 类图关系大全 UML 类图关系大全是软件开发中一种常用的图形化表示方法,用于描述系统中的类、对象之间的关系。UML 类图关系大全中有多种关系,包括泛化、关联、依赖、聚合、组合等。 1. 关联关系 关联关系是...

Global site tag (gtag.js) - Google Analytics