需求的面向对象建模方法
需求的面向对象建模方法
对象建模的基本介绍
• 早期存在很多面向对象的建模方法。不同的 建模技术限制了项目和开发团队之间共享模 型,阻碍了团队成员和用户之间的沟通。
• 统一建模语言(UML):标准的对象建模语 言;没有强制使用某一种系统开发方法,仅 仅是一个目前被广泛接受作为对象建模标准 的符号体系。
• 继承:一个类中定义的属性和方法可以被另一个类继 承或复用。 —继承性表示一般类与特殊类之间的关系,一般类通 常被称为“超类”、“基类”或“父类”,特殊类被 称为“子类”、“衍类”或“派生类”。 • 超类:包含一个或多个子类的公共属性和行为的类。 • 子类:从一个超类继承属性和行为的类,并可能包含 自身所特有的属性和行为。 即子类由继承部分和扩展 部分两部分组成。
对象建模的基本概念—消息
• 消息:一个对象调用另外一个对象的方法以请求信息 或者执行某些动作时发生的通信。 • 对象发送消息并不需要知道接收消息的对象内部是如 何组织的或者行为是如何实现的,只要知道它响应正 确的消息请求即可。
消息请求
对象建模的基本概念—多态性
• 多态性:不同对象可以以不同的形式响应同样的消息, 进而在响应一个消息时采用不同的处理形式。 • 重载是一种与继承性相关的多态性。
对象建模的基本概念—继承
• 超类和子类之间具有一个或多个一对一关系,有时 也称为IS-A关系。 • 继承机制在添加新的属性或程序维护时具有优良的 特性。
对象建模的基本概念—继承的UML表示
箭头表 示继承 关系
对象建模的基本概念—对象/类关系
• 对象和类之间不是孤立存在的,它们相互作用相互影 响,在UML中,将这种一个或多个对象/类之间的自 然业务联系,成为关联关系。
UML模型图
• 用例模型图 • 静态结构图
– 类图 – 对象图
• 交互图
– 顺序图 – 协作图
描述系统与外部系统和 用户的交互。用例描述 描述系统的对象结构. 它们 也用于以文本化的方式 显示构成系统的对象类, 描述每个交互步骤的顺 以及对象类之间的关系. 描述在一个用例或操作 序 的执行过程中对象如何 类似于顺序图,但重点 建模实际的对象实例 - 显示 通过消息互相交互,说 不是消息的定时或“顺 实例的属性的当前值。为 明了消息如何在对象之 序”,相反,它以一种 开发人员提供对象在某个 间被发送和接受以及发 网络格式表现对象之间 时间点上的快照 送的顺序。 的交互(或协作)
对象/类关系—一元关联和多远关联
• 多元关联:一个关联包含了两个以上的关联端,最常 见的是三元关联。 用一个菱形符号表示三元关联。
对象/类关系—限定关联
• 限定关联:带有限定符的关联。限定符表示为一个小 矩形,连接到关联的一端,位于类符号和关联线之间。
• 限定符矩形是关联路径的一部分,而不是类的一部分。 如果对一个关联添加一个限定符,能使关联的另一端的 多重性被限定为0..1或1,从而起到标识作用。
对象功能建模过程—建模用例活动图
• 并发流:同时进行的工作或活动,用同步棒(条)表示。
• 分岔:把一个单独的控制流分成多个并发控制流,可 以有一个进入流和多个离去流,每个离去流表示的活 动并发进行。
• 汇合:有多个进入流和一个离去流,在汇合处,必须 所有的进入流都执行完,才能继续执行。
对象功能建模过程—建模用例活动图
对象/类关系—聚集
一个俱乐部有多个俱乐部 成员构成,但俱乐部成员拥有 俱乐部以外的生活,而且会员 还有可能同时属于多个会员。 所以他们的关系属于共享 聚集。
对象/类关系—聚集
书有封皮、 目录、章节、 索引组成。 书没了,它 们响应地也 不再存在。 所以它 们的关系属 于复合聚集。
对象/类关系—关联类
对象功能建模过程—用例图的细化
• 在确定业务需求用例模型和其最终被系统所有者批准 之间,随着开发过程的演进,更多事实被了解,故有 必要修改已改造的用例图。 —添加新的参与者 —添加新的用例 — 细化用例模型图
对象功能建模过程—用例详细描述
• 确定了所有用例之后,将细化每个用例包含更多的信息 以便详细地说明系统的功能。 • 虽然此阶段的详细描述没有太多的实现细节,但它包含 从系统用户的角度描述用例,比早期与系统交互的角度 更自然。
对象/类关系—多重性符号
• 多重性:零个或多个 • UML记号:0. .*或者 * • 关联含义:一个客户可以没有进行支付,也可以进行 了多次支付
对象/类关系—多重性符号
• 多重性:一个或多个 • UML记号:1. .* • 关联含义:一个大学至少提供一门课程,也可以提供 多门课程
对象/类关系—多重性符号
对象功能建模过程—描述系统顺序图
• 对象:行为的执行者是对象,而不是类。 • 可以是系统的参与者或者任何有效的系统对象。 • 对象是类的实例,它使用包围名称的矩形框来标记, 它的后面可以跟冒号":"及类名,名称带下划线。 • 位置一般在顺序图顶部,表示开始的对象已经存在。
对象功能建模过程—描述系统顺序图
选择地点
对象功能建模过程—建模用例活动图
• 分支:用来描述基于某个判断的可选择路径,一个分 支可以有一个进入流和两个或多个离去流,离去流上 指示判断条件。
• 合并:它将分支流组合在一起,可以有两个或多个进 入流和一个离去流,任何一个流达到以后就继续执行。 • 分支和合并都用菱形表示。
对象功能建模过程—建模用例活动图
• 也可以在交互的过程中创建和撤销对象,分别通过 create和destroy消息表示。 • 对象创建之后就具有生命线,和顺序图中的其它对象 一样;删除某个对象时,还要在被撤销对象的生命线 上访一个X字符。
create
பைடு நூலகம்destroy
对象功能建模过程—描述系统顺序图
• 活动图的构造步骤:(根据用例描述) —确定开始和结束活动结点。 —如有必要,添加泳道。其中一个泳道对应着系统响应 的活动,其他几个泳道参与者发起的活动。 —为用例的每个主要步骤添加一个活动,放置到响应的 泳道中,并添加活动之间的控制流。 —如有必要,添加分支控制流。 —如有必要,添加同步棒。
对象功能建模过程—描述系统顺序图
• 多重性:特定范围 • UML记号:7. .9 • 关联含义:一个团队有7、8或9个任务
对象/类关系—聚集
• 聚集:类之间整体和部分的关系。有两种形式。 • 共享聚集:一个较大的整体类包含一个或多个较小的 部分类,而一个较小的部分类是一个较大整体类的一 部分;部分的生存周期独立于整体。 整体一端表示为空心菱形。 • 复合聚集:一个较大的整体类负责其较小部分类的创 建和销毁,整体不存在时,部分也将不存在。 整体一端表示为实心菱形。
对象建模的基本概念—对象的UML表示
注:对象实例名称由唯一 标识对象的属性值、冒号 及对象所属类的名称构成;
居中,加下划线
对象实例名称和对象属性 值用一条线分隔开 “属性=值”的形式表示
对象建模的基本概念—封装
• 封装:对象的属性和方法被封装到一起作为那个对 象的一部分,访问或修改属性只能通过该对象的方 法来实现。 如:只有你(一个对象)可以修改(方法)你的名字和 家庭住址(你的属性) UML中的每个特征的可见性说明: private:“—” public:“+” protected:“#” package:“~” (通常,属性设置为private,方法设置为public)
对象建模的基本概念—类
• 类:具有相同属性和行为的对象的抽象描述。
• 类和对象:类是抽象的,只描述该类所有对象共有 的属性;对象是具体的实例,有具体的属性值。 类是静态的;对象时动态的,有其生命周期。
对象建模的基本概念—类的UML表示
只显示名称
显示名称和属性 显示名称、属性和方法
对象建模的基本概念—继承
• 顺序图:用例执行的具体步骤采用活动图描述,而系 统的输入输出信息则可以使用顺序图描述。顺序图又 称为序列图。
• 顺序图显示随着时间的变化对象之间是如何通信和交 互的。
对象功能建模过程—描述系统顺序图
顺序图中的各个坐标的含义:
纵向维代表时间,严格按时间先后依次向下排序。 横向维代表不同的对象
顺序图的基本模型元素:对象,生命线,激活期,消息。
• 实现图
– 组件图 – 部署图
对象功能建模过程
• 面向对象分析要求我们辩识从用户角度开 发所需的系统功能、支持所需系统功能的 对象、对象的数据属性、相关的行为以及 对象之间的关联。
• 和用例建模的关系:用例建模所生成的系 统用例图提供了一个概要描述,对象建模 在此基础上进一步细化用例图和用例描述, 并更详细地建模系统功能。
• 关联类:表示关联的一个类,它不仅连接一组类,而 且可以定义关联自身的一组属性和操作。 当需要描述关联自身的属性时,就需要使用关联类。 • 在UML中,将关联类与关联用虚线连接,而且使用类 名与关联的名字相同。
对象/类关系—一元关联和多远关联
• 一元关联:从类的给定实例能连接到该类的其它实例, 又称回归关联。
• 状态图
– 状态图 – 活动图
建模一个特定对象的动态行为, 说明了一个对象的生命周期— —对象可以经历的各种状态, 描述活动的序列流 以及引起对象从一个状态向另 用于描述系统的软件组 一个状态转换的事件。 件的组织和依赖关系 描述系统中硬件和软件的 物理架构,用以说明构成 系统架构的运行时软件组 件、处理器和设备的配置。
对象建模的基本概念—对象、属性、方法
• 对象:可以是任何事物;在系统开发的面向对象方 法中,对象可以是人、地点、事物或事件。 如: 雇员、客户;教室;产品、车辆;注册、预约。 • 属性:描述一个对象相关特征的数据。 如:“学生”:学号、姓名、性别、出生年月。 每个具体的学生被称为一个对象实例。 如:20140623001、张三、男、1994.1.1 • 方法:对象可以做的事情,以及在对象数据上执行 的功能,也称为行为。 如:门可以打开、关闭、锁上、开锁等。