知识回顾--UML各个关系的对应代码

前端之家收集整理的这篇文章主要介绍了知识回顾--UML各个关系的对应代码前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

UML的几种关系介绍请移步《UML中的关系》

要真正画好UML图,透彻的理解各个关系的具体含义,需要明白各个关系对应的代码实现。

一、依赖@H_403_12@ 依赖是类的五种关系中耦合最小的一种关系。@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

依赖关系可以描述为:Uses a@H_403_12@ 在生成代码的时候,这两个关系类都不会增加属性。@H_403_12@

Public class FilmClip{
     public FilmClip() {}
}
@H_403_12@
Public class Channel{
     public Channel(){}
}
依赖关系的表现形式 1 Channel 类是全局的,则 FilmClip 类可以调用 @H_403_12@

例如:VB中的公共模块,任何使用这个模块的类都叫做依赖于这个模块

表现形式2Channel类是FilmClip类的某个方法中的变量FilmClip类可以调用它。

表现形式3Channel类是作为FilmClip类中某个方法的参数或者返回值

如:

Public FilmClip{
    Public Channel Grownup(Channel channel) {
               return null;
       }
}
二、泛化@H_403_12@ 泛化关系可以描述为:Is a ,子类将继承父类的所有属性方法

@H_403_12@ @H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

对应代码

class Shape{}

public class Circle : Shape{}

public class Polygon : Shape{}

三、关联

(1)双向关联

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

(2)单向关联

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

C3->C4:表示相识关系,指C3知道C4,C3可以调用C4的公共属性方法。没有生命期的依赖。一般是表示为一种引用。@H_403_12@

(3)自身关联@H_403_12@ @H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

代码对应:

1、单向关联代码

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

Public class Water {
     public Climate m_Climate;
     public Water(){}
}

@H_403_12@

Public class Climate {
     public Climate() {}
}

可见生成代码中,Water类的属性增加Climate类。

2、双相关联代码示例:@H_403_12@

@H_403_12@

Public class Water {
     public Climate m_Climate;
     public Water(){}
}
@H_403_12@
Public class Climate {
   public Water m_Water;
     public Climate() {}
}

可见生成代码中,两个类的属性添加了!@H_403_12@ 3、聚合

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

聚合:表示雁群类是由大雁类聚合而成。雁群类聚合大雁类,但是大雁可以离开雁群而独立存在

Public class GooseGroup {
    public Goose goose;
    Public GooseGroup(Goose goose) {
               this.goose = goose;
       }
}
4、组合

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

Public class Goose {
   public Wings wings;
   public Goose() {
       wings = new Wings();
    }
}

聚合组合的区别:@H_403_12@ 1)构造函数不同:@H_403_12@ 聚合类的构造函数中包含了另一个类作为参数。@H_403_12@ 雁群类(GooseGroup)的构 造函数中要用到大雁(Goose)作为参数传递进来。大雁类(Goose)可以脱离雁群类而独立存在。@H_403_12@ 组合类的构造函数中包含了另一个类的实例化。@H_403_12@ 表明大雁类在实例化之前,一定要先实例化翅膀类(Wings),这两个类紧密的耦合在一起,同生共灭。翅膀类(Wings)是不可以脱离大雁类(Goose)而独立存在。@H_403_12@ 2)信息的封装性不同@H_403_12@ 在聚合关系中,客户端可以同时了解雁群类和大雁类,因为他们都是独立的。@H_403_12@ 在组合关系中,客户端只认识大雁类,根本就不知道翅膀类的存在,因为翅膀 类被严密的封装在大雁类中。@H_403_12@

@H_403_12@

四、实现

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

@H_403_12@

实现指的是一个class类实现interface接口(可以是多个)的功能

实现是类与接口之间最常见的关系之一。

interface interfaceA{}

class classA :interfaceA{}

猜你在找的VB相关文章