UML类图操作(二)

在上一篇中讲了类图的操作以及介绍,当然类不是单独存在的,类与类之间存在着关系,UML提供了类之间的关系的表达方式。

UML类图操作(一)

 

下面简单介绍设置操作,双击关系线,然后找到Detail

1.关联关系(Association)

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

1.1.1单向关联

 

class Man
{
    public Car car;
}
class Car
{

}

 

 

 

 

1.1.2双向关联

 

 

 

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

 

1.1.3自关联

class ClassA
{
    public ClassA classA;
}

 

1.1.4多重关联:

1..1 : 表示另一个类的一个对象只与该类的一个对象有关系
0..*:表示另一个类的一个对象与该类的零个或多个对象有关系

1..*:表示另一个类的一个对象与该类的一个或多个对象有关系

0..1:表示另一个类的一个对象没有或者只有一个对象有关系

m..n:表示另一个类的一个对象与该类最少有m个最多有n个对象有关系

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

 

1.2聚合关系(Aggregation)

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

 

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同时被回收

    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();

 

 

下面我们使用第一种方式

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

    class Car
    {

        public void Move()
        { }
    }

 

3.泛化关系(Generalization)

泛化关系:俗称继承关系,子类继承父类。

 

public class Subclass : Base
    {
    }

    public class Base
    {
    }

4.实现关系(Realization)

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

 

    class Subclass : IBase
    {
        public void Move()
        {
        }

    }

    interface IBase
    {
        void Move();

    }

 

 

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值