UML类图关系图解

https://www.cnblogs.com/TvvT-kevin/p/9357339.html

一、类结构

在类的UML图中,使用长方形描述一个类的主要构成,长方形垂直地分为三层,以此放置类的名称、属性和方法。

其中,

  • 一般类的类名用正常字体粗体表示,如上图;抽象类名用斜体字粗体,如User;接口则需在上方加上<<interface>>。
  • 属性和方法都需要标注可见性符号,+代表public,#代表protected,-代表private。
  • 另外,还可以用冒号:表明属性的类型和方法的返回类型,如+$name:string、+getName():string。当然,类型说明并非必须。

二、类关系

类与类之间的关系主要有六种:继承、实现、组合、聚合、关联和依赖,这六种关系的箭头表示如下

1.关联关系(Association)

关联关系:属于结构关系,对象与对象之间的关系

1.1单向关联
 
1 class Man
2 {
3     public Car car;
4 }
5 class Car
6 {
7
8 }
1.2双向关联
class Studen
{
    public Grade grade;
}
class Grade
{
    public Student student;
}
1.3自关联
1 class ClassA
2 {
3     public ClassA classA;
4 }
1.1.4多重关联:
1..1 : 表示另一个类的一个对象只与该类的一个对象有关系
0..*:表示另一个类的一个对象与该类的零个或多个对象有关系
1..*:表示另一个类的一个对象与该类的一个或多个对象有关系
0..1:表示另一个类的一个对象没有或者只有一个对象有关系

m..n:表示另一个类的一个对象与该类最少有m个最多有n个对象有关系

这里值得注意的是:有*的关联性关系就有数组

 

2.依赖关系(Dependence):假设A类的变化引起了B类的变化,则说名B类依赖于A类。

  大多数情况下,依赖关系体现在某个类的方法使用另一个类的对象作为参数。

  依赖关系是一种“使用”关系,特定事物的改变有可能会影响到使用该事物的其他事物,在需要表示一个事物使用另一个事物时使用依赖关系。

所以我们一般用到的3种方式

(1)将一个对象作为类的参数,比如通过构造函数传参 public Car (A a){};

(2)将一个对象作为参数传入类的方法,比如 :public void A(Car car);

(3)在一个类里面调用静态对象的方法,比如 Car.Move();

下面我们使用第一种方式
 
 1     class Driver
 2     {
 3         public Driver(Car car)
 4         {
 5             car.Move();
 6         }
 7     }
 8
 9     class Car
10     {
11
12         public void Move(){
13         }
14     }
 

3.聚合关系(Aggregation)

聚合关系:表示整体与部分关系,部分是整体的一部分,也可以脱离整理独立存在。也就是说car被回收,gasoline不会跟car一起被回收。

 1 class Car
 2     {
 3         public Gasoline gasoline;
 4         //构造注入
 5         public Car(Gasoline gasoline)
 6         {
 7             this.gasoline = gasoline;
 8         }
 9
10         //属性注入
11         public Gasoline Gasoline
12         {
13             get { return gasoline; }
14             set { gasoline = value; }
15         }
16     }
17
18     class Gasoline
19     {
20
21     }

这里注意的是:通过构造函数注入;通过属性注入;

4.组合关系

组合关系:也是整体和部分的关系,但是组合关系中整体控制部分的生命周期,也就是说你在使用car对象的时候,在它的构造函数里面创建wheel,在回收car的时候wheel同时被回收
 
 
 1     class Car
 2     {
 3         public Wheel wheel;
 4
 5         public Car()
 6         {
 7             //实例化
 8             wheel = new Wheel();
 9         }
10     }
11
12     class Wheel
13     {
14
15     }
 

5.泛化关系(Generalization)

泛化关系:俗称继承关系,子类继承父类。
 
1 public class Subclass : Base
2     {
3     }
4
5     public class Base
6     {
7     }

6.实现关系(Realization)

实现关系:这个是属于接口之间继承的关系

 1     class Subclass : IBase
 2     {
 3         public void Move()
 4         {
 5         }
 6
 7     }
 8
 9     interface IBase
10     {
11         void Move();
12
13     }
 
标签: UML, 类图

