UML关系

来源:互联网 发布:手机内窥镜软件 编辑:程序博客网 时间:2024/05/22 01:48

前言:

在学习设计模式的过程中用到了各种UML的关系,所以总结一次

内容:

UML:关系(4种):泛化关系,实现关系,依赖关系,关联关系(聚合,组合)

泛化关系

是一个类与另一个类的接口,可以增加自己的新功能,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。

泛化关系(Generalization)也就是继承关系,也称为“is-a-kind-of”关系,泛化关系用于描述父类与子类之间的关系,父类又称作基类或超类,子类又称作派生类。在UML中,泛化关系用带空心三角形的直线来表示。

 

•  在代码实现时,使用面向对象的继承机制来实现泛化关系,如在Java语言中使用extends关键字、在C++/C#中使用冒号“:”来实现。 

设计模式里的例子和代码:

实现关系

是用来规定接口和实线接口的类或者构建结构的关系,接口是操作的集合,而这些操作就用于规定类或者构建的一种服务。

• 接口之间也可以有与类之间关系类似的继承关系和依赖关系,但是接口和类之间还存在一种实现关系(Realization),在这种关系中,类实现了接口,类中的操作实现了接口中所声明的操作。在UML中,类与接口之间的实现关系用带空心三角形的虚线来表示。

设计模式里的代码和例子:

依赖关系

依赖关系二者之间的关系弱,一个类为另一类服务,或者负责构造另一个类实例。可以是一种临时性的,偶然的关系,

与关联关系不同的是,依赖关系是以参数变量的形式传入到依赖类中的,

依赖是单向的,要避免双向依赖。一般来说,不应该存在双向依赖。

设计模式里的代码和例子:

关联关系(聚合,组合)

1.关联关系:对于两个相对独立的对象,当一个对象的实例与另一个对象的一些特定实例存在固定的对应关系时,这两个对象之间为关联关系。也是一种拥有的关系,它使一个类知道另一个类的属性和方法

有双向关联和单向关联,双向关联有两个箭头或者没有箭头,单向关联有一个箭头,表示关联的方向。

 自关联: 在系统中可能会存在一些类的属性对象类型为该类本身,这种特殊的关联关系称为自关联。

重数性关联: 重数性关联关系又称为多重性关联关系(Multiplicity),表示一个类的对象与另一个类的对象连接的个数。在UML中多重性关系可以直接在关联直线上增加一个数字表示与之对应的另一个类的对象的个数。

设计模式里的代码和例子:

2.组合与聚合

是关联的特殊形式

(1)聚合:关联关系的一种,是强的关联关系。聚合是整体和个体的关系。聚合关系也是通过实例变量实现的,当类之间有整体-部分关系的时候,我们就可以使用组合或者聚合。聚合关系是关联关系的一种,是强的关联关系;关联和聚合在语法上无法区分,必须考察具体的逻辑关系。

设计模式里的代码和例子:

(2)组合:组合关系关系是不能共享的,比聚合关系更加强,表示类之间整体和部分的关系,组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在。部分对象与整体对象之间具有共生死的关系。组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。

设计模式里的代码和例子:

总结:

这一边学习的时候了解了更多的知识,知道了这四种关系里,泛化和实现是纵向关系,关联和依赖,组合与聚合是横向关系,具体如何体现比较不容易理解和区分。

关系联系由强到弱:组合>聚合>关联>依赖 。


原创粉丝点击