1.类:
(1)名称:由数字、字母(不包含冒号)、下划线组成,首字母大写,是唯一的;
(2)属性:【可见性】 属性名 【:类型 = 初始值 {属性字符串}】;
- 可见性:public,protected,private,package,分别用+、#、-、~表示。
- 属性名:采用驼峰式命名法。
- 类型:char、String、Integer等来自不同程序设计语言。
- 属性字符串:指定关于属性的其他信息。希望在添加在属性定义字符串中又没有合适的位置可以加入的规则都可以添加在属性字符串中。
(3)类的操作(方法):【可见性】 操作名 【(参数列表)】【返回类型 { }】;
- 可见性,操作名同类的属性。
- 参数列表:参数名称 :类型 【=初始值】。
类如图所示:
2.接口:
(1)接口有两种实现形式,第一种是与类的外表相同,只是在接口名的上方增加了《interface》字样,第二种是用圆圈表示。
(2)接口只是定义一些属性和方法,至少有一个类来实现,可以实现多继承。
(3)用虚线带空心的三角形由实现类指向接口,表示类实现接口。
如下图所示:
3.类之间的关系:
(1)关联关系:作用在对象与对象之间,包括名称,角色,多重性,导航性。
*上图的解释说明:*名称:借阅; 角色:教学者、学习者;多重性:0…*(还可以有单个数字或者多个数字,多个数字之间用‘,’隔开); 导航性:实线。
(2)聚合关系:部分与整体,用空心的菱形实线连接,由部分指向整体,整体的类的重数可为多。
(3)组合关系:实心菱形实线,由部分指向整体,整体的类的重数只能为1。
**聚合关系与组合关系之间的不同:**聚合关系中整体和部分都是可以独立存在的类,举例子来讲,如果类Car不存在了,类Engine发动机还是存在的;而在组合关系中,如果整体不存在了,那么部分也就不存在了,举例子来讲,如果类Head不存在了,类Mouth也就不存在了。
(4)泛化关系:描述的是一般类与特殊类之间的关系,用带空心三角形的实线表示。
(5)依赖关系:当被依赖的类变化时,依赖的类也会随之变化。用带箭头的虚线表示,依赖的类指向被依赖的类。
(6)实现关系:最常见的情况是接口与该实现类之间的关系,另一种情况是用例与实现该用例的用例的协作关系。在图中表示可以是如接口一样的表示,也可以是带圆圈的实线表示,有实现类指向接口。
在某种意义上讲实现关系、关联关系和泛化关系也可以是依赖关系,只是这三者都有特定的语义,所以将他们分离了出来。
4.类图步骤:
(1)确认主要实体类:属性,操作。
(2)边界类:参与者与用例交互至少有一个,比如页面的分割转换。
(3)控制类:管理员的设定。
(4)确定类之间的关系。
(5)绘制类图。