UML之—类图

Posted PM修炼手册

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UML之—类图相关的知识,希望对你有一定的参考价值。

什么是类

类是现实生活中一些具有共同特征的抽象。需求中提到的各种业务概念、人物等,经过抽象后都可以视之为类。人是类,把人分为男人和女人、这里的男人和女人也是类。也可以分为老人和年轻人、老人和年轻人也是类。将某些东西归纳在一起,可以称为一个类。类有很多种提炼角度,我们需要根据系统的目标、业务场景、选取合适的角度对事物进行归类。
注意:这里的类一定是一个抽象概念

什么是类图
类图就是把一个或者多个类用图形表示出来,包含类的名称、类的属性、类与类之间的关系。
       

UML之—类图类图有什么用


某项目的原始需求资料:本项目是在一期的基础上增加对电缆通信工程的管理和施工详细数据的记录和统计,使整个系统更好地管理各工程项目中标开始到竣工验收的全部过程的资料和分析施工过程的数据。本系统将一条或一个标段架空电力线路工程定为一个单位工程,即系统中的一个工程项目;每个单位工程分为若干个分布工程;每个分部工程分为若干个分项工程;每个分项工程又分为若干个相同的单元工程
阅读上面一段话,一开始恐怕难以读懂上述文字。项目初期最急迫的就是理清这些业务的概念和关系。每个软件系统都会涉及很多人、业务概念和物品。类图能帮助我们识别这些人、业务概念、物品和事情并理清他们的关系。
画类图的步骤

  • 识别出类
  • 识别出类的主要属性
  • 对各类进行分析、抽象、整理
  • 描绘出类之间的关系

类之间的逻辑关系

关联关系
两个类之间是有关系的,但是又不能具体确定是什么关系,两个类之间画一条直线表示有关联关系。如果一个类可以由另外一个类找到,即由A”导航“到B,此时在B(被导航类)侧画上箭头。如下图中的请假单与请假者,由请假单可以找到请假者。
       UML之—类图        
       UML之—类图        
包含关系
是关联关系的一种特例,是强的关联关系,整体与部分的关系。包含关系中包括弱包含(空心菱形)和强包含(实心菱形)关系。下图中的弱包含的含义是如果部门没有了,员工可以继续存在;强包含的含义是如果部门没有了,员工也不再存在。一个员工存在于多个部门时为弱包含,一个员工只存在一个部门时则为强包含。一般情况把所有包含关系画成弱包含即可,后面发现某些关系确实为强包含时可以改为强包含关系。
       UML之—类图        
       UML之—类图        
继承关系
表示一般与特殊,一般与具体的关系子类继承了父类所有的属性。UML标准术语为泛化,可以为抽象、提炼。一般来说如果有两个或者以上的业务概念,我们发现他们有一些业务特征,则可以考虑将他们泛化为另一个东西,这样能帮助我们发现事物的本质了。
       UML之—类图        
依赖关系
依赖是指一个类的实现需求另一个类的协助,具体的业务逻辑中,对于某个事情,A需要B协助才能完成,这样就是一种依赖关系。
       UML之—类图         类之间的数值对应关系
一对一
直线两端各有一个数字1,表示1对1的关系,数字的使用和下面线条的类型无关,当两个类是其他关系时同样适用
       UML之—类图        
一对多
       UML之—类图        
       UML之—类图        
多对多
               

关联类
如果一个属性不由某一个类决定,是由多个类决定的则这个属性就是这多个类的关联类。需要把这个属性拿出来当做关联类。下图中如果把劳动合同作为员工的属性是不合适的,因为劳动合同上的薪金并不由员工自己本身决定,是由公司和员工协商决定的,所以应该把劳动合同拎出来作为一个关联类
               
类和对象的关系

对象其实是类的实例。类是某一些东西的抽象和统称,而对象则是一个个具体的东西。如果要用对象图表达,则A公司有1000名员工,则需要画1000个包含关系,才能表示出A公司与所有员工的关系。对象与对象之间如果有关系那肯定为一一对应的关系。
需求分析时其实我们接触到的是一个个具体的东西,这些具体的东西其实就是对象。我们需要把这些对象提炼为类,这样才更有代表性,软件系统并不是用来解决具体某次事件中的一个问题,而是希望解决某一类问题。
在少数使用对象图时可以用类图代替。
关于类图
  • 类图时UML中最常见的图,是训练面向对象分析思想的最好武器
  • 看懂类图不难,用好类图相当不容易
  • 如果觉得两个类有关系,则先拉上一条直线再说。
  • 普遍认为,类是一些静态东西,动态的东西不适合用类来表示,这并不是绝对的,有系统目标出发有时候我们需要将某些动态内容识别为类。
  • 怎样识别出类以及画出类之间的关系,从不同角度就会有不同结果,只要能解释清楚这些类之间的关系就是合理的
  • 直线、几对几的关系、角色、箭头都可以搭配使用,只要能准确反映出业务关系就可以

注:本文的UML-类图仅是针对需求分析的类图画法,与程序员做程序设计时的类图稍有不同。

以上是关于UML之—类图的主要内容,如果未能解决你的问题,请参考以下文章

UML之—类图

ML实践详细经典教程----用例图顺序图状态图类图包图协作图

设计模式之看懂UML类图

UML 用例图时序图类图活动图代画代写

轻松理解UML用例图时序图类图的教程

UML设计,可以设计程序的用例图类图活动图等_SurfaceView