欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

UML类图操作(二)

程序员文章站 2024-02-19 22:25:22
...
在上一篇中讲了类图的操作以及介绍,当然类不是单独存在的,类与类之间存在着关系,UML提供了类之间的关系的表达方式。

下面简单介绍设置操作,双击关系线,然后找到Detail
UML类图操作(二)
1.关联关系(Association)

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

1.1.1单向关联
UML类图操作(二)

class Man
{
    public Car car;
}
class Car
{

}

1.1.2双向关联

UML类图操作(二)

class Studen
{
    public Grade grade;
}
class Grade
{
    public Student student;
}

1.1.3自关联
UML类图操作(二)
class ClassA
{
    public ClassA classA;
}

1.1.4多重关联:
1..1 : 表示另一个类的一个对象只与该类的一个对象有关系
0..*:表示另一个类的一个对象与该类的零个或多个对象有关系
1..*:表示另一个类的一个对象与该类的一个或多个对象有关系
0..1:表示另一个类的一个对象没有或者只有一个对象有关系
m..n:表示另一个类的一个对象与该类最少有m个最多有n个对象有关系

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


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

UML类图操作(二)

class Car
    {
        public Gasoline gasoline;
        //构造注入
        public Car(Gasoline gasoline)
        {
            this.gasoline = gasoline;
        }

        //属性注入
        public Gasoline Gasoline
        {
            get { return gasoline; }
            set { gasoline = value; }
        }
    }

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

1.3组合关系
组合关系:也是整体和部分的关系,但是组合关系中整体控制部分的生命周期,也就是说你在使用car对象的时候,在它的构造函数里面创建wheel,在回收car的时候wheel同时被回收
UML类图操作(二)
    class Car
    {
        public Wheel wheel;

        public Car()
        {
            //实例化
            wheel = new Wheel();
        }

    }

    class Wheel
    {
 
    }
2.依赖关系(Dependency)
依赖关系:依赖关系属于一种使用关系,比如司机使用车,但是这个车会变化,可以开自行车,可以开轿车。。一般都是某个类使用另一个类里面的对象作为参数使用

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

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

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

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

下面我们使用第一种方式
UML类图操作(二)
    class Driver
    {
        public Driver(Car car)
        {
            car.Move();
        }
    }

    class Car
    {

        public void Move()
        { }
    }

3.泛化关系(Generalization)
泛化关系:俗称继承关系,子类继承父类。

UML类图操作(二)
public class Subclass : Base
    {
    }

    public class Base
    {
    }
4.实现关系(Realization)

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

UML类图操作(二)
    class Subclass : IBase
    {
        public void Move()
        {
        }

    }

    interface IBase
    {
        void Move();

    }

相关标签: UML 类图关系