摘要:类图(Class Diagram)可能是用得最多的一种UML图。类图的基本语法并不复杂,你可能最多学习两三天就可以掌握,然而要真正做到活用类图则可能需要几年的功力。类图是锻炼面向对象分析(OOA:Object-Oriented Analysis)和面向对象设计(OOD:Object-Oriented Design)思想的重要的工具,是业务结构建模的重要工具。本章将会有大量的实战练习,你的OOA思想将会接受极大的考验和提升。
大纲:
- 一、类的UML表示
- 二、类之间关系
- 三、演练类之间的关系
- 四、类关系小结
- 五、UML类图解义(类图实例)
1、类的命名尽量应用领域中的术语,应明确、无歧义,以利于相互交流和理解。类的属性、操作中的可见性使用+、#、-分别表示public、protected、private。
2、抽象类和方法:
在类中定义的没有body 的方法称为抽象方法,至少有一个抽象方法的类是抽象类。使用斜体来描述:
3、接口:
和类表示差不多,在前边加上《》:
我们用如下的符号表示访问修饰符:
我们在下图详细说明了各个访问修饰符的一些权限设定:
5、异常:
使用虚线以及箭头表示:
6、便签(包含限制、注释和代码解释):
只用这种dog-eared 的框框:
练习:你需要做一个培训管理系统,请你用类图识别出课室中有什么人?这些人有什么关键属性?
强烈建议你先独立完成才继续阅读下文。
图 1.8 学生与讲师1
说明:该图是类图的简单画法,只表达了类名。
这两个类有这样的关键属性:
图 1.9 学生与讲师2
说明:上面的类图同时表达了类名和类的属性。属性没有标记public还是private,也没有被标记属性的类型。业务建模时类图的属性可以看成全部是公开的,也不必标记属性的类型。
这个练习的场景是:你需要做一个培训管理系统,所以你识别出类以及他们的属性的时候,务必从这个角度出发。如果你得到的类是男人和女人,那就可能没有什么意义了。
如果你识别出来的属性是身高、体重,这些属性无论是属于学生还是老师,对于培训管理系统来说,可能是没有什么价值的。思考你识别出来的类的属性,能帮助你判断这个类是否合适。每一个类应该具备能表征它核心特点的关键属性,而一般的无特别意义的属性,可不必标记进去。
类图的基本语法是很简单的,但要体会什么是类,准确识别出类就不是那么简单了。实际工作中,我们需要将需求调研中了解到的所有业务对象、人物等列出来,画出他们的关系,反复推敲,逐步才能得到合适的业务模型。下面我们将开始学习类之间的关系。
二、类之间关系
一个类图通常不止有一个类,有多个类时,我们还需要表达出类之间的关系。
类与类之间存在以下关系:
(1)泛化(Generalization)、实现(Realization)
(2)依赖(Dependency)
(3)关联(Association)
(4)聚合(Aggregation)、构成( Composition )
1、泛化(Generalization):表示类与类之间的继承关系,接口与接口之间的继承关系,或类对接口的实现关系。一般化的关系是从子类指向父类的,与继承或实现的方法相反。
[具体表现]
父类 父类实例=new 子类();
图1.10 Animal类与Tiger类,Dog类的泛化关系
[代码表现]
- class Animal{}
- class Tiger extends Animal{}
- public class Test
- {
- public void test()
- {
- Animal a=new Tiger();
- }
- }