[转帖]UML类图关系图解的更多相关文章

  1. UML类图关系图解

    一.类结构 在类的UML图中,使用长方形描述一个类的主要构成,长方形垂直地分为三层,以此放置类的名称.属性和方法. 其中, 一般类的类名用正常字体粗体表示,如上图:抽象类名用斜体字粗体,如User:接 ...

  2. 图解六大UML类图关系

    在学习UML类图的过程中,UML类图关系是必须要掌握的问题,UML定义的关系主要有六种:依赖.类属.关联.实现.聚合和组合.下面对其定义和表示方法逐一说明. UML类图关系简介 依赖(Dependen ...

  3. UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)

    UML类图关系(泛化 .继承.实现.依赖.关联.聚合.组合) 继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父 ...

  4. UML类图关系大全

    UML类图关系大全 1.关联 双向关联: C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法.在GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描述设 ...

  5. UML[1] UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)(转)

    转自:http://blog.csdn.net/zhaoxu0312/article/details/7212152 继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的是 ...

  6. UML类图关系大全【转】

    UML类图关系大全 1.关联 双向关联:C1-C2:指双方都知道对方的存在,都可以调用对方的公共属性和方法. 在GOF的设计模式书上是这样描述的:虽然在分析阶段这种关系是适用的,但我们觉得它对于描述设 ...

  7. UML类图关系(转,添加了实例)

    UML类图关系(泛化 .继承.实现.依赖.关联.聚合.组合) 在UML类图中,常见的有以下几种关系: 泛化(Generalization),  实现(Realization),关联(Associati ...

  8. 【UML】UML类图关系(泛化 、继承、实现、依赖、关联、聚合、组合)

    http://www.cnblogs.com/olvo/archive/2012/05/03/2481014.html 继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的 ...

  9. UML类图关系(继承、泛化、实现、依赖、关联、聚合、组合)

    继承.实现.依赖.关联.聚合.组合的联系与区别 分别介绍这几种关系: 继承 指的是一个类(称为子类.子接口)继承另外的一个类(称为父类.父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者 ...

随机推荐

  1. django--JWT认证

    目录 JWT认证 JWT简介 安装 djang-jwt开发 配置 手动签发jwt token 基于django_restframework-jwt的全局认证 全局启用 局部启用禁用:任何一个cbv类首 ...

  2. iOS - 逆向调试自用工具(reveal 14 Hopper Go2Shell ifunboxmac MachOView Alfred Go2Shell iTerm)

    研究了挺长一段时间的逆向感觉没啥可弄的了,再深处对我也用处不大,渐渐兴趣有些掉头了.最近有问我要工具的朋友,分享一些常用工具给用到的朋友. 用法自己百度吧,这里不再赘述. 图例(希望看到你想要的): ...

  3. ES6的常见语法!!

    let : 声明变量 不存在变量提前 拥有局部作用域 (只要有{}出现 则只在该{}范围内生效) (而var只在函数内会产生作用域范围) 不能重复声明 const : 声明常量(常量名从规范上来将 最 ...

  4. Java生成前三位是字母循环的字典

    title: Java生成前三位是字母循环的字典 date: 2018-08-17 18:52:22 tags: Java --- 最近要破解一个秘密,还好这个密码是有线索的,已知密码的前三位是三个字 ...

  5. Linux从入门到放弃、零基础入门Linux(第一篇):计算机操作系统简介、linux介绍

    一.计算机操作系统简介 操作系统的定义: 操作系统是一个用来协调.管理和控制计算机硬件和软件资源的系统程序,它位于硬件和应用程序之间. 操作系统的内核的定义: 操作系统的内核是一个管理和控制程序,负责 ...

  6. Centos7添加磁盘并分区格式化

    1.安装前准备 [root@localhost ~]# yum install xfsprogs [root@localhost ~]# modprobe xfs [root@localhost ~] ...

  7. Odoo form视图详解

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826350.html 一:Header头部 header区域一般用于展示文档流转的阶段和生命周期,以及动作 ...

  8. 201871010128-杨丽霞《面向对象程序设计(java)》第四周学习总结

    201871010128-杨丽霞<面向对象程序设计(java)>第四周学习总结 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh 这个 ...

  9. 网络编程 TCP协议:三次握手,四次回收,反馈机制 socket套接字通信 粘包问题与解决方法

    TCP协议:传输协议,基于端口工作 三次握手,四次挥手 TCP协议建立双向通道. 三次握手, 建连接: 1:客户端向服务端发送建立连接的请求 2:服务端返回收到请求的信息给客户端,并且发送往客户端建立 ...

  10. VS 编译总是出现错误: "LC.EXE 已退出,代码为-1"

    最近在开发CS的一个项目时,编译总是出现错误: "LC.EXE 已退出,代码为-1" 解决方法一:用记事本打开*.licx,里面写的全是第三方插件的指定DLL,删除错误信息,保存, ...