设计模式与UML建模

UML(Unified Modeling Langage,统一建模语言)建模是面向对象开发设计方法中的第一步,用UML来表达设计模式不仅方便了开发人员的交流,而且更加清晰、准确。

这章节主要介绍UML类图。

简介

1997年,OMG组织(Object Management Group 对象管理组织)发布了统一建模语言UML。UML目标之一就是为了开发团队提供标准通用的设计语言来开发和构建计算机应用。

UML成为标准建模语言的原因之一在于,它与程序设计 语言无关。而且UML符号集只是一种语言而不是一种方法学,它提出一套IT专业人员期待多年的统一标准建模符号。就像建筑工人多年来所使用的建筑设计图一样。

 

UML图介绍 

UML定义了5类和10种模型图。每种图都有其不同的目的,说明了不同实体集合之间的关系。

类型

模型图

目的

用例图

用例图

描述用户需求,即用户需要系统具备的功能。

 

行为图

 

状态图

描述对象可能所处的状态以及在这些状态中的转换。

 

活动图

描述业务用例实现的工作流程,而不是程序的逻辑流。

 

交互图

 

序列图(顺序图)

描述对象之间的交互顺序,强调对象发送消息的时间顺序。

 

写作图(合作图)

描述对象之间的协助关系,侧重对象间的消息传递

 

 

静态图

 

类图

描述系统中类的静态结构,包括类之间的联系和类的内部结构。

 

对象图

类图的实例,描述系统在具体时间点上包含的对象机各个对象的关系。

 

包图

由包和类组成的,表示包与包之间的关系,包图描述系统的分层结构。

 

实现图

 

构件图

描述各构件(构造应用的软件单元)的依赖关系

部署图

显示系统的硬件和软件的物理结构

UML图的特点

  • 统一的标准(被OMG所认定的建模语言标准)。

  • 面向对象。UML是支持面向对象软件开发的建模语言。

  • 可视化,表现能力强。

  • 独立开发过程,UML不依赖与特定的软件开发过程。

  • 概念明确,建模简洁,推行结构清晰,容易掌握何使用。

 UML类图

UML功能十分强大,前面说到UML十几种图,下面我们来说UML类图。通常在系统设计阶段,用类图足够描述设计模式。

类与类图

类是对象某一方面特征的归纳和抽象,而对象是实例化的结果。类封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合总称。比如小汽车、火车、飞机它们具有相同的属性,最高时速、载客量。也具有相同的操作如加速、停止等。从用途的角度可以把它们抽象为交通工具类。而小汽车就是交通工具的一个实例。每个类都据有一定的职责,但较好的设计是一个类只分配一种指责。类的指责包括属性和方法。

类图是使用频率最高的UML图之一,是系统分析和设计阶段的重要产物也是系统编码和测试的重要模型依据。类图展示一组类、接口协作及它们的关系。

类图中的基本元素符号

1)类

类UML图由3个部分组成

第一个部分由Java定义的类名,如果类名用斜体字型表示,则表示该类是抽象类,否则表示具体的类。

第二个部分有属性(attributes),描述列的成员变量及类型,可以根据需要只列出重要的成员变量。

第三个部分是方法,描述类的方法及返回类型,同样可以根据需要只列出重要的方法。

类的权限

加号(+)表示访问权限是public,减号(-)表示访问权限是private。#表示访问权限是protected。没有任何修饰表示访问权限是友好的。如果属性或操作具有下划线,则表明是静态的。

2) 接口

接口的UML图与类的UML图类似,同样也是由三部分组成。

第一部分是接口的名称必须用斜体字型表示,而且顶端要用<<interface>>修饰,我是用的工具是visio中文版本,所以显示是接口。

第二部分是常量,描述接口中的常量及类型。

第三部分是方法,描述接口的方法及返回类型。

由于接口中的常量与方法的访问权限都是public的,所以在常量与方法名字都要用加号(+)修饰。

UML图注释

UML注释以一个右上方带卷角的长方形表示注释,并且用线将注释与它所注释的实体连接起来。

类与类之间的关系

在UML类图中,类与类之间有以下几种常见的关系:泛化(Generalization)、实现(Realization)、依赖(Dependency)、关联(Association)、聚合(Aggregation)和组合(Composition)

泛化关系 (Generalization)

泛化关系就是继承关系,也称为“is a kind of ”关系,用于描绘父类与子类的关系。

泛化关系是对象间耦合度最大的一种关系,子类继承父类所有的细节,并可以在自己的基础上添加自己的属性。

UML图中泛化关系表示为连接两个类的带空心三角的实现,实线起始端是子类,终点端是父类。

实现关系 (Realization)

如果一个类PenBrush实现一个接口IBrush 的功能,那么类PenBrush和接口IBrush的关系就是实现关系。

UML类图中用带空心三角形的虚线连接类和它实现的接口,虚线起始段是类,终点端是实现的接口

依赖关系(Dependency)

如果B类作为参数被A类在某个方法中使用,则A类与B类具有依赖关系,即A依赖与B。

在UML图中用带有箭头的虚线连接具有依赖关系的两个类,虚线的起始端A,终点端是B。例如某人要去公司上班,需要乘坐公交车,此时人与公交车之间的关系就是依赖关系。

关联关系(Association)

关联关系有三种类型:单向关联、双向关联和自关联。

单向关联

如果A类中的成员变量是用B类声明的变量,即B类作为A类的一个属性存在,则A、B两类间具有关联关系,称A关联于B。

在UML中用带箭头的实线连接具有关联关系的两个类。

双向关联

双向关联可以表示为双向箭头或者没有箭头。(例如老师与学生是双向关联,老师有多名学生,学生也可能有多名老师。)

自关联

一个类的属性的类型为该类的本身,这种关联关系称为自关联。

聚合关系(Aggregation)

聚合关系是关联关系的一种(弱关联),与关联不同的是聚合体现的是整体和个体的关系,二者是一种has-a关系,而关联体现的是两个处在同一层次的类之间的关系。

在UML图中用带有空心菱形头和箭头的实线表示聚合,菱形头端指向Station类,箭头端指向Train类。

(这里的整体和个体是可以分离的,即个体可以独立于整体的存在,例如火车站上的火车)                          

组合关系(Composition)

组合关系也是关联关系的一种(强关联),与聚合类似,同样体系那的是整体和个体的关系。(例如汽车上的引擎。)是一种contains-a关系,也称为强聚合。一旦整体对象不存在,部分对象也不存在,部分和整体具有相同的生命周期。

在UML中用带实心菱形头和箭头的实线表示聚合。

实例分析

             需求

用户通过登陆页面(LoginForm)输入账号和密码,系统将输入如的账号和密码与存储在数据User表中的用户信息进行比较,验证用户输入是否正确,如果输入正确则进入主页面(MainForm),否则提示‘输入错误’。

类名

说明

LoginForm

LoginBO

IUserDAO

UserDAO

MainForm

登陆窗口

登陆业务逻辑类

数据类访问接口

具体数据访问类

主窗口

下面是个人创建的公众号,主攻Java方向,有兴趣的可以扫描二维码。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值