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

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

类图的组成

普通类

一个类图由三部分组成。

  • 第一部分是类名;

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

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

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

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

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

抽象类

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

接口

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

类间关系

泛化(继承)

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

实现

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

关联

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

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

  • 双向关联

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

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

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

聚合

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

组合

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

依赖

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

小结

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

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

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

聚合与组合

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

强弱程度

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

设计模式之UML类图以及类间关系的更多相关文章

  1. UML(一) 类图及类间关系

    原创文章,同步发自作者个人博客,http://www.jasongj.com/uml/class_diagram/ UML类图 UML类图介绍 在UML 2.*的13种图形中,类图是使用频率最高的UM ...

  2. UML类图与类间六种关系表示

    UML类图与类间六种关系表示 1.类与类图 类封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性,操作,关系的对象集合的总称. 类图是使用频率最高的UML图之一. 类图用于描述系统中所包含的 ...

  3. GOF 的23种JAVA常用设计模式总结 02 UML中的类图与类图之间的关系

    统一建模语言UML 统一建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可视化建模语言,1997 年被国际对象管理组织(OMG)采纳为面向对象的建模语言的国际 ...

  4. 【转】UML类图与类的关系详解

    UML类图与类的关系详解   2011-04-21 来源:网络   在画类图的时候,理清类和类之间的关系是重点.类的关系有泛化(Generalization).实现(Realization).依赖(D ...

  5. UML类图与类的关系详解

    摘自:http://www.uml.org.cn/oobject/201104212.asp UML类图与类的关系详解 2011-04-21 来源:网络 在画类图的时候,理清类和类之间的关系是重点.类 ...

  6. C# UML类图及类之间的几种关系

    今天晚上看了大话设计模式中的UML类图这一节感觉受益匪浅,好多年不能理解的类之间的关系理解了. 一.UML类图的表示方法 1.类的表示方法 A类用一个矩形框分三层表示,第一层是类名,斜体类名表示抽象类 ...

  7. 3.UML中的类图及类图之间的关系

    统一建模语言简介 统一建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可视化建模语言,1997 年被国际对象管理组织(OMG)采纳为面向对象的建模语言的国际标 ...

  8. UML中的类图及类图之间的关系

    统一建模语言简介 统一建模语言(Unified Modeling Language,UML)是用来设计软件蓝图的可视化建模语言,1997 年被国际对象管理组织(OMG)采纳为面向对象的建模语言的国际标 ...

  9. UML类图的6大关系

    <小酌重构系列>已经完成了大约1/3了,在这些文章中,我使用了一些简单的类图来描述重构策略.在之后的文章中,我可能会借助稍微复杂一些的UML类图来介绍.但是在此之前,我觉得有必要先介绍一下 ...

随机推荐

  1. sql server创建序列sequence

    1.创建一个序列对象 CREATE SEQUENCE [schema_name . ] sequence_name START WITH <constant> INCREMENT BY & ...

  2. 从零开始搭建Java开发环境第二篇:如何在windows10里安装MySQL

    1 下载安装包 1.1 压缩包 https://dev.mysql.com/downloads/mysql/ [外链图片转存失败(img-oesO8K09-1566652568838)(data:im ...

  3. API 资源隔离系统设计与实现

    (马蜂窝技术原创内容,公众号 ID:mfwtech) Part 1 背景 大交通业务需要对接机票.火车票.租车.接送机等业务的外部供应链,供应商的数据接口大部分通过 HTTP.HTTPS 等协议进行通 ...

  4. mysql8.0版本下命令行mysqld –skip-grant-tables 失效,无法登陆的问题

    1.管理员权限登陆cmd,不会使用管理员登陆的请搜索cmd,搜索结果右键. 2.命令行输入:net stop mysql;然后提示.服务停止中 --> 服务已停止,如出现其他错误请百度. 这只是 ...

  5. 【系统解读】SystemUI篇(一)SystemUI启动流程

    前言 SystemUI是系统启动中第一个用户肉眼可见的应用,其功能包罗万象,比如开机后看到的锁屏界面,充电时充电界面,状态栏,导航栏,多任务栏等,都是与Android手机用户息息相关的功能.所以不止S ...

  6. CodeForces-38B-Chess枚举+思维

    CodeForces-38B-Chess 这是一道与下象棋有关的题目,题意是给你一个车和马的坐标,然后再给你一个马,让你判断最后三者都不会被吃掉的可能性,注意的是三者是三个独立的个体. 这道题要知道一 ...

  7. J farm

    #include<iostream> #include<vector> #include<algorithm> #include<cstring> #i ...

  8. Vue之render渲染函数和JSX的应用

    一.模板缺陷 模板的最大特点是扩展难度大,不易扩展.可能会造成逻辑冗余 <Level :type="1">哈哈</Level> <Level :typ ...

  9. 【LeetCode】33-搜索旋转排序数组

    题目描述 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 搜索一个给定的目标值,如果数组中存在这 ...

  10. 解决go get下载包失败问题

    由于某些不可抗力的原因,国内使用go get命令安装包时会经常会出现timeout的问题.本文介绍几个常用的解决办法. 从github克隆 golang在github上建立了一个镜像库,如https: ...