UML基础入门
最近打算学习设计模式,但是一般都带有UML类图,所以学习了以下UML。主要学习类图
一、UML定义
UML(Unified Modeling Language统一建模语言)是一种图形化的语言,它可以帮助我们在OOAD(面向对象分析和设计)过程中标识元素、构建模块、分析过程并可通过文档说明系统中的重要细节。
二、UML图的分类
静态模型(static model),创建并记录一个系统的静态特征,反映一个软件系统基础、固定的框架结构。静态建模包括:用例图(Use Case Diagram)、类图(Class Diagram)、对象图(Object diagram)、组件图(Component diagram)、部署图(Deployment diagram)。
动态模型(dynamic model,用以展示系统的行为。动态建模包括:时序图(Sequence diagram)、协作图(Collaboration diagram)、状态图(State Chart Diagram)、活动图(Activity Diagram)。
三、动手画图
画图之前,要去下载一个StarUML,下载地址:http://staruml.io/download ,网上破解的方式有很多,可以自行baidu。(不破解也影响使用)。
1、用例图(Use Case Diagram):展示系统的核心功能及与其交互的用户用户被称之为“活动者”(Actor),用例使用椭圆表示。下图表示Admin具有增删改查的权限,guest只具有查询权限。
2、类图(Class Diagram):表现类的特征,类图描述了多个类、接口的特征,以及对象之间的协作与交互。由一个或多个矩形区域构成,内容包括:类型(类名)、属性(可选)、 操作(方法)(可选)。
①首先先画一个简单的Person类,最上面表示类名,中间的是属性,下面的是方法。+表示public,#表示protected,-表示private,~表示package。而方法的返回值类型是放在方法后面表示 method():返回值类型 ,入参也是名称在前,类型在后。
,
②抽象类:抽象的名称是斜体的。
③接口
一般化Generalization(继承)
指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力,继承是类与类或者接口与接口之间最常见的关系;在Java中此类关系通过关键字extends明确标识,在设计时一般没有争议性;
关联Association
实体之间的一个结构化关系表明对象是相互连接的。箭头是可选的,它用于指定导航能力。如果没有箭头,暗示是一种双向的导航能力。
⑥类图之间的关系之聚合Aggregation关系
聚合是关联关系的一种特例,他体现的是整体与部分、拥有的关系,即has-a的关系,此时整体与部分之间是可分离的,他们可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享;比如计算机与CPU、公司与员工的关系等;表现在代码层面,和关联关系是一致的,只能从语义级别来区分;
⑦类图之间的关系之组合Composition(合成)关系
组合也是关联关系的一种特例,他体现的是一种contains-a的关系,这种关系比聚合更强,也称为强聚合;他同样体现整体与部分间的关系,但此时整体与部分是不可分的,整体的生命周期结束也就意味着部分的生命周期结束;比如你和你的四肢;表现在代码层面,和关联关系是一致的,只能从语义级别来区分;
⑧类图之间的关系之依赖Dependency关系
可以简单的理解,就是一个类A使用到了另一个类B,而这种使用关系是具有偶然性的、临时性的、非常弱的,但是B类的变化会影响到A;比如某人要过河,需要借用一条船,此时人与船之间的关系就是依赖;表现在代码层面,为类B作为参数被类A在某个method方法中使用;
3、对象图(Object diagram)
4、组建图(Component diagram):表现软件组件之间的关系
5、部署图(Deployment diagram):表现用于部署软件应用的物理设备信息
6、时序图(Sequence diagram):捕捉一段时间范围内多个对象之间的交互信息,强调消息交互的时间顺序。