类是一组对象的描述,这组对象具有共同的属性、行为(操作)、关系和语义.
类是对象的蓝图,其中包含3个组成部分。第一个是Java中定义的类名。第二个是属性(attributes)。第三个是该类提供的方法。
属性和操作之前可附加一个可见性修饰符。加号(+)表示具有公共可见性。减号(-)表示私有可见性。#号表示受保护的可见性。省略这些修饰符表示具有package(包)级别的可见性。如果属性或操作具有下划线,表明它是静态的。在操作中,可同时列出它接受的参数,以及返回类型,如图(1):
约束
可以用约束(constraint)来添加足够的信息,使类的描述更加明确。
约束用括号括起来的字符串表示
Professor
name: String
age: Integer { age>40 }
注释
通过注释的方式可以对类附加更多的信息
关联
关联是类之间的联系
关联的名称应该反映关系的用途,并且是一个动词;该名称可以忽略,尤其是使用角色名的时候。
应该尽量避免使用“具有”和“包含”这样的名称,因为它们不包含说明类之间具有什么关系的信息。
角色名相对于类必须是唯一的。 角色名应该是一个名词,它表示被关联的对象相对于关联对象的角色。 角色名放在关联线一端的旁边。
单向关联
如果类与类之间的联系是单向的,则称为导航关联。
导航关联用实线箭头连接两个类,只有在箭头方向上才有这种关联关系。
关联的约束
两个类之间的一个关联需要一个规则约束,可以通过在关联线附近加注一个约束来说明这个规则。
关联类
和类一样,关联也可以拥有自己的属性和操作,此时这个关联实际上就是一个关联类(association class)
多重性
多重性(multiplicity)定义有多少对象参与了某个关系。
3: 多重值和它们的表示
可能的多重值描述
表示 含义
0..1 0个或1个
1 只能1个
0..* 0个或多个
* 0个或多个
1..* 1个或我个
3 只能3个
0..5 0到5个
5..15 5到15个
限定关联
递归关联
当一个类与它自己发生关联的时候,我们称其为“递归关联”(reflexive association)
泛化
在面向对象的术语中,上述关系被称为继承(inheritance)。
UML中称它为泛化(generalization),定义是:将类抽象为更一般的类的过程。被泛化的类称为子类,得到的类称为超类。
依赖(dependency)
描述的是两个模型元素之间的语义上的连接关系。其中一个模型元素是独立的,而另外一个依赖于独立的这个模型元素,当独立的模型元素发生变化时将会影响依赖于该模型元素的模型元素。
聚集(aggregation)
聚集(aggregation)表示整体与各部分之间的关系
组成
组成是一种整体和部分所属更强的聚集关系,每个部分只能属于一个整体,没有整体,部分也没有存在的价值
接口和实现
接口是用于指定类或组件的服务的操作的集合。
接口的表示法和类大致相同,都是用一个矩形来表示,并在矩形框中接口的名称上方放置构造型《interface》进行说明。
实现(realization)
类和接口之间的关系称为实现(realization)。实现关系用一个带空心三角形箭头的虚线来表示,箭头的方向指向接口。
总结
类图标是一个包括三个部分的矩形
对象以名称带下划线的矩形表示
约束允许在现有 UML 模型中加入新的语义或更改现有的语义
关系以线条的形式来模型化,不同类型的线条用于表示不同类型的关系
多重性定义有多少对象参与了某个关系
聚集表示整体与各部分之间的关系
组成是一种强类型聚集关系,表明了部分和整体之间很强的所属关系和一致的生命周期
依赖关系表示模型元素之间的语义关系
发生在同一个类的对象之间的关联称为“递归关联”
使用泛化原则共享属性和操作的机制称为“继承”
接口是用于指定类或组件的服务的操作的集合。
转载注明:http://www.blogjava.net/wujun
了解更多
http://www.holub.com/goodies/uml/