静态图(结构行为图)
静态图显示了系统的静态结构,特别是存在事物的种类
类图
类图描述系统中类的静态结构,它不仅定义系统中的类,表示类之间的关系,如关联、依赖、聚合等。还包括类的内部结构(类的属性和操作)。类图在系统的整个生命周期都是有效的。通过分析用例和问题域,就可以得到相关的类,然后再把逻辑上相关的类封装成包。
对象图
对象图是类图的实例,几乎有与类图完全相同的标识。他们的不同点在于对象图显示类图的多个对象实例,而不是实际的类,一个对象图是类的一个实例。由于对象存在生命周期,因此对象图只能在系统某一时间存在。
包
包由包或类构成,表示包与包之间的关系。包图用于描述系统的分层结构。
类图
概念
类图(Class Diagram)是是描述类、接口、协作以及它们之间的关系的图,用来显示系统中各个类的静态结构。一个类图根据系统中的类以及各个类之间的关系描述系统的静态图。
类图包含:类、接口、协作、依赖关系、泛化关系、实现关系以及关联关系
类
类是对一组具有相同属性、操作、关系和语义的对象的描述。这些对象包括了现实世界中的物理实体、商业事务、逻辑事务、应用事务和行为事务。
属性
类的属性是类的一个组成部分,它描述了类在软件系统中代表的事务所具备的特性。类可以有任意数目的属性,也可以没有属性。属性描述了正在建模的事务的一些特性,这些特性是所有对象所共有的。
操作
类的操作是对类的对象所能做的事务的抽象。它相当于一个服务的实现,该服务可以由类的任何对象请求以影响其行为。一个类可以由任何适量的操作或者根本没有操作。
类图元素
接口
接口是用一个带有名称的小圆圈来表示的,并且通过一天实现与它的模型相连接。
当接口是在某个特定类中实现时,使用该接口的类通过一个依赖关系与该 接口相连。
关系
1.依赖关系
依赖关系 | 说明 |
---|---|
使用依赖 | 通常表示客户使用提供者提供的服务以实现它的行为 |
抽象依赖 | 用来表示客户与提供者之间的关系,依赖于不同的抽象层次上的事务 |
授权依赖 | 表示一个事务访问另一个事务的能力。提供者通过规定客户的权限可以控制和权限对齐内容访问的方法 |
绑定依赖 | 是较高级的依赖类型,用于绑定模板以创你新年的模型元素。 |
2.泛化关系
泛化关系是抽象出来的父类与子类的关系
3.关联关系
关联是描述一组具有共同结构特征、行为特征、关系和语义的链接。是一种结构关系指明一个事务的对象与另一个对象间的关系。除关联的基本形式之外,还有6中应用于关联的修饰:名称、角色、多重性、聚合、组合、导航性
4.实现关系
实现是规格说明和其实现之间的关系,它将一种模型与另一种模型元素连接取来,如类和接口。
实现关系通常在以下关系中被使用:在接口与实现该接口的类之间;在用例以及实现该用例的协作之间。
机房收费系统类图
对象图
概念
对象图表示在某一时刻一组对象以及它们之间的关系的图。对象图可以被看做是类图在某一时刻的实例。
建模过程
- 确定参与监护的各对象的类,可以参照相应的类图和交互图
- 确定类间的关系,如依赖、泛化、关联和实现
- 针对交互在某特定时刻各对象的状态,使用对象图为这些对象建模
- 建模时,系统分析师要根据建模的目标,绘制对象的关键状态和关键对象之间的连接关系。
机房收费系统对象图
包图
概念
对复杂系统进行建模时,经常需要处理大量的类、接口、组件、节点和图,这时就有必要将这些元素进行分组,即把那些语义相近并倾向于一起变化的元素组织起来加入同一包,这样方便理解和处理整个模型,同时也便于轻松的控制这些元素的可见性,使一些元素是隐藏在包内的。
元素
- 类
- 接口
- 组件
- 节点
- 协作
- 用例和图
包的可见性
包在软件模型中不可能是孤立存在的,包内的模型元素必然会和外部的类存在某些关系。而好的软件模型中各个包间应该做到高内聚、低耦合,为了做到这点,应该对包内的元素加以控制,使得某些元素能被外界访问,包内其他元素对外界不可见。这就是包内元素可见性控制。
可见性 | 含义 | 前缀符号 |
---|---|---|
公有的(public) | 此元素可以被任何引入该包的包中元素访问 | + |
受保护的(proteted) | 此元素可以被继承该包的包中元素访问 | # |
私有的(private) | 此元素只能被同一个包的元素访问 | - |
标准元素
UML的扩充机制同样适用于包,可以使用标记值来增加包的新特性,用构造来描述包的新种类。UML定义了5种构造型来为其扩充标准,分别是虚包(facade)、框架(framework)、桩(stub)、子系统(subsystem)、和系统(system)
构造型 | 用途 |
---|---|
虚包(facade) | 描述一个只应用其他包内元素的包 |
框架(framework) | 描述一个主要由模式组成的包 |
桩(stub) | 描述一个作为另一个包的公共内容代理的包 |
子系统(subsystem) | 描述正在建模中的整个系统的独立部分的包 |
系统(system) | 描述正在建模中的整个系统的包 |