UML 类图学习

原创 2015年07月08日 19:43:01

 

下面详细介绍这六种关系;

各种关系的强弱顺序:

        泛化 = 实现 > 组合 > 聚合 > 关联 > 依赖 

· 车的类图结构为<<abstract>>,表示车是一个抽象类;

· 它有两个继承类:小汽车和自行车;它们之间的关系为实现关系,使用带空心箭头的虚线表示;【箭头指向】:带三角箭头的虚线,箭头指向父类

· 小汽车为与SUV之间也是继承关系,它们之间的关系为泛化关系,使用带空心箭头的实线表示;;【箭头指向】:带三角箭头的实线,箭头指向父类

· 小汽车与发动机之间是组合关系,使用带实心箭头的实线表示;

· 学生与班级之间是聚合关系,使用带空心箭头的实线表示;

· 学生与身份证之间为关联关系,使用一根实线表示;

· 学生上学需要用到自行车,与自行车是一种依赖关系,使用带箭头的虚线表示;

类之间的关系

1. 泛化关系(generalization)

类的继承结构表现在UML中为:泛化(generalize)与实现(realize)

继承关系为 is-a的关系;两个对象之间如果可以用 is-a 来表示,就是继承关系:(....)

eg:自行车是车、猫是动物

泛化关系用一条带空心箭头的直接表示;如下图表示(A继承自B);

eg:汽车在现实中有实现,可用汽车定义具体的对象;汽车与SUV之间为泛化关系;

注:最终代码中,泛化关系表现为继承非抽象类;

2.实现关系(realize)

实现关系用一条带空心箭头的虚线表示;

eg:”车”为一个抽象概念,在现实中并无法直接用来定义对象;只有指明具体的子类(汽车还是自行车),才 可以用来定义对象(”车”这个类在C++中用抽象类表示,在JAVA中有接口这个概念,更容易理解)

注:最终代码中,实现关系表现为继承抽象类;

3.聚合关系(aggregation)

聚合关系用一条带空心菱形箭头的直线表示,如下图表示A聚合到B上,或者说BA组成;

聚合关系用于表示实体对象之间的关系,表示整体由部分构成的语义;例如一个部门由多个员工组成;

与组合关系不同的是,整体和部分不是强依赖的,即使整体不存在了,部分仍然存在;例如, 部门撤销了,人员不会消失,他们依然存在;

4.组合关系(composition)

【组合关系】:是整体与部分的关系,但部分不能离开整体而单独存在。如公司和部门是整体和部分的关系,没有公司就不存在部门。

  组合关系是关联关系的一种,是比聚合关系还要强的关系,它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期。

【代码体现】:成员变量

【箭头及指向】:带实心菱形的实线,菱形指向整体

5.关联关系(association)

关联关系是用一条直线表示的;它描述不同类的对象之间的结构关系;它是一种静态关系, 通常与运行状态无关,一般由常识等因素决定的;它一般用来定义对象之间静态的、天然的结构; 所以,关联关系是一种“强关联”的关系;

比如,乘车人和车票之间就是一种关联关系;学生和学校就是一种关联关系;

关联关系默认不强调方向,表示对象间相互知道;

【关联关系】:是一种拥有的关系,它使一个类知道另一个类的属性和方法;如:老师与学生,丈夫与妻子关联可以是双向的,也可以是单向的。双向的关联可以有两个箭头或者没有箭头,单向的关联有一个箭头。

【代码体现】:成员变量

【箭头及指向】:带普通箭头的实心线,指向被拥有者

6.依赖关系(dependency)

依赖关系是用一套带箭头的虚线表示的;

【依赖关系】:是一种使用的关系,即一个类的实现需要另一个类的协助,所以要尽量不使用双向的互相依赖.

【代码表现】:局部变量、方法的参数或者对静态方法的调用

【箭头及指向】:带箭头的虚线,指向被使用者

与关联关系不同的是,它是一种临时性的关系,通常在运行期间产生,并且随着运行时的变化; 依赖关系也可能发生变化;

显然,依赖也有方向,双向依赖是一种非常糟糕的结构,我们总是应该保持单向依赖,杜绝双向依赖的产生;

注:在最终代码中,依赖关系体现为类构造方法及类方法的传入参数,箭头的指向为调用关系;依赖关系处理临时知道对方外,还是“使用”对方的方法和属性;

 

 

UML之C++类间关系总结

UML之C++类间关系总结 记----类作为面向对象编程的绝对核心,理解好类之间的关系对程序设计具有非常重要的意义。通过查阅网上相关资料,笔者将利用VISIO2013作为UML建模工具,对类之间进行阐...
  • u013926966
  • u013926966
  • 2015年12月11日 22:35
  • 1497

我的UML建模学习(一)

公司比较清闲,平时大部分时间都在学习,哦,不是大部分,是整天都在自己学习,最近一直对建模语言感兴趣,所以就自己各方找资料。开始是看视频,看了一个小时,感觉效果不大,然后开始反思效果不大的原因。这是我自...
  • qq_29206465
  • qq_29206465
  • 2016年04月27日 11:42
  • 1327

UML在项目实施中的使用心得(详细设计阶段)

总结:在业务需求分析阶段使用功能框图、Use Case图、Sequence图逐级分析业务项及业务流程,在概要设计阶段确定系统架构,使用Deployment图、Component图确定部署、对外提供接口...
  • totuswhf
  • totuswhf
  • 2014年04月10日 13:59
  • 3596

UML 类图关系详解(学习笔记)

类的六种关系(按关系由弱到强排列): 依赖关系(Dependency)
  • bioman1224
  • bioman1224
  • 2016年08月17日 19:44
  • 93

UML 类图学习总结

常见的UML 关系:泛化,实现,关联,聚合,组合,依赖。 泛化(Generalization)【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特化父类的所有特征和行为。例如:老虎是...
  • upupdate_
  • upupdate_
  • 2016年07月01日 15:27
  • 108

Poco库Foudation模块的UML 类图

  • 2015年07月29日 11:51
  • 7.83MB
  • 下载

UML 类图 关系 大全 泛化、关联、依赖等

  • 2009年08月26日 16:44
  • 304KB
  • 下载

JDK UML 类图大全

  • 2009年04月23日 22:52
  • 5.52MB
  • 下载

uml 类图实例

  • 2016年09月27日 18:59
  • 145KB
  • 下载

了解UML 类图

  • 2016年10月29日 22:58
  • 13KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UML 类图学习
举报原因:
原因补充:

(最多只允许输入30个字)