copy自老师的PPT,不只有知识点,还有一些相关内容的介绍顺便复制进来了。 如有问题请多指教
类图是描述类、协作(类或对象间的协作)、接口及其关系的图。
类图是逻辑视图的重要组成部分,用于对系统的静态结构建模,涉及到具体的实现细节。
类图常用来描述业务或软件系统的组成、结构和关系。
类的表示
类是具有相似结构、行为和关系的一组对象的抽象。
由字符、数字、下划线组成的惟一的字符串;
采用CamelCase格式(大写字母开头,混合大小写,每个单词一大写开始,避免使用特殊符号)
类名的两种表示方法
属性描述了类的静态特征;
属性名一般第一个字母小写;
属性的定义格式
[可见性] 属性名 [:类型] [ ‘[’多重性[次序]‘]’] [=初始值] [{特性}]
说明:可见性包括+、-、#
例:#visibility:Boolean=false
colors:Color[3]
points: Point[2…* ordered]
name:String[0…1]
职责指类承担的责任和义务。在矩形框中最后一栏中写明类的职责。
约束指定了类所要满足的一个或多个规则。 在UML中,约束是用花括号括起来的自由文本。
关联是模型元素间的一种语义联系,当类之间在概念上有连接关系时,类之间的连接叫做关联。
队员和球队之间的关联,可以用短语“队员为篮球队效力”来刻画,
图形表示为:
关联有名称、角色、多重性和导航性等语法。
0..1 0或1
1 1
0..*(0..n) 0或多个
* 0或多个
1..* (1..n) 1或多个
8 8
5,7..10 5或7~10
一辆汽车有4个轮子,我们可以这样表示
你可能觉得这样表示还不太合适,汽车应该包含4个轮子,或者说轮子本来就属于汽车的一部分,那怎样画能更加贴切表示这样的关系呢?我们可以这样画:
假设你正在设计一个能显示公司全体成员的制表系统,公司的员工可以填写这个系统中的电子表格。员工要选择菜单来填写表格。在你的设计中,有一个Syetem(系统)类和一个Form(表格)类。System类的众多操作中有一个displayForm(f:Form),系统所要显示的表格取决于用户选择的表格。
这种设计的UML表示法可以画成如下
根据以下描述,画出相应的UML类图
阅读顺序应遵循的原则
C-class(类)
R-responsibility(职责)
C-collaboration(协作)
CRC分析法是根据类所要扮演的职责来确定类。
UML中类有三种主要的版型:边界类、控制类和实体类。
李小平是一个爱书之人,家里各类书籍已过千册,而平时又时常有朋友外借,因此需要一个个人图书管理系统。该系统应该能够将书籍的基本信息按计算机类、非计算机类分别建档,实现按书名、作者、类别、出版社等关键字的组合查询功能。在使用该系统录入新书籍时系统会自动按规则生成书号,可以修改信息,但一经创建就不允许删除。该系统还应该能够对书籍的外借情况进行记录,可对外借情况列表打印。另外,还希望能够对书籍的购买金额、册数按特定时间周期进行统计。
李小平是一个爱书之人,家里各类书籍已过千册,而平时又时常有朋友外借,因此需要一个个人图书管理系统。该系统应该能够将书籍的基本信息按计算机类、非计算机类分别建档,实现按书名、作者、类别、出版社等关键字的组合查询功能。在使用该系统录入新书籍时系统会自动按规则生成书号,可以修改信息,但一经创建就不允许删除。该系统还应该能够对书籍的外借情况进行记录,可对外借情况列表打印。另外,还希望能够对书籍的购买金额、册数按特定时间周期进行统计。
书籍 计算机类书籍 非计算机类书籍 书籍列表
借阅记录 借阅记录列表
在使用“名词动词法”寻找类的时候,很多团队会在此耗费大量的时间,特别是对于中大型项目,这样很容易迷失方向。其实在此主要的目的是对问题领域建立概要的了解,无需太过咬文嚼字 。
如果面试的人说懂类图,公司100%会问这样一个问题Windows操作系统中有文件夹和文件,请用类图表达出文件夹和文件的关系。
接着又会被问到:
公司和雇员的关系,要求列出公司和雇员至少3个关键属性
思考如下问题
公司与雇员要签署劳动合同,劳动合同上会有薪金、合同期、职位这些重要的内容,那么薪金、合同期、职位算是雇员的属性吗?
在表示公司与雇员的关系的直线上,拉出一条虚线,虚线另一端连接劳动合同类,这样的类叫做关联类,关联类是对两个类的关系的进一步约束。
最开始你可能会认为薪金、职位、合同期似乎应该是雇员的属性,但现在应该认识到,这三个关键内容应该体现在公司和雇员的关系上,这些内容应该体现在劳动合同上。
公司、雇员、劳动合同的关系,还可以画成这样
这个图最能体现“三角”关系了,关联类也可以表达成这样的方式。但实际工作还是以关联类的方式来表达,关联类的表达方式更加贴切和专业一点。
在需求分析时,发现三个类形成了类似的“三角”关系,可以思考其中一个类是不是可能为关联类,但并不是所有的“三角”关系就一定会有关联类
将薪金、职位、合同期这些信息直接当成雇员的属性也不是不可以的,这跟我们做系统的目标有关系,如果只是做简单的员工信息管理,可能就没有必要将合同提炼出来,如果要做一个人事管理系统,就需要我们将业务模型分析的更加透彻。
关联类这样复杂的东西,客户是不大可能直接告诉你的,在需求分析中发现和提炼出关联类,这对需求的理解以及项目后期的设计将会有很大的帮助。