前言
UML中的类与关系也是其重要的组成部分。与后面要讲的类图也有着密切的关系。
主要内容
类
类是任何面向对象系统中最重要的构造块。类是对一组具有相同属性,操作,关系和语义的对象的描述。简言之,类是对客观事物的抽象。
类在UML中由一个专门的图符来表达。是分成3个分区域的矩形。顶端的分隔区为类的名字,中间的分隔区存放类的属性,属性的类型,和值。第三个分隔区放操作,操作的参数表和返回类型。
关系
抽象过程中,很少有类是独立存在的,大多数的类以某些方式彼此协作。所以,在进行建模的时候,不仅要抽象出形成系统词汇的事物,还必须对这些事物间的关系进行建模。
最常用的四种:依赖(Dependency)泛化(Generalition)关联(Associate)实现(Realizaion)
1.依赖 依赖是两个模型元素间的语义联系,依赖双方某一个模型元素的变化必须影响到另一个模型元素。
依赖关系举例图
2.泛化是一般事物称为超类或父类,和该事物的较为特殊的种类称为子类之间的关系,子类继承父类的属性和操作,除此之外通常子类还添加了新的属性和操作,或者修改 了父类的某些操作。
简单来说,泛化关系描述了类之间的“is a kind of”的关系。
泛化关系图
泛化有两个用途,多态和继承。
多态示例。
Canvas维护了shape的集合。square 和circle为shape的两种形态。它们两个的值是合法的。
多重继承
personalaccount同时继承了account 和personal的属性和操作。
下
图的例子是一辆水路两栖的汽车艇,来自于两个父类,汽车,和游艇。汽车和游艇又属于交通工具。
3.关联
关联是描述一组具有相同结构特征,行为特征,关系和语义的链接。如果两个事物存在链接,这些事物的类间必然存在着关联关系,因为链接是关联的实例,就像对象是类的实例一样。
应用于关联的4种修饰,名称,角色,多重性,聚合。
(1)关联可以有一个名称,用于描述该关系的性质。关联名称应该是动词短语,因为他表明源对象正在目标对象上执行动作。
名称也可以前缀或后缀一个指引阅读方向的实心三角形箭头,为的是消除名称含义上可能存在的歧义。
(2)角色。当一个类处于关联的某一段时,该类就在这个关系中扮演一个特定的角色。具体来说,角色就是关联关系中一个类对另一个类所表现的职责。
learner和teacher就是两个类的角色。
(3)多重性。约束是UML三大扩展机制之一。多重性是其中的第一种约束,也是目前使用最广泛的约束。
下图的意思就表示为,1或更多学生可以属于很多大学。
(4)聚合关系
聚合关系是一种特殊的关联关系,它表示类间的关系式整体与部分的关系。关联关系中一个类描述了一个较大的事物,它由较小的事物组成。就像火车和引擎。UML中聚合关系用空心菱形表示。
(5)组合关系
聚合表示部分与整体关系的关联,组成是更强形式的关联。整体有管理部分的特有的职责,并且它们有一致的生命期。组成是另一种形态的聚合,它在聚合的基础上添加了更为精准的语义。就像book 由page组成,人体由arms ,body,head组成。
UML中组合关系由实心菱形组成。
(6)导航性。导航性表示可以从源累的任何对象到目标类的一个或多个对象遍历。只在一个方向上可以导航的关联称为单向关联,用一条带箭头的实线表示。两个方向上可以导航的关联称为双向关联,用一条没有箭头的实线表示。
4.实现
实现是规格说明和其实现间的关系。它表示不继承结构而只继承行为。大多数情况下,实现关系用来规定接口和实现接口。UML中用带空心的三角形箭头来表示实现关系。箭头方向指向接口。
计算机键盘保证自己的部分行为能够“实现”打字员的行为,它们之间存在实现关系。
小结
以上的关联中要注意,聚合和组合的区分。组合的关系更为强烈
了解类,和关系,对我们后面了解类图,和UML中的其他图都会有很好的帮助。