• 设计模式之UML类图以及类间关系


    类图是描述系统中的类,以及各个类之间的关系的静态视图。能够让我们在正确编写代码以前对系统有一个全面的认识。类图是一种模型类型,确切的说,是一种静态模型类型。类图表示类、接口和它们之间的协作关系。

    以下类图都是用 Visio 画的,因为这学期体系结构老师的实验报告强制使用这个软件画图。

    类图的组成

    普通类

    一个类图由三部分组成。

    • 第一部分是类名。
    • 第二部分是属性,即成员变量。格式为:可见性 属性名称:类型[ = 缺省值]
    • 第三部分是操作,即方法。格式为:可见性 方法名称(参数列表)[ : 返回类型]

    [ ]内为可选项,属性缺省值为初始值,构造方法无返回类型。

    方法的参数列表,有些写参数名称:参数类型,有些写参数类型 参数名称

    可见性包括 +(public)、-(private)、#(protected)、不写为default。

    下划线表示属性或方法是静态的。

    抽象类

    抽象类与普通类的区别就是:抽象类名称用斜体,抽象方法也是斜体。

    接口

    接口在类名称上加上<<interface>>

    类间关系

    泛化(继承)

    用于描述父类与子类之间的关系,在 UML 中,泛化关系用带空心的三角形直线来表示。

    实现

    类实现接口,在 UML 中,实现关系用带空心的三角形虚线来表示。

    关联

    关联关系用于表示一类对象与另一类对象之间有联系,通常将一个类的对象作为另一个类的成员变量。

    关联又分为双向关联、单向关联。

    • 双向关联

      默认情况下,关联是双向的,用实线连接来表示。

    • 单向关联,也称直接关联,用带箭头的实线表示。

    • 特殊的单向关联,在系统中可能会存在一些类的属性对象类型为该类本身,这种特殊的关联关系称为自关联。

    聚合

    聚合关系是关联关系的一种特例,它体现的是整体与部分、拥有(has - a)的关系;此时的整体与部分是可分离的,他们可以具有各自的生命周期,即部分可脱离整体而独立存在。在 UML 中,聚合关系用带空心的菱形直线表示。在代码实现聚合关系时,成员对象通常作为构造方法、Setter方法或业务方法的参数注入到整体对象中。

    组合

    组合关系也是关联关系的一种特例,它体现整体与部分、包含(contains - a)的关系;这种关系比聚合更强,也称为强聚合;此时的整体与部分是不可分的,整体生命周期结束即意味者部分的生命周期也结束。在 UML 中,组合关系用带实心的菱形直线表示。

    依赖

    使用,一个类用到了另一个类,而这种使用关系是非常弱的,通常只是一个局部变量。在 UML 中,依赖关系用带箭头的虚线表示。

    小结

    关联是一种关系,所有对象都有自己的生命周期,没有所有者。

    聚合是一种特殊的关联形式,其中所有对象都有自己的生命周期。

    组合也是聚合的专门形式,我们可以将其称为“死亡”关系。 它是一种强大的聚合类型。 子对象没有生命周期,如果删除父对象,则还将删除所有子对象。

    聚合与组合

    • 聚合与组合都是关联的一种,只是多了个整体与部分的关系。
    • 聚合是 has - a 关系,组合是 contains - a 关系。
    • 聚合关系中,整体被删除,并不会导致部件删除;多个整体可共用一个部件。
    • 组合关系中,整体被删除,部件也会被删除;多个整体不可共享部件。

    强弱程度

    组合 > 聚合 > 关联 > 依赖。


    ┆ 然 ┆   ┆   ┆   ┆ 可 ┆   ┆   ┆ 等 ┆ 暖 ┆
    ┆ 而 ┆ 始 ┆   ┆   ┆ 是 ┆ 将 ┆   ┆ 你 ┆ 一 ┆
    ┆ 你 ┆ 终 ┆ 大 ┆   ┆ 我 ┆ 来 ┆   ┆ 如 ┆ 暖 ┆
    ┆ 没 ┆ 没 ┆ 雁 ┆   ┆ 在 ┆ 也 ┆   ┆ 试 ┆ 这 ┆
    ┆ 有 ┆ 有 ┆ 也 ┆   ┆ 这 ┆ 会 ┆   ┆ 探 ┆ 生 ┆
    ┆ 来 ┆ 来 ┆ 没 ┆   ┆ 里 ┆ 在 ┆   ┆ 般 ┆ 之 ┆
    ┆   ┆   ┆ 有 ┆   ┆   ┆ 这 ┆   ┆ 降 ┆ 凉 ┆
    ┆   ┆   ┆ 来 ┆   ┆   ┆ 里 ┆   ┆ 临 ┆ 薄 ┆
  • 相关阅读:
    【愚人节快乐】拥抱Bootstrap,FineUI新版效果超炫!
    FineUIMvc新特性速递(大间距模式,隐藏菜单垂直滚动条)
    FineUI经典项目展示(2)基础管理系统(附在线演示)
    FineUIMvc随笔(6)对比WebForms和MVC中表格的数据库分页
    FineUIMvc随笔(5)UIHelper是个什么梗?
    FineUIMvc随笔(4)自定义回发参数与自定义回发
    FineUIMvc随笔(3)不能忘却的回发(__doPostBack)
    FineUI经典项目展示(1)生产在线管理系统
    FineUIMvc随笔(2)怎样在控件中嵌套 HTML
    FineUIPro v3.5.0发布了,减少 90% 的上行数据量,15行代码全搞定!
  • 原文地址:https://www.cnblogs.com/qiu_jiaqi/p/UML.html
Copyright © 2020-2023  润新知