浅入浅出UML之类图

Java书上经常能看到类图,索性就对类图做个整理

0.UML简介

Unified Modeling Language (UML)又称统一建模语言或标准建模语言,是始于1997年一个OMG标准,它是一个支持模型化和软件系统开发的图形化语言,为软件开发的所有阶段提供模型化和可视化支持,包括由需求分析到规格,到构造和配置。 面向对象的分析与设计(OOA&D,OOAD)方法的发展在80年代末至90年代中出现了一个高潮,UML是这个高潮的产物。它不仅统一了Booch、Rumbaugh和Jacobson的表示方法,而且对其作了进一步的发展,并最终统一为大众所接受的标准建模语言。

UML的组成结构图:
UML结构图

1.类图(Class Diagram)简介

类图是面向对象系统建模中最常用的图,它是定义其他图的基础,在类图的基础上,可以使用状态图、协作图、构件图和部署图等进一步描述系统其他方面的特征。
在类图中,一共包含了以下几种模型元素,分别是:类(Class)、接口(Interface)、依赖(Dependency)关系、泛化(Generalization)关系、关联(Association)关系以及实现(Realization)关系。与其他UML中的图类似,也可以创建约束、注释和包等。一般的类图结构如下:
一般的类图结构

2.类

类
类图由三栏组成,类名、属性、操作

第一栏:Name(类的名称)
类名的书写字体有规定,若类名为正体则是可以被实例化的,若为斜体字则说明类为抽象类。也可以加上路径名,如:chapter11::Goods,表示位于包chapter11中的Goods类

第二栏:Attribute(类的属性)
一个属性占一行,属性的一般格式为:[可见性] 属性名称 [:属性类型] [=初始值] [{属性字符串}]
(1)可见性
类中可见性一共有三种:公有(public)、受保护(protected)、私有(private),分别用’ + ’、’ #’ 、’ - ’来表示
(2)属性类型
即int、String、double之类的
(3)属性字符串
属性字符串用来指定关于属性的一些附加信息。任何希望添加在属性定义字符串中但又没有合适地方加入的规则,都可以放在属性字符串中。

第三栏:Operation(类的操作)
一个操作占一行,操作的一般格式为:[可见性] 操作名称 [(参数表)] [:返回类型] [{属性字符串}]
除了可见性之外,其他[]中的可选内容与属性的可选内容要求相似
可见性在属性的可见性基础之上增加了实现(implementation)类型,用’ ~ ’来表示
*注:实现类型的操作只有在被定义的包中是可见的

类的约束:
类的约束指定了该类所要满足的一个或多个规则。在UML中,约束是用一个大括号括起来的文本信息,如下图:
类的约束

3.类图中的关系

类图中的关系

(1)实现关系
实现关系将一种模型元素(如类)与另一种模型元素(如接口)连接起来,用于说明和其实现的关系。在UML中可以用一个圆圈来表示接口,也可以用和类(Class)相似的三层矩形来表示接口。如下图:
实现关系

(2)泛化关系
泛化关系用来描述类的一般(eg:父类)和具体(eg:子类)之间的关系,描述的是”is a kind of”的关系。
泛化关系
*泛化关系和实现关系的区别:
泛化和实现都可以将一般描述与具体描述联系起来。泛化将同一语义层的元素连接起来,并且通常在同一模型内;实现将不同语义层的元素连接起来,并且通常在不同的模型内。

(3)依赖关系
依赖关系表示了这样一种情形:提供者的某些变化会要求或指示依赖关系中客户的变化。依赖关系用一个虚箭头来表示,并且使用了一个构造型的关键字(位于虚箭头之上)来区分依赖关系的种类。
依赖关系
依赖的种类:
①使用依赖(Usage):使用(use)、调用(call)、参数(parameter)
②抽象依赖(Abstraction):跟踪(trace)、精化(refine)、派生(derive)
③授权依赖(Permission):访问(acess)、导入(import)、友元(friend)
④绑定依赖(Binding):绑定(banding)

(4)关联关系
关联关系是一种结构关系,指出了一个事物的对象与另一个事物的对象之间的语义上的连接。一个类关联的任何一个连接点都叫做关联端,与类相关的很多信息都附在它的端点上。关联端有名称、角色、可见性以及多重性等特性。
关联关系
名称:用动词或动词短语来命名关联(不是必须的),可以前缀或后缀一个指引阅读方向的指示符
角色:一个类对另一个类所表现出来的职责
多重性:有多少对象可以与另一个端点的一个对象进行关联 格式:minimun..maximum(范围) 或 单个整数(表示仅x个)

*注意:关联关系有时候也用实线+单向普通箭头(如本文中类的约束中用的例图)表示单向关联或者是实线+双向普通箭头表示双向关联
*单向关联可以表示一种拥有关系,它使一个类知道另一个类的属性和方法。箭头指向被拥有者。eg:成员变量

如果一个关联既是类又是关联,那么它是一个关联类。
关联类

关联关系还有两种重要的形式:聚集关系(Aggregation)和组合关系(Composition)
聚合关系描述的是部分与整体的关联,表达了”has a”的关系,用端点带空菱形的线段来表示,其头部指向整体。
组合关系是一种更强形式的关联,在整体中拥有管理部分的特有职责。组合用端点带实心菱形的线段来表示,头部指向整体。在组合中,组合不仅控制着成员对象的行为,而且控制着成员对象的创建和结束。组合也称为强聚合。
聚合和组合

4.类图和对象图的区别

类图和对象图的区别

*链连接:关联的一个实例被称为”链”

//如有错误,欢迎指正
//本来想整理的短一点的,还是这么长……….

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值