1 / 29

第九课

第九课. 面向对象分析与设计方法. 方法学和面向对象方法论. 1.方法论是指思考和做事的策略、步骤、方向和行动 面向对象方法论的概念在1987年由 Booch 首先提出 2.目前面向对象方法论有50多种,主要有: Booch 模型; Rumbaugh 的 OMT 模型; Jacobson 的 OOSE 模型; Martin 的 OOAD 模型; Shlaer 的 OOSA 模型; Coad 的面向对象方法论; Martin 的面向对象方法论等等。

malia
Download Presentation

第九课

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第九课 面向对象分析与设计方法

  2. 方法学和面向对象方法论 • 1.方法论是指思考和做事的策略、步骤、方向和行动 面向对象方法论的概念在1987年由Booch首先提出 • 2.目前面向对象方法论有50多种,主要有: • Booch模型;Rumbaugh的OMT模型;Jacobson的OOSE模型;Martin的OOAD模型;Shlaer的OOSA模型;Coad的面向对象方法论;Martin的面向对象方法论等等。 • 3.目前人们在努力统一各种面向对象方法论,统一的结果是产生了统一模型语言——UML。UML本身不是方法,但是UML提供了能够描述所有面向对象方法的符号工具和语义工具。

  3. 面向对象程序设计的一般过程

  4. 面向对象程序设计的一般方法 建立面向对象的领域模型 描述问题域 OOA 重点考虑什么事必须完成,而不是如何完成。 提出解决方案 确定面向对象的实现模型 OOD 决定问题如何来解决。 实施解决方案 构造、测试和发布面向对象程序 OOP

  5. 本课使用的例子 • 一个文件分割、合并器 • 能够分割和合并文件 • 能够增加和删除文件 • 能够展示和提取文件

  6. 领域模型 • OMT方法 • Coad对象方法 • Jacobson用例驱动方法

  7. 领域模型(Coad方法) 模型部件 问题域(PD) 人机交互(HI) 数据管理(DM) 系统交互(SI)

  8. 领域模型(OMT方法) • 1.什么是对象模型 • 对象模型描述了客观世界实体以及实体彼此间的关系,是问题域的静态数据结构表示,以对象图形式表示。 • 2.什么是动态模型 • 动态模型表示瞬时的、行为化的系统的“控制”性质,规定了类型模型中实体的合法变化序列,即对象的动态行为,以状态图形式表示。 • 3.什么是功能模型 • 功能模型用来描述系统中对象功能,表达数据的流动、转换情形,以数据流程图、用例图形式表示。

  9. 领域模型( Jacobson用例方法) • 用例(use case)是指行为相关的事务(transaction)序列,该序列由用户在与系统交互中执行。每一个用例就是一个使用系统的方式,当用户给定一个输入,就执行一个用例的实例,并引发执行属于该用例的一个事务。 • 确定用例模型,用例由使用者、实例和作用三个部分描述 • 使用用例模型构造需求模型 • 需求模型包括领域对象模型、界面描述 • 使用用例和需求模型建立分析模型,分析模型用于划分出接口对象、实体对象、控制对象,以及由这些对象组成的子系统

  10. 建立领域模型的一般方法 • 领域模型的内涵: • 问题域有什么 • 问题域做什么 • 问题域需要我们提供什么功能 • 领域模型建立的一般步骤: • 1. 跟踪、记录所有的实体,输出一个实体的词汇表 • 2. 统一类型、实体命名方法和规则 • 3. 描述单个类型,输出不完全的类图 • 4. 确定类型之间的关系,输出完整的类图(问题域的静态结构) • 5. 描述状态、时序、流程(问题域的动态结构) • 6. 建立用例,用于描述功能 • 7. 提取界面并展示给用户 • 8. 迭代上述过程

  11. 描述实体类型 • 文件 • 集合文件

  12. 描述类型之间的静态关系 • 关联关系 • 普通关联 递归关联 限定关联 • 或关联 有序关联 关联类 三元关联 • 聚合关系 • 继承关系 • 依赖关系

  13. 文件和集合文件的关系 在问题域中的模型主要用于呈现给用户以及对问题的理解,可以是不精确的,可能与最后的实现模型有一定的区别

  14. 描述实体类型的动态关系 可以用活动、状态 序列等描述类型之 间的动态关系

  15. 建立用例 • 用例用于以下目的: • 确定系统功能,达成与用户的共识 • 在分析、设计、开发人员之间取得一致 • 提供系统设计、实现中类、对象等的设计依据 • 为系统测试打下基础 • 用例由以下几个部分构成: • 角色 • 实例 • 实例的操作关系(时序、调用、合并) • 角色-实例的描述

  16. 用例图

  17. 小结(领域模型) • 对问题域的分析输出了以下成果 • 1.确定了问题域中有哪些实体类型以及它们之间的关系 • 2.确定了问题域中这些实体类型的动态结构 • 3.确定了需要实现的功能 • 如果使用UML工具,将形成 • 1 .类图 • 2.活动图 • 3.用例图

  18. 实现模型(OMT方法) • 1.确定体系结构 • 将系统划分成子系统 • 确定问题域中一致的继承 • 分配子系统的处理器和任务 • 选择一个方法管理数据存储 • 确定全局资源以及访问方式 • 确定系统的控制流 • 处理边界条件 • 2.确定对象结构 • 合并问题域三个模型来获得类的操作(服务) • 设计算法实现操作 • 优化对数据的访问路径 • 调整类结构,增加继承、抽象和泛化 • 确定类关系(作用关系) • 将类和关系封装在子系统或者模块中 • 3 输出结果 • 更加详细的对象模型、动态模型、功能模型

  19. 主题层 人机 交互 问题域 数据 管理 任务 管理 类与对象层 结构层 属性层 服务层 实现模型(Coad方法) 主题层:模块、包、命名空间的划分 类与对象层:确定有哪些类 结构层:确定类、对象之间的关系(通用-特定;整体-部分) 属性层:确定类的属性,以及属性的封装机制 服务层:确定类的接口

  20. 实现模型(用例方法) • 用例方法将该阶段称为构造阶段,构造阶段的成果包含了: • 1.构块模型,构块模型的设计集中考虑可跟踪性、实现环境 • 2.交互作用图,交互作用、事件与激励、均一化 • 3.确定对象内部行为(状态图) • 4.实现和测试

  21. 建立实现模型的一般方法 • 实现模型的内涵: • 1.实现模型中有哪些类,每个类有哪些接口 • 2.实现模型中这些类是怎样组织的 • 3.对于每一项功能,实现模型中类的动态调用过程是怎样的 • 4.类、接口、功能以怎样的方式呈现给用户 • 建立实现模型的一般步骤: • 1.扩展问题模型确定对象类以及对象类的领域(类图) • 2.寻找可重用的设计模式 • 3.根据问题模型确定类的状态空间和行为接口(类图) • 4.根据问题模型确定类的组织方式(类图/对象图/包图/配置图) • 5.确定类的工作流、控制流(细化的活动图、序列图等) • 6.迭代上述过程

  22. 确定类的领域 • 一个标准的面向对象系统的类包括四个领域 • 1.应用领域——包含了对于应用本身有价值的类 • 事件管理类 • 事件识别类 • 2.商业领域——包含了对于行业有价值的类 • 关系类 • 角色类 • 属性类 • 3.结构领域——包含了对于体系结构有价值的类 • 人机界面类 • 数据操作类 • 机器通信类 • 4.基础领域——包含了实现应用、商业、结构的语言相关的类 • 语义类 • 结构类 • 基础类 • 可重用性:基础领域>结构领域>商业领域>应用领域

  23. 确定类的领域 • 应用领域类 • 文件集合类(SetFile) • 商业领域类 • 文件类(File) • 文件流类(FileStreamOpt) • 文件合并分割类(FileCutMerge) • 结构领域类 • 系统主窗口 MainWindow • 集合文件浏览窗口 FilesBrowseWindow • 文件详细信息查看窗口 FileInfoWindow • 命令按钮/工具栏 CommandButton/CommandToolBar • 基础领域类 • 字符串/整数/布尔 String/Integer/Boolean • 日期时间 DateTime • 哈希表 Hash • 枚举 Iterator

  24. 确定类的状态空间和行为接口 • 类的状态空间是指类的属性以及属性的约束条件 • 类的行为接口是指类暴露的方法或者服务 • 在复杂的类设计中,类的状态空间和行为接口应通过对不变式、前置条件和后置条件的设计作为依据 • 类的不变式、前置条件和后置条件可以作为系统单元测试的主要依据 • 例如在设计时刻应确保FileStreamOpt的行为接口 • ExtractStream前置条件是存在一个File(file1)对象,后置条件是存在一个File(file2)对象和一个FileStreamOpt(stream1)对象,且 • Size(file1) = size(file2) + size(stream1)为不变式

  25. 类的状态空间和行为

  26. 确定类的组织方式 类的组织方式往往和实现的语言有关,类可以有以下几种组织方式,类的组织设计应以问题域的类图为依据: 1.通用-特化(继承关系) 2.抽象-实例(接口、抽象类、模板) 3.聚集(成员) 4.关联(单向或者双向的引用) 5.依赖(函数参数、友元)

  27. 确定类的组织方式

  28. 确定类的工作流 • 根据用例细化问题域的状态图、活动图等,详细描述 • 对于用例的每一个实例,确定系统对象调用流程

  29. 小结(实现模型) • 建立实现模型将输出以下结果: • 确定了系统所有实现的类、类的接口、不变式 • 确定了类之间的组织关系 • 每一个功能的实现细节 • 如果使用UML,将形成以下内容 • 类图、对象图、包图 • 协作图、活动图、配置图 • 细化的用例图

More Related