类图是UML学习的核心,在学习过程中,认识到以下几种关系:泛化(Generalization),实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency) 这六种关系是我们必须要掌握的。
定义了一般元素和特殊元素之间的分类关系,等同于继承,即子类继承父类所有的特征和行为,例如:父类是动物,子类是老虎,熊猫等。那么老虎,熊猫作为一种动物则具备动物所有的特征和行为。 用三角箭头实线表示,指向父类。 下面图种前者是继承,后者为UML中的泛化。
普通关联:类之间的结构关系 ,是一种很弱的联系。用直线表示,可以有方向,包括单向联系和多项联系,其中一种特殊的可以是自身关联。
类名:person,company
Association name 关联名称:描述该关系的性质
Role names 角色名称:employee,employer 角色是关联中靠近它的一段的类对另外端的类呈现的职责。
星*(多重性):一个公司可以有任意多个人,一个人可以属于任意一个公司。
一个类也可以和自己发生关系。
聚合:
是指整体和部分的关系,就想一个书箱子和其中的书,当书没有时,书架是可以单独存在的。没有相互之间的制约关系。当整体和部分之间存在松耦合,则为聚合关系。空心菱形表示,指向整体部分。
组合:
同聚合。实心箭头表示,指向整体部分。 同样以书为例,书是先有页才能有书。必须有很明显的关系,有强制制约,以下人与身体各部分之间也是同样的关系。
聚合与组合的关系:
比较:
前者为聚合关系:火车可以由一个或多个引擎,而一个引擎可以属于一个或多个火车,可以相互独立存在。后者为组合关系:节点必须属于一个链表,不能脱离链表单独存在。
是普遍存在的关系。指的是类与类之间的使用关系。说明一个事物规格说明的变化可能影响到使用它的另一个事物。用右箭头的虚线表示。
如若有结构化关系,则应使用关联关系表示。
是类元之间的语义关系。在该关系中一个类元描述了另一个类元保证实现的契约。接口用圆圈表示。或用interface表示。类对接口的实现。
通过对类图的各个关系的学习,结合各个例子,清楚理解了类同其他类、接口、包之间的不同的关系,为以后的学习奠定了一定的基础。