标题：面向对象的分析与设计
图书简介
本书是一本全面论述面向对象分析与设计方法的专著。全书分为3部分。第一部分为基础篇，论述面向对象方法的基本思想和主要概念，对不同的分析与设计方法进行综述，对统一建模语言(UML)和本书提出的方法做概要介绍。
第二部分为分析篇，详细介绍面向对象分析的全过程，围绕面向对象建模中的需求模型（用况图）、基本模型（类图）、辅助模型（包图、顺序图、活动图以及其他各种UML模型图）和模型规约，对面向对象的分析进行深入讨论，给出详细的过程指导和工程策略，并对相关的UML内容做较详细的介绍。第三部分为设计篇，介绍如何在面向对象分析模型基础上，针对具体的实现条件进行面向对象的系统设计，包括问题域部分、人机交互部分、控制驱动部分和数据接口部分4个主要部分的设计，最后介绍如何进行构件化与系统部署。
本书可供计算机软件领域的研究人员和工程技术人员，计算机软件专业的教师、研究生和高年级本科生阅读参考。[1]
图书信息
作者：邵维忠、杨芙清 
书号：9787302301202定价：44.5元印次：1-1装帧：平装印刷日期：2012-12-25
图书前言
全书共包括15章，分为3个部分。第一部分为基础篇。其中第1章论述面向对象方法的基本思想，定义和解释其中的基本概念，并介绍其历史与现状。这些基本知识是学习面向对象分析与设计方法的重要基础。第2章首先介绍历史上出现的几种经典的分析与设计方法，并与面向对象方法进行比较，然后介绍4种影响较大而风格不同的面向对象分析与设计方法。第3章对UML规范进行简要介绍，包括其背景及发展历史，以及UML1与UML2先后两个版本系列的基本内容与概况。第4章对本书的OOA与OOD方法进行了提纲挈领式的介绍，是分析篇和设计篇各章内容的总纲。
第二部分为分析篇，详细介绍面向对象分析的全过程。其中第5章介绍如何进行需求分析，建立系统的需求模型，即用况图。第6章～第8章是面向对象系统分析的核心内容，从对象、对象的特征层以及对象之间关系3个层次介绍如何建立系统的基本模型，即类图。对如何运用面向对象概念进行类图中每个层次的建模给出详细的过程指导。第9章介绍如何根据实际需要有选择地建立系统的各种辅助模型，重点介绍UML的包图、顺序图、活动图、状态机图和构件图，对其他各种图只做简要介绍。第10章介绍模型规约，讨论如何通过模型规约对系统模型图进行详细而准确的描述，给出一种便于计算机理解（从而提高代码自动生成的比例）并有利于复用的规约组织格式。
第三部分为设计篇，介绍如何将平台无关的OOA模型设计为平台专用的OOD模型。OOD模型包括4个主要部分。第11章介绍问题域部分的设计，根据编程语言、复用支持和硬件性能等实现条件，对来自问题域的类进行修改和调整，使之适用于选定的实现平台并满足性能等方面的要求。第12章介绍人机交互部分的设计，主要解决人机交互过程的提取、交互命令组织和人机界面的设计问题。第13章介绍控制驱动部分的设计，主要解决并发系统和分布式系统中的对象分布和控制流的设计问题。第14章介绍数据接口部分的设计，主要解决对象的持久存储问题，针对文件系统、关系数据库管理系统和面向对象数据库管理系统给出不同的设计策略。第15章介绍如何将OOD模型构件化以及如何进行系统部署。
图书目录
第一部分 基 础 篇第1章 面向对象方法概论31.1 什么是面向对象31.2 从认识论看面向对象方法的形成51.2.1 软件开发--对事物的认识和描述51.2.2 语言的鸿沟51.2.3 编程语言的发展使鸿沟变窄51.2.4 软件工程学的作用81.2.5 面向对象是软件方法学的返璞归真121.3 面向对象方法的基本概念121.3.1 对象131.3.2 类141.3.3 封装161.3.4 继承171.3.5 聚合181.3.6 关联201.3.7 消息211.3.8 多态性221.3.9 其他221.3.10 术语对照241.4 面向对象方法的历史及现状261.4.1 历史261.4.2 发展到软件生存周期全过程271.4.3 渗透到计算机软件的各个领域30第2章 不同的分析与设计方法332.1 功能分解法332.2 结构化方法342.3 信息建模法35目录面向对象的分析与设计 2.4 面向对象方法362.4.1 什么是OOA362.4.2 什么是OOD372.4.3 面向对象方法的主要优点382.4.4 几种典型的面向对象方法412.4.4.1 Booch方法432.4.4.2 Coad/Yourdon方法452.4.4.3 Jacobson方法482.4.4.4 Rumbaugh方法52第3章 统一建模语言UML简介563.1 UML的背景与发展历史563.2 UML1概况583.2.1 UML1规范的主要组成部分583.2.2 语言体系结构和定义方式593.2.3 UML1的各种图和扩展机制623.3 UML2概况663.3.1 从UML1到UML2663.3.2 UML2的4个规范673.3.2.1 UML基础结构673.3.2.2 UML上层结构683.3.2.3 对象约束语言693.3.2.4 UML图交换70 3.3.3 UML2的各种图70第4章 本书的OOA&D方法概貌744.1 引言744.2 主要概念744.2.1 主要模型元素754.2.2 面向对象建模的主要原则764.3 模型及其规约804.3.1 基本模型--类图804.3.2 需求模型--用况图814.3.3 辅助模型--其他各种图824.3.4 模型规约824.3.5 OOA模型框架OOA模型框架834.3.6 OOD模型框架OOD模型框架834.4 建模过程854.4.1 OOA过程854.4.2 OOD过程874.5 OOA与OOD的关系884.5.1 一致的概念与表示法884.5.2 不同的目标、内容和抽象层次894.5.3 在软件生存周期中的位置904.5.4 两种不同的分工观点904.5.5 从模型驱动的体系结构看OOA与OOD的关系92第二部分 分 析 篇第5章 建立需求模型--用况图975.1 需求分析和系统分析975.2 基于用况的需求分析基本思路985.3 系统边界与参与者985.3.1 系统边界985.3.2 参与者995.4 用况1015.4.1 什么是用况1015.4.2 用况的内容与格式1035.4.3 如何定义用况1045.5 用况图1055.5.1 模型元素及表示法1055.5.2 几个值得商榷的问题1075.6 开发过程与建议110第6章 发现对象、定义对象类1136.1 对象和类的概念及其运用1136.1.1 概念1136.1.2 类的语义1146.1.3 在类的抽象层次建模1156.1.4 如何运用对象和类的概念1176.2 表示法1186.3 发现对象1186.3.1 研究问题域1186.3.2 正确地运用抽象原则1196.3.3 策略与启发1206.3.4 审查与筛选1226.4 对象分类1246.4.1 将对象抽象为类1246.4.2 审查与调整1246.4.3 类的命名125第7章 定义对象的属性和操作1277.1 属性和操作1277.2 表示法1287.3 定义属性1297.3.1 策略与启发1297.3.2 审查与筛选1307.3.3 推迟到OOD考虑的问题1317.3.4 属性的命名和定位1317.4 定义操作1327.4.1 行为分类1327.4.2 策略与启发1337.4.3 审查与筛选1347.4.4 认识对象的主动行为1347.4.5 描述操作流程1347.4.6 操作的命名和定位1357.5 接口的概念及其用途136第8章 建立对象间的关系1408.1 一般-特殊结构1408.1.1 相关概念1408.1.2 表示法1428.1.3 如何发现一般-特殊结构1438.1.4 审查与筛选1458.1.5 一般-特殊结构的简化1478.1.6 多继承及多态性问题1508.2 整体-部分结构1528.2.1 相关概念1528.2.2 表示法1538.2.3 如何发现整体-部分结构1558.2.4 审查与筛选1568.2.5 整体-部分结构的高级应用技巧1568.2.5.1 简化对象的定义1568.2.5.2 支持软件复用1578.2.5.3 表示数量不定的组成部分1588.2.5.4 表示动态变化的对象特征159 8.2.6 两种结构之间的变通1628.3 关联1638.3.1 相关概念1638.3.2 表示法及实现技术1658.3.2.1 基本表示法1658.3.2.2 二元关联的实现1668.3.3 运用简单的关联概念解决复杂的关联问题1698.3.3.1 带有属性和操作的关联1698.3.3.2 三元关联和?n?元关联1718.3.3.3 一个类在关联中多次出现1738.3.3.4 关联端点的复杂情况174 8.3.4 如何建立关联1808.4 消息1848.4.1 什么是消息1848.4.1.1 顺序系统中的消息1848.4.1.2 并发系统中的消息1858.4.1.3 消息对面向对象建模的意义187 8.4.2 消息的表示法1878.4.3 如何建立消息1918.5 关于依赖关系1938.5.1 什么是依赖1938.5.2 依赖的定义方式和表示法1948.5.3 依赖关系对面向对象建模的作用197第9章 建立辅助模型1999.1 类图与其他模型图之间的关系1999.2 包图2019.2.1 包的概念、用途及表示法2019.2.2 包之间的关系及表示法2029.2.3 如何建立包图2059.2.3.1 将模型元素打包2059.2.3.2 包的命名2089.2.3.3 组织嵌套的包2099.2.3.4 减少包的嵌套层次2109.2.3.5 建立包之间的关系210 9.2.4 用包图控制系统的视野2129.3 顺序图2129.3.1 顺序图及其用途2129.3.2 主要概念及表示法2139.3.3 顺序图的组织机制与复用2179.3.4 关于顺序图的若干问题讨论2199.3.5 如何建立顺序图2219.4 活动图2239.4.1 活动图及其用途2239.4.2 主要概念及表示法2249.4.3 一个活动图的例子2289.4.4 关于活动图的若干问题讨论2309.4.5 如何建立活动图2329.5 状态机图2359.5.1 状态机图与状态建模2359.5.2 主要概念及表示法2369.5.3 一个状态机图的例子2419.5.4 如何建立状态机图2429.6 构件图2459.6.1 构件图的由来及用途2459.6.2 主要概念及表示法2459.6.3 如何建立构件图2489.7 UML的其他几种模型图2499.7.1 对象图2499.7.2 组合结构图2509.7.3 通信图2519.7.4 交互概览图2529.7.5 定时图2549.7.6 部署图257第10章 模型规约25910.1 相关概念及问题讨论25910.1.1 什么是模型规约25910.1.2 模型规约是给谁看的26010.1.3 描述语言的选择26010.1.4 模型规约的组织方式26110.1.5 关于对象约束语言OCL26210.2 类图的规约26410.2.1 目标与措施26410.2.2 类规约的内容26610.2.3 类规约的格式26810.3 其他模型图的规约27010.4 模型规约的建立过程270第三部分 设 计 篇第11章 问题域部分的设计27511.1 什么是问题域部分27511.2 实现条件对问题域部分的影响27611.3 设计过程27711.3.1 设计准备27711.3.2 设计内容及策略27711.3.2.1 针对编程语言支持能力的调整27711.3.2.2 增加一般类，提供共同协议28211.3.2.3 为实现复用采取的设计策略28311.3.2.4 提高性能28511.3.2.5 为实现对象持久存储所做的修改29011.3.2.6 完善对象的细节29011.3.2.7 定义对象实例29511.3.2.8 修改或补充辅助模型及模型规约296 11.3.3 建立与OOA文档的映射297第12章 人机交互部分的设计30012.1 什么是人机交互部分30012.2 人机交互部分的需求分析30012.2.1 分析参与者--与系统交互的人30112.2.2 从用况分析人机交互30212.2.3 分析处理异常事件的人机交互30512.2.4 命令的组织30612.2.5 输出信息的组织30912.3 人机界面的设计准则31012.4 人机界面的面向对象设计31212.4.1 选择界面支持系统31212.4.2 选用实现交互界面元素31412.4.3 用面向对象概念表示界面元素31612.5 可视化编程环境下的人机界面设计32012.5.1 问题的提出32012.5.2 所见即所得的界面开发32012.5.3 设计的必要性32312.5.4 基于可视化编程环境的设计策略324第13章 控制驱动部分的设计33013.1 什么是控制驱动部分33013.2 相关技术问题33013.2.1 系统总体方案系统总体方案33013.2.2 软件体系结构33113.2.3 网络环境中的软件体系结构33213.2.4 系统的并发性33413.2.4.1 顺序程序和并发程序33413.2.4.2 进程和线程33513.2.4.3 应用系统的并发性33713.2.4.4 术语讨论34013.3 如何设计控制驱动部分34213.3.1 选择软件体系结构风格34213.3.2 确定系统分布方案34213.3.3 识别控制流34713.3.4 用主动类表示控制流349第14章 数据接口部分的设计35114.1 什么是数据接口部分35114.2 数据管理系统及其选择35214.2.1 文件系统35214.2.2 数据库管理系统35314.2.2.1 关系数据库和数据库管理系统35414.2.2.2 面向对象数据库和数据库管理系统35614.2.3 数据管理系统的选择35614.3 对象存储方案和数据接口的设计策略35814.3.1 针对文件系统的设计35814.3.1.1 对象在内存空间和文件空间的映像35814.3.1.2 对象存放策略35914.3.1.3 设计数据接口部分的类36114.3.1.4 问题域部分的修改362 14.3.2 针对RDBMS的设计36314.3.2.1 对象及其对数据库的使用36314.3.2.2 对象在数据库中的存放策略36614.3.2.3 数据接口部分类的设计和问题域部分的修改374 14.3.3 针对OODBMS的设计376第15章 构件化与系统部署37815.1 面向对象方法与构件技术37815.2 面向对象模型的构件化37915.3 系统部署38015.3.1 软件制品的组织38115.3.2 系统部署过程与策略382索引385参考文献389第一部分 基 础 篇第1章 面向对象方法概论31.1 什么是面向对象31.2 从认识论看面向对象方法的形成51.2.1 软件开发--对事物的认识和描述51.2.2 语言的鸿沟51.2.3 编程语言的发展使鸿沟变窄51.2.4 软件工程学的作用81.2.5 面向对象是软件方法学的返璞归真121.3 面向对象方法的基本概念121.3.1 对象131.3.2 类141.3.3 封装161.3.4 继承171.3.5 聚合181.3.6 关联201.3.7 消息211.3.8 多态性221.3.9 其他221.3.10 术语对照241.4 面向对象方法的历史及现状261.4.1 历史261.4.2 发展到软件生存周期全过程281.4.3 渗透到计算机软件的各个领域30第2章 不同的分析与设计方法332.1 功能分解法332.2 结构化方法342.3 信息建模法35目录面向对象的分析与设计 2.4 面向对象方法362.4.1 什么是OOA362.4.2 什么是OOD372.4.3 面向对象方法的主要优点382.4.4 几种典型的面向对象方法41第3章 统一建模语言(UML)简介563.1 UML的背景与发展历史563.2 UML1概况583.2.1 UML1规范的主要组成部分583.2.2 语言体系结构和定义方式593.2.3 UML1的各种图和扩展机制623.3 UML2概况663.3.1 从UML1到UML2663.3.2 UML2的4个规范663.3.3 UML2的各种图70第4章 本书的OOA&D方法概貌744.1 引言744.2 主要概念744.2.1 主要模型元素754.2.2 面向对象建模的主要原则764.3 模型及其规约804.3.1 基本模型--类图804.3.2 需求模型--用况图814.3.3 辅助模型--其他各种图824.3.4 模型规约824.3.5 OOA模型框架OOA模型框架834.3.6 OOD模型框架OOD模型框架834.4 建模过程854.4.1 OOA过程854.4.2 OOD过程874.5 OOA与OOD的关系884.5.1 一致的概念与表示法884.5.2 不同的目标、内容和抽象层次894.5.3 在软件生存周期中的位置904.5.4 两种不同的分工观点904.5.5 从模型驱动的体系结构看OOA与OOD的关系92第二部分 分 析 篇第5章 建立需求模型--用况图975.1 需求分析和系统分析975.2 基于用况的需求分析基本思路985.3 系统边界与参与者985.3.1 系统边界985.3.2 参与者995.4 用况1015.4.1 什么是用况1015.4.2 用况的内容与格式1035.4.3 如何定义用况1045.5 用况图1055.5.1 模型元素及表示法1055.5.2 几个值得商榷的问题1075.6 开发过程与建议110第6章 发现对象、定义对象类1136.1 对象和类的概念及其运用1136.1.1 概念1136.1.2 类的语义1146.1.3 在类的抽象层次建模1156.1.4 如何运用对象和类的概念1176.2 表示法1186.3 发现对象1186.3.1 研究问题域1186.3.2 正确地运用抽象原则1196.3.3 策略与启发1206.3.4 审查与筛选1226.4 对象分类1246.4.1 将对象抽象为类1246.4.2 审查与调整1246.4.3 类的命名125第7章 定义对象的属性和操作1277.1 属性和操作1277.2 表示法1287.3 定义属性1297.3.1 策略与启发1297.3.2 审查与筛选1307.3.3 推迟到OOD考虑的问题1307.3.4 属性的命名和定位1317.4 定义操作1317.4.1 行为分类1327.4.2 策略与启发1327.4.3 审查与筛选1337.4.4 认识对象的主动行为1347.4.5 描述操作流程1347.4.6 操作的命名和定位1357.5 接口的概念及其用途136第8章 建立对象间的关系1408.1 一般-特殊结构1408.1.1 相关概念1408.1.2 表示法1428.1.3 如何发现一般-特殊结构1438.1.4 审查与筛选1458.1.5 一般-特殊结构的简化1478.1.6 多继承及多态性问题1498.2 整体-部分结构1528.2.1 相关概念1528.2.2 表示法1538.2.3 如何发现整体-部分结构1548.2.4 审查与筛选1558.2.5 整体-部分结构的高级应用技巧1568.2.6 两种结构之间的变通1618.3 关联1638.3.1 相关概念1638.3.2 表示法及实现技术1648.3.3 运用简单的关联概念解决复杂的关联问题1688.3.4 如何建立关联1798.4 消息1838.4.1 什么是消息1838.4.2 消息的表示法1878.4.3 如何建立消息1908.5 关于依赖关系1928.5.1 什么是依赖1928.5.2 依赖的定义方式和表示法1938.5.3 依赖关系对面向对象建模的作用197第9章 建立辅助模型1999.1 类图与其他模型图之间的关系1999.2 包图2019.2.1 包的概念、用途及表示法2019.2.2 包之间的关系及表示法2029.2.3 如何建立包图2059.2.4 用包图控制系统的视野2119.3 顺序图2129.3.1 顺序图及其用途2129.3.2 主要概念及表示法2129.3.3 顺序图的组织机制与复用2179.3.4 关于顺序图的若干问题讨论2199.3.5 如何建立顺序图2209.4 活动图2239.4.1 活动图及其用途2239.4.2 主要概念及表示法2249.4.3 一个活动图的例子2289.4.4 关于活动图的若干问题讨论2299.4.5 如何建立活动图2329.5 状态机图2359.5.1 状态机图与状态建模2359.5.2 主要概念及表示法2369.5.3 一个状态机图的例子2419.5.4 如何建立状态机图2429.6 构件图2449.6.1 构件图的由来及用途2459.6.2 主要概念及表示法2459.6.3 如何建立构件图2489.7 UML的其他几种模型图2499.7.1 对象图2499.7.2 组合结构图2509.7.3 通信图2519.7.4 交互概览图2529.7.5 定时图2549.7.6 部署图256第10章 模型规约25910.1 相关概念及问题讨论25910.1.1 什么是模型规约25910.1.2 模型规约是给谁看的26010.1.3 描述语言的选择26010.1.4 模型规约的组织方式26110.1.5 关于对象约束语言(OCL)26210.2 类图的规约26410.2.1 目标与措施26410.2.2 类规约的内容26610.2.3 类规约的格式26810.3 其他模型图的规约27010.4 模型规约的建立过程270第三部分 设 计 篇第11章 问题域部分的设计27511.1 什么是问题域部分27511.2 实现条件对问题域部分的影响27611.3 设计过程27711.3.1 设计准备27711.3.2 设计内容及策略27711.3.3 建立与OOA文档的映射297第12章 人机交互部分的设计29912.1 什么是人机交互部分29912.2 人机交互部分的需求分析29912.2.1 分析参与者--与系统交互的人30012.2.2 从用况分析人机交互30112.2.3 分析处理异常事件的人机交互30412.2.4 命令的组织30512.2.5 输出信息的组织30812.3 人机界面的设计准则30912.4 人机界面的面向对象设计31112.4.1 选择界面支持系统31112.4.2 选用实现交互界面元素31314.4.3 用面向对象概念表示界面元素31512.5 可视化编程环境下的人机界面设计31912.5.1 问题的提出31912.5.2 所见即所得的界面开发31912.5.3 设计的必要性32212.5.4 基于可视化编程环境的设计策略323第13章 控制驱动部分的设计32913.1 什么是控制驱动部分32913.2 相关技术问题32913.2.1 系统总体方案系统总体方案32913.2.2 软件体系结构33013.2.3 网络环境中的软件体系结构33113.2.4 系统的并发性33313.3 如何设计控制驱动部分34113.3.1 选择软件体系结构风格34113.3.2 确定系统分布方案34113.3.3 识别控制流34613.3.4 用主动类表示控制流348第14章 数据接口部分的设计35014.1 什么是数据接口部分35014.2 数据管理系统及其选择35114.2.1 文件系统35114.2.2 数据库管理系统35214.2.3 数据管理系统的选择35514.3 对象存储方案和数据接口的设计策略35714.3.1 针对文件系统的设计35714.3.2 针对RDBMS的设计36214.3.3 针对OODBMS的设计375第15章 构件化与系统部署37715.1 面向对象方法与构件技术37715.2 面向对象模型的构件化37815.3 系统部署37915.3.1 软件制品的组织38015.3.2 系统部署过程与策略381索引384参考文献388[1]