UML类图入门
UML是一个通用的可视化建模描述语言,通过图形符号和文字来对系统进行建模。适用于各种软件的开发方法、生命周期的各个阶段。
类的UML图示
类使用包含类型、属性和操作(方法)且带有分割线的长方形来表示,如:
对应的C#代码:
public class Employee
{
private string name;
private int age;
private string email;
public void ModifyInfo() { }
}
UML属性定义格式
可见性 名称:类型[=默认值]
- 可见性:+、-、#分别代表public\private\protected
- 名称表示属性名
- 类型表示属性数据类型
- 默认值为可选项
UML操作(方法)定义格式
可见性 名称(参数列表)[:返回类型]
类之间关系
关联
表示类与类之间最常用的一种关系,如登录界面类LoginForm中包含一个Button类型的按钮。
对应的C#代码:
public class LoginForm
{
private Button loginButton;
}
public class Button
{
}
双向关联
默认情况关联是双向的,如顾客购买商品并拥有商品,二商品也总有某个顾客与之关联。
对应的C#代码
public class Customer
{
private Product[] products;
}
public class Product
{
private Customer customer;
}
单向关联
单向关联使用带箭头的实线来表示。
对应的C#代码:
public class Customer
{
private Address address;
}
public class Address
{
}
自关联
对应的C#代码:
public class Node
{
private Node subNode;
}
多重性关联
表示两个关联对象在数量上的对应关系
表示方式 | 说明 |
---|---|
1…1 | 另一个对象与该类的一个对象有关系 |
0…* | 另一个对象与该类的零个或多个对象有关系 |
1…* | 另一个对象与该类的一个或多个对象有关系 |
0…1 | 另一个对象与该类的零个或一个对象有关系 |
m…n | 另一个对象与该类的最少m个最多n个对象有关系(m≤n) |
对应的C#代码:
public class Form
{
private Button[] buttons;
}
public class Button
{
}
聚合关系
表示整体与部分的关系,成员对象是整体对象的一部分,但是成员对象可以脱离整体对象独立存在。如汽车和发动机,发动机可以独立存在。
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; }
}
}
组合关系
表示整体和部分的关系,和聚合不同的是,表示部分的对象不能独立存在。
对应的C#代码:
public class Head
{
private Mouth mouth;
public Head(Mouth mouth)
{
this.mouth = mouth;
}
}
public class Mouth
{
}
依赖
表示特定事物改变可能会影响到使用该事物的其他事物。
依赖关系通常通过3
种方式来实现:
- 一个类的对象作为另个类中的方法参数
- 在一个类的方法中将另个类的对象作为局部变量
- 在一个类的方法中调用另一个类的静态方法
对应的C#代码:
public class Car
{
public void Move()
{
}
}
public class Driver
{
public Driver(Car car)
{
car.Move();
}
}
泛化
泛化关系也就是继承关系
对应的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() { }
}
接口实现
\
对应的C#代码:
public interface Vehicle
{
void Move();
}
public class Ship : Vehicle
{
public void Move()
{
}
}
public class Car : Vehicle
{
public void Move()
{
}
}