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-