摘要:类图(ClassDiagram)可能是用得最多的一种UML图。类图的基本语法并不复杂,你可能最多学习两三天就可以掌握,然而要真正做到活用类图则可能需要几年的功力。类图是锻炼面向对象分析(OOA:Object-OrientedAnalysis)和面向对象设计(OOD:Object-OrientedDesign)思想的重要的工具,是业务结构建模的重要工具。本章将会有大量的实战练习,你的OOA思想将会接受极大的考验和提升。
本文全长1万6千多字,并且有几十张插图,本文来自新书《火球——UML大战需求分析》的第3章(本书已经发售)。
温馨提示:本文有点长,麻烦你收藏一下慢慢阅读,谢谢!
大纲:
3.1面向过程与面向对象3.2类图的基础知识3.3类之间的关系3.4演练类之间的关系3.5类的“递归”关系与“三角”关系3.6考试管理系统——类图综合训练3.7关于对象图3.8小结与练习
3.2类图的基础知识
图3.3学生与讲师2说明:上面的类图同时表达了类名和类的属性。属性没有标记public还是private,也没有被标记属性的类型。业务建模时类图的属性可以看成全部是公开的,也不必标记属性的类型。这个练习的场景是:你需要做一个培训管理系统,所以你识别出类以及他们的属性的时候,务必从这个角度出发。如果你得到的类是男人和女人,那就可能没有什么意义了。如果你识别出来的属性是身高、体重,这些属性无论是属于学生还是老师,对于培训管理系统来说,可能是没有什么价值的。思考你识别出来的类的属性,能帮助你判断这个类是否合适。每一个类应该具备能表征它核心特点的关键属性,而一般的无特别意义的属性,可不必标记进去。类图的基本语法是很简单的,但要体会什么是类,准确识别出类就不是那么简单了。实际工作中,我们需要将需求调研中了解到的所有业务对象、人物等列出来,画出他们的关系,反复推敲,逐步才能得到合适的业务模型。下面我们将开始学习类之间的关系。
3.3类之间的关系
3.4演练类之间的关系
3.5类的“递归”关系与“三角”关系
图1.34公司、雇员、劳动合同的关系2这个图可能最体现它们的“三角”关系了,关联类也可以表达成这样的方式。但我在实际工作还是以关联类的方式来表达,我觉得关联类的表达方式更加贴切和专业一点。在具体的需求分析工作时,如果你发现三个类形成了类似该图的“三角”关系,你可以思考其中一个类是不是可能是关联类,但要注意并不是凡是出现了“三角”关系就一定会有关联类。怎么样?本节的难度已经更上一城楼了!类图的最大魅力在于帮助你发掘和提炼业务模型,其他的非UML图可能是做不到的。当然真正要做好发掘和提炼,还是需要你的深厚功力了!下小节,你将要完成一个综合练习,应用你所学习到的全部类图知识。
3.6考试管理系统——类图综合训练
3.7关于对象图
3.8小结与练习
图3.41“三角”关系示例一个个的练习除了让你巩固学到的类图知识,更重要的是通过具体的实例让你体会用类图分析问题的思路和方法。类图分析需求的基本步骤:1)识别出类。2)识别出类的主要属性。3)描绘出类之间的关系。4)对各类进行分析、抽象、整理。类实例化后就是对象,表达这些对象及对象关系的图,就是对象图。需求分析中很少需要使用对象图。多思考、多练习、多讨论、多总结,不断锻炼和提升你的面向对象分析能力吧!练习1.一辆小车有4个轮子,请用类图表示出来。2.一辆货车也有4个轮子,但货车的前轮和后轮不太一样,用类图如何表示?3.请用类图表示项目组的人员组成。提示:请思考项目组包含怎样的角色?项目组架构是树形架构还是网络架构?4.你要设计一个论坛,请用类图表达出分区、版块、子版块、帖子等论坛常见元素的关系。5.请在你做过或者正在做的项目中挑选一个,用类图来分析该项目的需求或者部分需求。