UML类图快速入门

UML类图快速入门

UML是一个通用的可视化建模描述语言,通过图形符号和文字来对系统进行建模。适用于各种软件的开发方法、生命周期的各个阶段。

类的UML图示

类使用包含类型、属性和操作(方法)且带有分割线的长方形来表示,如:

image-20230611151729411

对应的C#代码:

1
2
3
4
5
6
7
8
public class Employee
{
private string name;
private int age;
private string email;

public void ModifyInfo() { }
}

UML属性定义格式

可见性 名称:类型[=默认值]

  • 可见性:+、-、#分别代表public\private\protected
  • 名称表示属性名
  • 类型表示属性数据类型
  • 默认值为可选项

UML操作(方法)定义格式

可见性 名称(参数列表)[:返回类型]

类之间关系

关联

表示类与类之间最常用的一种关系,如登录界面类LoginForm中包含一个Button类型的按钮。

image-20230611153126810

对应的C#代码:

1
2
3
4
5
6
7
public class LoginForm
{
private Button loginButton;
}
public class Button
{
}

双向关联

默认情况关联是双向的,如顾客购买商品并拥有商品,二商品也总有某个顾客与之关联。

image-20230611153853618

对应的C#代码

1
2
3
4
5
6
7
8
9
public class Customer
{
private Product[] products;
}

public class Product
{
private Customer customer;
}

单向关联

单向关联使用带箭头的实线来表示。

image-20230611154331869

对应的C#代码:

1
2
3
4
5
6
7
public class Customer
{
private Address address;
}
public class Address
{
}

自关联

image-20230611154820628

对应的C#代码:

1
2
3
4
public class Node
{
private Node subNode;
}

多重性关联

表示两个关联对象在数量上的对应关系

表示方式说明
1..1另一个对象与该类的一个对象有关系
0..*另一个对象与该类的零个或多个对象有关系
1..*另一个对象与该类的一个或多个对象有关系
0..1另一个对象与该类的零个或一个对象有关系
m..n另一个对象与该类的最少m个最多n个对象有关系(m≤n)

image-20230611160944276

对应的C#代码:

1
2
3
4
5
6
7
public class Form
{
private Button[] buttons;
}
public class Button
{
}

聚合关系

表示整体与部分的关系,成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。如汽车和发动机,发动机可以独立存在。

image-20230611162914597

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Engine
{s
}
public class Car
{
private Engine engine;
public Car(Engine engine)
{
this.engine = engine;
}
public Engine Engine {
get { return engine; }
set { engine=value; }
}
}

组合关系

表示整体和部分的关系,和聚合不同的是,表示部分的对象不能独立存在。

image-20230611163649631

对应的C#代码:

1
2
3
4
5
6
7
8
9
10
11
public class Head
{
private Mouth mouth;
public Head(Mouth mouth)
{
this.mouth = mouth;
}
}
public class Mouth
{
}

依赖

表示特定事物改变可能会影响到使用该事物的其他事物。

依赖关系通常通过3种方式来实现:

  1. 一个类的对象作为另个类中的方法参数
  2. 在一个类的方法中将另个类的对象作为局部变量
  3. 在一个类的方法中调用另一个类的静态方法

image-20230611165120226

对应的C#代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
public class Car
{
public void Move()
{
}
}
public class Driver
{
public Driver(Car car)
{
car.Move();
}
}

泛化

泛化关系也就是继承关系

image-20230611170036354

对应的C#代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class Person
{
protected string name;
protected int age;
public void Move() { }
public void Say() { }
}

public class Student:Person
{
private string studentNo;
public void Study() { }
}
public class Teacher :Person
{
private string teacherNo;
public void Teach() { }
}

接口实现

image-20230611170724267\

对应的C#代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public interface Vehicle
{
void Move();
}
public class Ship : Vehicle
{
public void Move()
{

}
}
public class Car : Vehicle
{
public void Move()
{

}
}
作者

步步为营

发布于

2024-03-23

更新于

2025-03-15

许可协议