UML的结构
UML的基本构造块
—UML中的事物
—UML中的关系
—UML中的图
UML的规则
UML中的公共机制
—规格说明
—通用划分
—扩展机制
UML的基本构造块
UML的主要包括3种构造块(Building Blocks)
1) 事物(Things):构成模型图的一些基本图示符号,它们表示一些面向对象的基本概念。
2) 关系(Relationships):表示基本图示符号之间的关系。
3) 图(Diagrams):特定的视角对系统所作的抽象描述。
事物是对模型中最具有代表性的成分的抽象;关系把事物结合在一起;图聚集了相关的事物。
UML中的事物(Things)
结构事物
1) 类(class)类是对一组具有相同属性、方法、关系和语义的对象的描述,一个类实现一个或多个接口。
2) 接口(interface)
接口描述了一个类或构成的一个服务的操作集,接口仅仅是定义了一组操作的规范,它并没有给出这组操作的具体实现。
3) 协作(collaboration)
协作定义了一个交互,它是由一组共同工作以提供某协作的角色和其它元素构成的群体,这些协作行为大于所有元素的各自行为的总和,因此,协作有结构、行为和维度。一个给定的类可以参与几个协作。
4) 用例(use case)
用例是对一组动作序列的描述,系统执行这些动作将产生一个对特定的参考者(actor)有价值且可观察的结果。
5) 主动类(Active class)
是这样的类,其对象至少拥有一个进程或线程,因此它能启动控制活动。
6) 构件(component)
构件是系统中物理的、可替代的部件,它遵循且提供一组接口的实现。
7) 节点(node)
节点是运行时存在的物理元素,它表示了一种可计算的资源,它通常至少有一些记忆能力处理能力。一个构件集可以驻留在一个节点内,也可以从偶一个节点迁移到另一个节点。
行为事物
1) 交互(interaction)
交互这样一种行为,他由在特定语境中共同完成一定特定任务的一组对象之间交换的消息组成。一个对象群体的行为或单个操作的行为可用一个交互来描述。
Interaction涉及一些其他元素,包括消息、动作序列(由一个消息所引起的行为)、links(对象间的连接)。
2) 状态机(state machine)
状态机时这样一种行为,描述了一个对象或一个交互在生命内响应事件所经历的状态序列。单个类或一组类之间协作的行为可以用状态机来描述。一个状态机涉及到一些其他元素,包括状态转换(从一个状态到另一个状态的流)事件(发转换的事物)和活动(对一个转换的响应)。
分组事物
分组事物是UML模型的组织部分,最主要的分组事物是包(Package)
包是把元素组织成组的机制
包是UML中唯一的组织机制
包可以拥有其他元素,这些元素可以是类、接口、构件、节点、协作、用例和图,甚至可以是其他包。
一个包形成了一个命名空间。在一个包中同一种元素的名称必须是唯一的。不同种类的元素可以有相同的名称。
注释事物
注释事物是UML模型的解释部分。这些注释事物用来描述、说明和标注模型的任何元素。有一种主要的注释事物,成为注解(note)
注释(note)是一个依附于一个元素或一组元素之上,对它进行约束或解释的简单符号。
UML中的关系
在UML中有4种关系:
关联association
依赖dependency
泛化generalization
实现realization
Association(关联):描述了两个或多个类之间的结构性关系。
泛化是一种特殊/一般关系,特殊元素(子元素)的对象可替代一般元素(父元素)的对象。用这种方法,子元素共享了父元素的结构和行为。
实现是类元之间的语义关系,在该关系中一个类元描述了另一个类元保证实现的契约。
UML表示机制的层次结构:
1、 用例图
2、 类图
3、 行为图
3、1状态图
3、2活动图
3、3交互图
3、3、1序列图
3、3、2协同图
4、 实现图
4、1组件图
4、2部署图
UML中的图
1、用例图(use case diagrams)
用例图用来描述用户的需求,从用户的角度描述系统的功能,并指出各功能的执行者,强调谁在使用系统,系统为执行者完成哪些功能。
2、静态图
类图(class diagrams):用于定义系统中的类,包括描述类的内部结构和类之间的关系。类图主要用于描述系统的静态结构。
对象图(Object diagrams):对象图是类图的一个实例,描述了系统在具体时间点上所包含的对象以及各个对象之间的关系。
3、行为图:用来描述系统的动态模型和对象之间的交互关系,包括:
状态图(statechart diagrams):用来描述类的对象所有可能的状态以及事件发生状态的转移条件。
活动图(activity diagrams):用来描述满足用例要求所要进行的活动以及活动间的约束关系,使用活动图有利于识别系统的并行活动。
交互图:用来描述对象之间的交互关系,包括:
交互顺序,着重体现对象间消息传递的时间顺序,强调对象之间消息的发送顺序,同时也显示对象之间的交互过程。
协作图(Collaboration diagrams):描述对象之间的合作关系,更侧重于说明哪些对象之间有消息的传递。
序列图和协作图可以相互转化。
1、 实现图
构件图(component diagrams):构件图用来描述代码构件的物理结构以及各构件之间的依赖关系。一个构件可以使一个资源文件、一个二进制文件或者一个可执行文件。
实施图(deployment diagrams):部署图定义了系统中硬件的物理体系结构,用来描述实际的物理设备以及它们之间的连接关系。
UML中的规则
不能简单地把UML的构造块按随机的方式放在一起。像任何语言一样,UML有一套规则,这些规则描述了一个结构良好的模型看起来应该像什么。
UML有用于描述如下事物的语义规则:
命名为事物、关系和图起名
范围给一个名称以特定含义的语境
可见性怎样让其他人使用或看见名称
完整性事物如何正确、一致的相互联系
执行运行或模拟动态模型的含义是什么
UML中有4种贯穿整个语言且一致应用的公共机制:
规格说明,修饰,通用划分,扩展机制
规格说明
UML不只是一种图形语言。实际上,在它的图形表示法的每部分背后都有一个规格说明,这个规格说明提供了对构造块的语法和语义的文字叙述。
UML的图形表示法用来对系统进行可视化:UML的规格说明用来描述系统的细节。
UML的规格说明提供了一个语义底板,它包含了一个系统的各模型的所有部分,并且各部分相互联系,并保持一致。因此,UML图只不过是对底板的简单视觉投影,每一个图展现了系统的一个特定的方面。
修饰
UML表示法中的每一个元素都有一个基本符号,可以把各种修饰细节加到这个符号上。
通用划分
类/对象二分法(class/object dichotomy)
—类是一个抽象;对象是这种抽象的一个具体形式。
—UML的每一个构造块几乎都存在像类/对象这样的二分法。例如:用例和用例实例(场景),构件和构件实例,节点和节点实例等。
接口/实现二分法(interface/realization dichotomy)
——接口声明了一个契约,而实现则表示了对该契约的具体实施,它负责如实地实现接口的完整语义。
——几乎每一个UML的构造块都有像接口/实现这样的二分法。
例如:用例和实现它们的协作,操作和实现它们的方法。
扩展机制:
对UML图示符号的扩展。包括:
——构造型Stereotype
——标注值Tagged value
——约束constraint
UML示例
UML在软件开发各个阶段的应用
在软件开发各个阶段,使用不同的UML图对系统进行描述。
采用面向对象技术设计软件系统时,使用用例图来描述用户需求;使用类图、对象图、包图、构件图和部署图这5中静态图来描述系统的静态结构;使用顺序图、合作图、活动图和状态图这4种图描述系统动态行为。
需求:
采用用例图来描述需求(角色、功能、外部交互)。
分析:明确解决问题的细节
——采用类图来描述静态结构
——采用顺序图、合作图、活动图、状态图来描述动态行为
设计:给出解决方法
——采用类图、包,对类的接口进行设计
实现:——将类用某面向对象语言实现
集成与交付:
——构件图、包、部署图
测试:
——单元测试使用类图 和类的规格说明书。
——集成测试使用类图、包、构件图和和作图。
——系统测试使用用例图来测试系统功能。
小结
UML的结构
UML在各个阶段的应用
面向对象技术的基本原则
抽象(abstraction)
封装(encapsulation)
模块性(modularity)
层次性(Hierarchy)
什么是抽象
一个购买商品应用情景的抽象
什么是封装
对客户隐藏实现
——客户仅仅看到接口
什么是对象
物理实体
概念实体
软件实体
对象描述一个事物,它具有:
状态、行为、标识。
对象的状态
对象的状态可改变
对象的行为
行为反映了一个对象将如何影响其他对象。
面向对象技术的基本概念
对象——object
类——class
属性——Operation
操作——operation
接口——interface(polymorphism)
组件——components
包——package
子系统——subsystem
关系——relationships
什么是类
类是对一组具有相同属性,行为,关系和语义的对象的描述。
一个对象是一个类的实例。
类和对象的关系
类是对象的抽象定义
——它定义了属性和方法
——它提供了一个创建对象的模板
什么是接口
什么是组件
一个组件可以是以下之一:
1、 源程序
2、 运行时动态库
3、 可执行程序
组件图示例
可视化代码之间的依赖关系
对象间的关系
关联——聚合、组合
依赖
泛化
实现
面向对象语言的特点
继承性
封装性
多态性
内容提纲
1、 面向对象技术的基本原则
2、 面向对象技术的基本概念
3、 举例
4、 面向对象技术的发展历史
5、 面向对象程序设计语言
C++
Data Type(primitive/object reference/array…)
Operator
Flow Control
Class
Object(Create/initialization/delete)
Inheritance
Abstract class
Polymorphism
Access modifier and scope
Operator overload
Friend
Template
Java
Data Type(primitive/object reference/array…)
Operator
Flow control
Class
Object(Create/initialization/delete/comparison )
Inheritance
Abstract class and interface
Polymorphism
Package and scope