UML类图入门

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

类的UML图示

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

UML类图入门_C#

对应的C#代码:

public class Employee
{
    private string name;
    private int age;
    private string email;

    public void ModifyInfo() { }
}

UML属性定义格式

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

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

UML操作(方法)定义格式

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

类之间关系

关联

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

UML类图入门_开发语言_02

对应的C#代码:

public class LoginForm
{
    private Button loginButton;
}
public class Button
{
}

双向关联

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

UML类图入门_开发语言_03

对应的C#代码

public class Customer
{
    private Product[] products;
}

public class Product
{
    private Customer customer;
}

单向关联

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

UML类图入门_C#_04

对应的C#代码:

public class Customer
{
    private Address address;
}
public class Address
{
}

自关联

UML类图入门_开发语言_05

对应的C#代码:

public class Node
{
    private Node subNode;
}

多重性关联

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

表示方式

说明

1…1

另一个对象与该类的一个对象有关系

0…*

另一个对象与该类的零个或多个对象有关系

1…*

另一个对象与该类的一个或多个对象有关系

0…1

另一个对象与该类的零个或一个对象有关系

m…n

另一个对象与该类的最少m个最多n个对象有关系(m≤n)

UML类图入门_开发语言_06

对应的C#代码:

public class Form
{
    private Button[] buttons;
}
public class Button
{
}

聚合关系

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

UML类图入门_UML_07

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; }
    }
}

组合关系

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

UML类图入门_uml_08

对应的C#代码:

public class Head
{
    private Mouth mouth;
    public Head(Mouth mouth)
    {
        this.mouth = mouth;
    }
}
public class Mouth
{
}

依赖

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

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

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

UML类图入门_c#_09

对应的C#代码:

public class Car
{
    public void Move()
    {
    }
}
public class Driver
{
    public Driver(Car car)
    {
        car.Move();
    }
}

泛化

泛化关系也就是继承关系

UML类图入门_c#_10

对应的C#代码:

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() { }
}

接口实现

UML类图入门_uml_11

\

对应的C#代码:

public interface Vehicle
{
    void Move();
}
public class Ship : Vehicle
{
    public void Move()
    {
        
    }
}
public class Car : Vehicle
{
    public void Move()
    {
        
    }
}