面向对象技术

Download Report

Transcript 面向对象技术

面向对象技术
Object-Oriented Techniques
陈晓华
[email protected]
第 3 章可视化建模实践
A Practice of Visual Modeling with UML
Review: An Overview of Object
Technology and Visual Modeling

对象技术与可视化建模基础








对象技术基础
对象与类
面向对象的基本原则
泛化和多态
面向对象的术语清单
可视化建模的基本原则
UML基础
过程与可视化建模
-3-
学习线路图
OO
OOA
:
:
OOD
DP
UML
… Case-Study …
:
:
:
……
……
……
……
学习线路图
-4-
References





[Flow99], Martin Flower, Kendall Scott, UML
Distilled Second Edition: A Brief Guide to the
Standard Object Modeling Language(徐家福译,
UML精粹——标准对象建模语言简明指南(第2版),清
华大学出版社,2002年)
[OMG03], the Object Management Group, OMG
Unified Modeling Language Specification, version
1.5, 2003
[DEV275], IBM Rational, Essentials of Visual
Modeling with UML, 2003
[Bog02], Wendy Boggs, Michael Boggs, UML with
Rational Rose 2002(邱仲潘,UML与Rational Rose
2002从入门到精通,电子工业出版社,2002年)
[Rose98], Rose培训教材中文简版,面向对象的可视化建
模培训教程
-5-
What Is the UML?

The UML is a language for
Visualizing
 Specifying
Unified Modeling Language(统一建模语言)是对象管
 Constructing
理组织(OMG)制定的一个通用的、可视化的建模语言标
准,可以用来可视化(visualize)
、描述(specify)、
 Documenting

构造(construct)和文档化(document)软件密集型系
the artifacts of a software统的各种工件(artifacts,又译制品)
intensive system
-6-
UML诞生
1997.11.17 UML 1.1被OMG 接纳为标准
1997.9公布
公
众
反
馈
1997.1公布
UML 1.1
UML 1.0 合作伙伴
意见
1996.6和1996.10 UML 0.9&0.91
工 业
化
标 准
化
OOPSLA95 Unified Method 0.8
统 一
化
Booch93 OMT-2
Booch91
OMT-1 其他方法
OOSE
分 散
的
各 部
分
-7-
UML发展现状

目前通用的是UML 1.x版



主要UML 1.3、UML 1.4
2003年3月正式发布UML 1.5
UML 2.0




