UML类图关系图解

我们两清 提交于 2019-12-09 07:40:30

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图中,使用长方形描述一个类的主要构成,长方形垂直地分为三层,以此放置类的名称、属性和方法。

其中,

  • 一般类的类名用正常字体粗体表示,如上图;抽象类名用斜体字粗体,如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     }
复制代码

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!