UML类图中的关系和表示方法(转载)

UML类图中的关系和表示方法(转载)

 

原始链接:https://www.cnblogs.com/luobao/archive/2017/02/06/6369685.html

 

UML类图中的关系和表示方法

类图是用来描述程序中的类以及它们之间的关系的,使用类图可以帮助我们简化对系统的理解。在UML类图中比较常见的关系有六种,它们分别是:依赖、关联、聚合、组合、泛化、实现,这六种关系中类之间的紧密程度是依次增强的:依赖 < 关联 < 聚合 < 组合 < 泛化 = 实现。

下面分别介绍一下在UML类图中类和这六种关系的表示方式。

□  类      【注:类图是用VS2013画的】

类是对具有相似结构和行为的一类对象的描述,类的命名要尽量应用领域中的术语,应该明确、无歧义,以利于相互之间的理解和交流。在UML类图中类由一个划分成三层的矩形表示,第一层是类的名称(抽象类一般用斜体表示),第二层是类的属性,第三层是类的操作。类成员的可见性,用+表示public,-表示private,#表示protected。

类的表示如下:

UML类图中的关系和表示方法(转载)

         ①依赖关系(Dependence)UML类图中的关系和表示方法(转载)

依赖是一种使用关系,即一个类需要借助另一个类实现某个功能。通常是A类的方法需要使用B类的对象作为参数。例如,在Teacher类中的Write()方法需要将Blackboard类的对象作为传入参数,且Teacher类的Write()方法依赖blackboard对象的Display()方法,所以Teacher类依赖Blackboard类。

依赖关系用【箭头+虚线】表示,箭头指向所依赖的对象。

UML类图中的关系和表示方法(转载)

②关联关系(Association)UML类图中的关系和表示方法(转载)

         关联是一种结构化的关系,用来表示一个类的对象和另一个类的对象之间有联系。通常在A类中将B类的对象作为成员变量,它使一个类知道另一个类的属性和方法。例如在班级类Class中包含一个Student类型的班长monitor,他们之间可以表示为关联关系。

         关联关系用【箭头+实线】表示,箭头指向所关联的对象。

         UML类图中的关系和表示方法(转载)

         ③聚合关系(Aggregation)UML类图中的关系和表示方法(转载)

         聚合表示一种整体和局部的关系,在聚合关系中,成员对象是整体对象的一部分,但是成员对象又是可以独立存在的,它们有各自独立的生命周期,整体对象和成员对象之间是has a 的关系。例如,学生在分组讨论问题时,学生(Student)是组(Team)的一部分,但是学生又是可以独立存在。

         聚合关系用【空心菱形+实线箭头】表示,箭头指向组成整体的元素。

         UML类图中的关系和表示方法(转载)

 

         ④组合关系(Composition)UML类图中的关系和表示方法(转载)

         组合也是一种表示整体和局部的关系,但是和聚合关系不同的是,在组合关系中,成员对象和整体对象具有统一的生命周期,一旦整体对象不存在,成员对象也将不在存在,成员对象和整体对象之间具有同生共死的关系,整体对象和成员对象之间是contains a 的关系。

例如,人(Person)和手(Hand)之间的关系。

         组合关系用【实心菱形+实线箭头】表示,箭头指向组成整体的元素。

         UML类图中的关系和表示方法(转载)

         ⑤泛化关系(GeneralizationUML类图中的关系和表示方法(转载)

         泛化关系也就是继承关系,用于描述父类和子类之间的关系。子类和父类之间是is a 的关系。例如,老师(Teacher)和人(Person)之间的关系。

         泛化关系用【空心三角+实线表示】,三角指向父类。

         UML类图中的关系和表示方法(转载)

 

         ⑥实现关系(implementation)UML类图中的关系和表示方法(转载)

         实现是类和接口之间的关系,接口定义了类所具有的能力,类通过实现接口来拥有某种能力。实现类和接口之间是has a 的关系。

         实现关系用【空心三角+虚线表示】,三角指向接口。

UML类图中的关系和表示方法(转载)

 

整体类图如下:

UML类图中的关系和表示方法(转载)

作者:luobao 
原创出处:http://www.cnblogs.com/luobao/ 
联系方式:[email protected] 
GitHub:https://github.com/mluobao 
欢迎指正、交流,一起学习,共同进步。