2003年6月OMG采纳了UML 2.0的
Superstructure的提案
正式文本尚未发布
MDA
…
-8-
UML结构
UML Structure
构造块
公共机制
构架
building blocks
common mechanisms
architecture
基本UML建模元素、关系和图
达到特定目标的公共UML方法
系统架构的UML视图
-9-
构造块
构造块
building blocks
物件
关系
图
things
relationships
diagrams
建模元素本身
把物件联系在一起,关系说明两个或多个物件时如何语义相关的
UML模型的视图,它们展现物件的集合,“讲述关于软件系统的故事”,是
我们可视化系统将做什么(分析级图)或者系统如何做(设计级图)的方法
-10-
物件
物件
things
结构物件
行为物件
分组物件
注解物件
UML模型中的名词,如类、接口、协作、用例、活动类、组件、节点
UML模型的动词,如交互、状态机
包,它用于把语义上相关的建模元素分组为内聚的单元
注解,它附加到模型以捕获特殊信息,同黄色便笺很相像
-11-
关系
关系
relationships
关联
依赖
泛化
实现
association
dependency
generalization
realization
描述对象之间的一组链接
物件的改变引起依赖物件的语义改变
一个元素是另一个元素的特化,而且它可以取代更一般的元素
类元之间的关系,一个类元说明一份契约,另一个类元保证实现该契约
-12-
图
静态模型
(系统结构)
图
diagrams
动态模型
(系统行为)
类图
class diagrams
顺序图
对象图
sequence` diagrams
object diagrams
协作图
构件图
collaboration diagrams
component diagrams
状态图
部署图
statechart diagrams
deployment diagrams
活动图
activity diagrams
用例图
use case diagrams
-13-
公共机制
公共机制
common mechanisms
规格说明
修饰
公共分类
扩展机制
specifications
adornments
common divisions
extensibility mechanisms
-14-
规格说明

UML模型至少具有两种维度:



图形维度:允许使用图和图标可视化模型
文本维度:由各种建模元素的规格说明所组成
规格说明



模型元素的特征和语义的文本描述—模型的“肉”
形成了承载模型的语义背板(semantic
backplane),赋予模型意义,各种图仅仅是该背
板的视图或者可视化投影
death by diagram—由于图形而死亡
-15-
修饰

修饰:图中建模元素上暴露的信息项以表现某
个要点

任何UML图仅是模型的视图,因此,只有在修饰增
强了图的整体清晰性和可读性或者突出模型的某些
重要特征时,你才应该表示那些修饰
W indow
Window
+size:Area
#visibility:Boolean
-xptr:XWindow
+create:void
+hide:void
-attachXWindow:void
-16-
公共分类

公共分类描述认识世界的特殊方法

类元(Classifier)和实例

类元:一类事物的抽象概念;如bank account



参与者、类、类元角色、组件、数据类型、接口、节
点、信号、子系统、用例
实例:一类事物的特定实例;如my bank
account
接口(interface)和实现


接口:说明事物行为的契约(做什么)
实现:事物是如何工作的特殊细节(如何做)
-17-
扩展机制


约束:允许对模型元素添加新的规则
构造型(stereotypes):基于已有的建模元
素引入新的建模元素





The means by which to extend the UML
Stereotypes convey key properties to the
model reader
A number of stereotypes are packaged along
with the UML
Can define your own stereotypes
标记值:允许为模型元素添加新的特性,是带
有相关值得关键字
-18-
架构

Architecture



The organizational structure of a system,
including its decomposition into parts, their
connectivity, interaction mechanisms, and
the guiding principles that inform the design
of a system
构架是一个系统的组织结构,包括系统分解成的各
个部分、它们的连接性、交互机制和通知系统设计
的向导规则
IEEE:在其环境中系统的高级概念
-19-
4+1视图-1
-20-
4+1视图-2

Use Case View



End-user: Functionality
这些视图由用例视图所统一,它描述项目干系人
(stakeholder)的需求;所有其他视图都是从用
例视图派生而来,该视图把系统的基本需求捕获为
用例并提供构造其他视图的基础
Logical View


Analysts/Designers: Structure
系统功能和词汇;描述问题域的词汇,作为类和对
象的集合。重点是展示对象和类是如何组成系统、
实现所需系统行为的
-21-
4+1视图-3

Process View



Implementation View



System integrators: Performance, Scalability, Throughput
系统性能、可伸缩性和吞吐量;建模在我们系统中的可执行线程和
进程作为活动类。其实,它是逻辑视图面向进程的变体,包含所有
相同的制品
Programmers: Software Management
系统组装和配置管理;对组成基于系统的物理代码的文件和组件进
行建模。它同样展示出组件之间的依赖,展示一组组件的配置管理
以定义系统的版本
Deployment View


System engineering: System Topology, Delivery,
Installation, Communication
系统的拓扑结构、分布、移交和安装;建模把组件物理地部署到一
组物理的、可计算节点上,如计算机和外设上。它允许你建模横跨
分布式系统节点上的组件的分布
-22-
总结:UML结构
UML
构造块
物件
公共机制
关系
图
架构
规格说明
用例视图
结构物件
关联
类图
顺序图
修饰
逻辑视图
行为物件
依赖
对象图
协作图
公共分类
进程视图
分组物件
泛化
构件图
状态图
扩展机制
实现视图
注解物件
实现
部署图
活动图
部署视图
用例图
-23-
UML 9种图









类 图:类以及类之间的相互关系
对象图:对象以及对象之间相互关系
构件图:构件及其相互依赖关系
部署图:构件在各节点上的部署
顺序图:强调时间顺序的交互图
协作图:强调对象协作的交互图
状态图:类所经历的各种状态
活动图:对工作流建模
用例图:需求捕获,测试依据
静态图
结
实现图
构
交互图
行为图
行
为
用例图
-24-
UML建模工具





IBM Rational Rose 2003
Borland Together 7.0
Microsoft Visio 2003
Sybase PowerDesigner 10
……

“非程序员杂志”第26到30期UML工具一
览,列出了约129个UML开发工具
-25-
用例与用例图
场景:是用来描述用户和系统之间交互的顺序的步骤
A scenario is a sequence of steps describing an
interaction between a user and a system
用例:是为了达到某一用户目标而组合在一起的一组场景
A use case, then, is a set of scenarios tied together
by a common user goal.
用例图:用来显示在系统(或其它实体)内的用例与系统参
与者之间的关系
A use case diagram shows the relationship among
use cases within a system or other semantic entity
and their actors
主要使用场合:需求获取、定义、分析
-26-
用例图元语
用例
<<extend>>
扩展
<<include>>
包含
参与者
泛化
系统边界
注释体
关联
注释连接
-27-
示例03-01:POST系统

销售点终端(Point-Of-Sale Terminal,
POST)系统







是一个计算机自动化系统
用来记录商品销售信息
处理客户的支付信息
客户可以使用现金、信用卡、支票等多种支付手段
主要用于零售的百货商店
包括计算机和条形码扫描仪等硬件设备和系统运行
软件
……
-28-
示例03-01-1:POST用例图
现金支付
信用卡支付
<<include>>
Cashier
<<include>>
购买商品
<<include>>
Account
支票支付
Administrator
启动
CardProcessingC
ompany
CheckProcessing
Company
-29-
Use Case:购买商品
用例阐述
ID
描述
UC1
参与者
Cashier,Customer
交叉引用 …
顾客带着所要购买的商品来到付款处,出纳员记录下商品信息并接受付款,
付款完成后,顾客带着所购买的商品离开
前置条件 客户购买了若干件商品
基本事件流:
1. 用例起始于顾客带着所要购买的商品到达一个销售点终端
2. 出纳员录入每个商品的商品号,如果出现多个商品,则还需要录入数量
3. 系统确定商品信息输入到正在运行的POST系统,显示当前商品信息和价格
4. 输入完商品信息后,出纳员向POST发出提示,提示商品信息录入完毕
5. 计算和显示顾客的商品价格总额
6. 出纳员将商品价值总额报告给顾客
7. 出纳员接收顾客的付款—顾客的付款数可能高于商品总额
8. 出纳员录入顾客所付的现金总额
9. 系统显示出应找还给顾客的余额,打印付款收据
10. 出纳员收管好现金并取出要找还给顾客的现金,并支付给顾客打印付款收据
11. 系统记录本次交易
12. 顾客带着所购的商品离开
备选事件流:
 第2步:如果输入的商品号码无效,系统显示出错信息
 第7步:顾客没有足够的现金,则取消本次交易
后置条件
-30-
示例03-02:网上销售系统用例图
UpdateCustomer
LogOnCustomer
<<extend>>
DisplayOrders
CancelOrder
CreateNewCustomer
BrowseBooks
DisplayBasket
Customer
BrowseProducts
BrowseCDs
<<include>>
UpdateProduct
FindCDs
CheckOut
<<include>>FindProducts
ShopKeeper
FindBooks
DeleteProductFromCatalog
-31-
静态图:类图、对象图、包图
类图:是软件的蓝图,详细描述了系统内各个对象的相关的
类,以及这些类之间的静态关系
A class diagram is a software blueprint
-Details the types of objects within a system
-Describes the static relationships between classes
对象图:表示在某一时刻类的对象静态结构和行为
An object diagram represents a concrete situation
at a given time, it express both the static structure
(found in class diagrams) and behavior
主要使用场合:系统分析、设计、代码生成
-32-
类图元语-1
Package
类
第一栏是类名,第二栏是类的属性,第三栏
是类的操作
包
包表示一个类图的集合
对象
对象是类的一个实例
关联
关联用于表示类的对象之间的关系,其特殊
形式有组成关联和聚集关联
聚集关联
聚集关联用于表示类的对象之间的关系是整
体与部分的关系
组成关联
组成关联用于表示类的对象之间的关系是整
体拥有各部分且部分与整体共存亡
-33-
类图元语-2
链 接
链接用于表示对象之间的关联关系的一个实
例
泛化关系
泛化关系(继承关系)定义类和包之间的一般
元素和特殊元素之间的分类关系
依赖关系
有两个类或包X、Y,修改X的定义引起对Y的
定义的修改,则称Y依赖于X
注释体
注释连接
注释体用于对UML实体进行文字描述
注释连接将注释体与要描述的实体相连
-34-
示例03-01-2:静态结构图
-35-
顺序图
顺序图:主要用于显示对象间的交互活动,但没有明确的交
互环境和对象状态
Sequence diagrams focus on displaying the
interaction between objects, without representing
explicitly the context of interaction and the object’s
state
Depicting the chronology of the message broadcast,
they are useful in all stages of OO modelling
主要使用场合:系统分析(用例分析)、设计
-36-
顺序图元语-1
Object:Class
带有生命线
的对象
用于表示顺序图中参与交互的对象,每个对
象的下方都带有生命线,用于表示该对象在
某段时间内是存在的。
激活的对象
用于表示对象正执行某一动作,在对象的生
命线之间发送消息的同时即激活对象
分支生命线
生命线可以劈分成多条生命线,用于表示条
件,接收分支消息
删除标志
标于生命线或激活上。表示已删除该对象或
活动的执行
简单消息
表示简单的控制流。用于描述控制如何在对
象间进行传递,不考虑通信的细节
-37-
顺序图元语-2
同步消息
表示嵌套的控制流。操作的调用是一种典型
的同步消息。调用者发出消息后必须等待消
息的返回;当处理消息的操作执行完毕,调
用者才可继续执行自己的操作
异步消息
表示异步控制流。当调用者发出消息后不要
等待消息的返回即可继续执行自己的操作。
异步消息主要用于描述实时系统中的并发行
为
返回消息
用于表示从同步消息激活的动作返回到调用
者的消息
注释体
注释连接
用于对UML实体进行文字描述
注释连接将注释体与要描述的实体相连。说
明该注释体是对该实体所进行的描述
-38-
示例03-01-3:顺序图-1
参与者
系统被当
作黑盒子
: Cashier
重复输入,直到全
部商品输入完毕
购买商品-版本1
: System
//enterItem(UPC,quant...
//endSale()
//makePayment(amount)
用来说明控制、逻辑
、迭代等文字
可以取自于用例的文
字描述
系统事件
它触发了一个系统操作
-39-
示例03-01-3:顺序图-2
: Cashier
: POST
: Sale
:
SalesLineItem
:
ProductSpecification
//enterItem(upc,quant...
//开始交易
//保存所购商品upc,quantity
//获取商品信息
-40-
示例03-01-3:顺序图-3
: POST
: Sale
: Payment
: Cashier
//makePayment(cashTendered)
//通知开始支付
计算支付信息
//返回余额信息
//交易结束
//保存交易信息
-41-
协作图(通讯图)
协作图表示一组对象间关系以及交互活动
Collaboration diagrams express both the context of
a group of objects and the interaction between
these objects
协作图可以认为是对象图的扩展,它增加了一些符号用于表
示对象间的交互
Can be considered to be an extension of object
diagrams, adding notation to represent object
interaction
主要使用场合:系统分析(用例分析)、设计
-42-
协作图元语-1
Object:Class
单个对象
表示合作图中参与交互的对象
Object:Class
多个对象
表示一组对象
关联
表示对象间的各种关系,包括组成关联和聚
集关联
组成关联
表示类的对象之间的关系是整体拥有各部分
且部分与整体共存亡
聚集关联
表示类的对象之间的关系是整体与部分的关
系
指向源的简 表示对象间从目的对象向源对象发送简单消
单消息
息
-43-
协作图元语-2
指向目的的
简单消息 表示对象间从源对象向目的对象发送简单消息
指向源的异
表示对象间从目的对象向源对象发送异步消息
步消息
指向目的的
表示对象间从源对象向目的对象发送异步消息
异步消息
指向源同步
表示对象间从目的对象向源对象发送同步消息
消息
指向目的的
表示对象间从源对象向目的对象发送同步消息
同步消息
注释体
注释连接
-44-
示例03-01-4:协作图
2. //[new sale]create()
1. enterItem(int,
6. int)
makeLineItem(ProductSpecification, int)
: POST
: Sale
3. //create()
: Cashier
4. getSpecification( )
: ProductCatalog
7. //create(spec,qty)
8. //add(sl)
sl :
SalesLineItem
: SalesLineItem
5. //find(upc)
:
ProductSpecification
-45-
状态图
状态图:用于利用状态和事件描述对象本身的行为
A statechart diagram can be used to describe
formally the behavior of objects in terms of states
and events
状态(states): the state of an object
转移(transitions): the passing from one state to
another
事件(events): the occurrence of a given situation
主要使用场合:系统分析(类)、设计
-46-
状态图元语-1
初态
状 态
复合状态
表示状态图的起始点
中间状态
表示状态图的简单状态
复合状态
表示状态图的复合状态,可细化为多个子状
态,用“或”和“与”两种关系相连
终态
条件判断标
志
表示状态图的终点
表示状态间的条件分支转移
-47-
状态图元语-2
并发条
H
表示并发状态
历史标志
用于对复合状态中的某个子状态做标志,说明
该子状态是退出复合状态时最后所处的状态
转移
用于说明两个对象间存在某种关系,如满足某
个条件并当某一事件发生时,对象将从一个状
态变迁到另一个状态并同时执行一些活动
注释体
注释连接
-48-
示例03-01-5:状态图
enterItem
Waiting
ForSale
enterItem
Entering
Items
endSale
makePayment
WaitingFor
Payment
-49-
活动图
活动图:通过动作来组织,主要用于描述某一方法、机制或
用例的内部行为
Activity diagrams are:
-a variant of statechart diagrams, organized
according to actions
-targeted towards representing the internal
behavior of a method, a mechanism or a use case
主要使用场合:业务建模、用例分析
-50-
活动图元语-1
活 动
组合活动
对象
起点
表示活动图中所有活动的起点(一般每幅活动图
有且仅有一个起点)
终点
表示活动图中活动的终点。一般每幅活动图有
一个或多个终点
活动
表示活动图所描述的过程中的某一活动。该活
动是原子活动(即不可再被细分)
组合活动
表示活动图所描述的过程中的某一活动。该活
动可再细分成多个活动(一般用另一张活动图加
以描述)
对象
若与信号流相连,表示它是与活动图中的对象
进行交互(接收或发送信号)的其他对象;若与
数据流相连,表示它是活动的输入产品或输出
产品
-51-
活动图元语-2
泳道
泳道
用于对活动图中的活动进行分组,同一组活动由一
个或多个对象负责完成
条件判断
一种特殊活动,表示活动流程中的判断。通常有多
个信息流从它引出,表示决策后的不同活动分支
同步条
一种特殊活动,表示活动之间的同步。一般有一个
或多个信息流向它引入,有一个或多个信息流从它
引出,表示引入的信息流同时到达,引出的信息流
被同时触发
信号接收
一种特殊活动,若与信号流相连,表示相应信号的
信号接收 接收是某个活动转移的必要条件。等价于信息流上
的事件标识
信号发送
一种特殊活动,若与信号流相连,表示在某个活动
信号发送 转移发生时向某个对象发送一个信号。等价于信息
流上的发送子句
-52-
活动图元语-3
信息流
用于连接活动、组合活动及特殊活动(如起点、
终点、同步条及判断等),表示活动的转移
数据流
用于连接活动与对象,表示该对象是该活动
的输入或输出
信号流
将一个信号发送(或信号接收)与一个对象相
连接,表示向该对象发送(或由该对象接收)
一个信号
注释体
注释连接
-53-
示例03-03:活动图-找饮料
活动
起点
找饮料
同步条
将咖啡放到
过滤器中
判定活动
没有咖啡
找到咖啡
加水到容器
中
找到可乐
取出咖啡杯
取一听可口
可乐
把过滤器放
到咖啡炉上
点燃咖啡炉
冲调咖啡
终点
倒咖啡
喝饮料
-54-
总结:几种动态图的用法

区别:




交互图(顺序图、协作图):适合描述单个用例中
多个对象之间的协作行为
状态图:适合描述跨越多个用例的单个对象的行为,
不适合描述多个对象之间的协作行为
活动图:适合描述多个对象跨越多个用例时的总面
貌
不应对系统中的每个类都画状态图,而只应对
某些关键类建立状态图;而且应将状态图与其
它技术组合使用
-55-
构件图
构件图:描述在系统实现环境中的软件构件和它们间的关系
Component diagrams depict software components
and their relationships within the implementation
environment
主要使用场合:系统设计、部署
-56-
构件图元语
构件
构件
构件代表可执行的物理代码模块
接口
对外提供的可见操作和属性,称之为构件的
接口
依赖关系
有两个构件元素X、Y,修改元素X的定义可
能会引起对另一个元素Y的定义的修改,则称
元素Y依赖于元素X
注释体
注释连接
-57-
示例03-01-6:构件图
核心
销售
商品
支付
-58-
部署图
部署图:用于描述系统所需的硬件构件的物理部署
Deployment diagrams are used to illustrate the
physical layout of the various hardware components
that are needed for a system to operate
主要使用场合:部署
-59-
部署图元语-1
结点
一个结点代表一个物理设备以及在其上运行
的软件系统
构件
构件
构件代表可执行的物理代码模块
对象
对象
对象是类的一个实例
接口
对外提供的可见操作和属性,称之为构件的
接口
结点
-60-
部署图元语-2
连 接
结点之间的连线表示系统之间进行交互的通
信路径,在UML中称为连接
依赖关系
有两个构件元素X、Y,修改元素X的定义可
能会引起对另一个元素Y的定义的修改,则
称元素Y依赖于元素X
注释体
注释连接
-61-
示例03-01-7:部署图
商品服
务器
销售终端
管理员后
台
-62-