首页 理论教育类之间关系:信息系统开发方法与实践教程案例

类之间关系:信息系统开发方法与实践教程案例

【摘要】:如图9-7所示,鸟和动物之间是泛化关系。图9-6 依赖关系示例图9-7 泛化关系示例3.关联关系关联关系是一种结构关系,它指明一个类与另一个类之间的联系,最普通的关联是二元关联。在UML中,关联关系用一条连接两个类的实线表示。图9-11 组合关系示例4.实现关系实现关系通常用在两种情况:接口和实现接口的类之间,用例以及实现该用例的协作之间。

类之间关系最常用的有四种:依赖关系(Dependency)、泛化关系(Generalization)、关联关系(Association)、实现关系(Realization)。

1.依赖关系

依赖关系是指一个元素(提供者)的某些改变会影响到其他元素(客户)。例如,UML中表示两个类的依赖关系如图9-6所示。动物有两大特征:新陈代谢,能繁殖。动物要有生命,需要氧气、水、食物等,所以动物依赖于氧气和水,它们之间是依赖关系,用带箭头的虚线表示。

2.泛化关系

泛化关系是一种存在于一般元素和特殊元素间的分类关系,它可以用于类、用例以及其他模型元素。注意虽然实例间接受到类的影响但泛化关系只用在类上而不是实例上一个类可以继承另一个类但一个对象不能继承另一个对象

在UML中,泛化关系用一条从子类指向父类的带空心三角箭头的实线表示。一般元素被称作超类或父类,特殊元素被称作子类。如图9-7所示,鸟和动物之间是泛化关系。

978-7-111-47279-7-Chapter09-7.jpg

图9-6 依赖关系示例

978-7-111-47279-7-Chapter09-8.jpg

图9-7 泛化关系示例

3.关联关系

关联关系是一种结构关系,它指明一个类与另一个类之间的联系,最普通的关联是二元关联。在UML中,关联关系用一条连接两个类的实线表示。

除了关联的基本形式,为了更详细地描述关联关系,有几种应用于关联的修饰:名称、角色(Role)、多重性。

(1)名称

关联可以有个名称,用以描述关联的性质。通常用动词或动词短语来命名关联,如图9-8所示。

(2)角色

角色是关联关系中一个类对另一个类表现出的职责,它的名称是名词或名词短语,用以解释对象是如何参与关系的,如图9-9所示,并且对角色名称使用了可见性符号。

978-7-111-47279-7-Chapter09-9.jpg

图9-8 关联的名称

978-7-111-47279-7-Chapter09-10.jpg

图9-9 关联的角色

(3)多重性(www.chuimin.cn)

多重性是UML的一种约束,赋给一个端点的多重性,表示该端点可以有多少对象与另一个端点的一个对象关联。多重性的语法见表9-1。

表9-1多重性语法示例

978-7-111-47279-7-Chapter09-11.jpg

如图9-9所示,某段时间一个学生只能在一个学校学习,一个学校可以有多个学生。

关联关系分为一般关联(Association)、聚合(Aggregation)和组合(Composition)关系。

(1)关联关系

这是最常见的二元关系。例如企鹅与气候有很大的关系,企鹅需要知道气候的变化,需要了解气候的规律。当一个类“知道”另一个类时,可以用关联关系。

(2)聚合关系

聚合关系是一种特殊类型的关联,表示整体与部分的关系。聚合关系表示一种弱的“拥有”关系,体现的是A类可以包含B类,但B类不是A类的一部分。在UML中,聚合关系用带空心菱形的实线表示,头部指向整体,箭头指向部分。如图9-10所示,大雁是群居动物,每个大雁属于一个雁群,每个雁群有很多只大雁。它们之间满足聚合关系。

978-7-111-47279-7-Chapter09-12.jpg

图9-10 聚合关系示例

(3)组合关系

组合关系是一种强的“拥有”关系,体现了严格的整体和部分的关系,整体和部分的生命周期一样。组合关系用实心的菱形加实线箭头表示。另外,组合关系的连线两端还有一个数字“1”和“2”,被称为基数,表明这一端的类可以有几个实例。如图9-11所示,“鸟”和“翅膀”是整体和部分的关系,并且鸟和翅膀的生命周期是相同的,所以两者是组合关系。很显然,一只鸟应该有两个翅膀。如果一个类可能有无数个实例,就用“n”来表示。关联关系和聚合关系也是可以有基数的。

978-7-111-47279-7-Chapter09-13.jpg

图9-11 组合关系示例

4.实现关系

实现关系通常用在两种情况:接口和实现接口的类之间,用例以及实现该用例的协作之间。

在UML中,实现关系的符号与泛化关系的符号类似,用一条带指向接口的空心三角箭头的虚线表示。泛化关系用一条带指向接口的空心三角箭头的实线表示,如图9-12所示。因为接口还有棒棒糖表示法,所以实现接口的方法有两种。

978-7-111-47279-7-Chapter09-14.jpg

图9-12 实现关系示例