失效链接处理 |
《深入浅出面向对象分析与设计(中文版)》PDF 下载
转载自:https://download.csdn.net/download/zhilian8880/10969183
版权归出版社和原作者所有,链接已删除,请购买正版
用户下载说明:
电子版仅供预览,下载后24小时内务必删除,支持正版,喜欢的请购买正版书籍:
http://product.dangdang.com/1219156814.html
你是否早已对市面上那些只有在成为专家以后读起来才有感觉的OOA&D书籍感到厌倦?你可能早就听说过OOA&D书籍能帮助你写出伟大的软件——让老板高兴、客户满意的软件。 但如何办到呢? 《深入浅出面向对象分析与设计》将告诉你如何分析、设计以及撰写真正面向对象的软件:容易重用、好维护、可扩展的软件;不再使你心碎的软件;让你增添新功能而不会破坏旧机制的软件。在本书中,你将学到:使用诸如封装(encapsulation)与委派(delegation)之类的OO原则建立灵活的应用程序;使用开闭原则(Open-Closed Principle)与单一职责原则(Single-Responsibilitv Principle)提升程序的重用性;学习如何将OO原则、设计模式及各种开发方法通通整合到OOA&D项目的生命周期里;运用UML、用例及用例图来确保所有利害关系人都能清楚地进行沟通,协助你交付正确的软件,达到每个人的要求。 相关截图: 图书目录: 介绍 谁适合读这本书? 我们知道你在想什么 元认知 让你的脑袋顺从你的方法 读我 技术审阅团队 致谢 1 伟大软件由此开始:良好应用程序的基石 永远的摇滚乐! Rick的金光闪闪的新应用程序 什么是你要改变的第一件事? 伟大软件…… 伟大软件的简易三步骤 先聚焦在功能性上 测试驱动 寻找问题 分析 运用基础的OO原则 设计一次,设计两次 改变你的应用程序有多简单? 封装变化之物 委托 最后的伟大软件(就现在而言) OOA&D关系到编写伟大软件 要点 2 给客户所需之物:收集需求 大显身手的机会来了 测试驱动 不正确的使用(有一点) 那么,需求究竟是什么? 创建需求列表 为错误作规划 替代路径(alternate path)处理系统的疑: (再次)介绍用例 一个用例,三个部分 按照用例检查需求 你的系统必须在真实世界里运作 认识快乐路径(Happy Path) OOA&D工具箱 3 山可移,此情永不渝……现在,情况有变:需求变更 你是英雄! 牺牲品? 软件分析与设计的不变真理 可选路径?替换路径?谁能分得清? 用例对你而言必须合理 从开始到完成:单一场景 替换路径的真心话 完成需求列表 重复程序代码,逊! 最后的测试驱动 写下你自己的设计原则 OOA&D工具箱 4 将你的软件带进现实世界:分析 一只狗,两只狗,三只狗,四只狗…… 你的软件有其情境 识别问题 规划解法方案 两位程序员的故事 委托绕道 低耦合应用程序的威力 注意用例里的名词 从好分析到好类…… 类图解析 类图不是一切 要点 5 第一部分:诸行无常——良好的设计 Rick的吉他事业蒸蒸日上 抽象类 类图解析(再一次) UML小抄 设计问题的警告 通往伟大软件的三步骤(重访) 插曲:OO大灾难 5 第二部分:给你的软件30分钟的伸展操——灵活的软件 回到Rick的搜索工具 仔细瞧瞧search()方法 分析的好处 类实际上关系到行为 设计之死(决策) 将坏的设计决策转变成好的 Rick的软件中的“双封装” 不要害怕犯错及改变 瞧!Rick的具有灵活性的应用程序 测试驱动Rick的设计良好的软件 改变Rick的软件有多容易? 变更容易性的大挑战 具有内聚性的类善于处理好单一事情 设计/内聚力生命周期 伟大的软件通常就是“够好的软件” OOA&D工具箱 6 “我的名字是Art Vandelay”:解决真正的大问题 解决大问题 关键在于你如何看待大问题 需求与用例是个好起点…… 共同性与变化性 整理功能 功能与需求之间的“差别” 用例不总是帮你看出整体轮廓 用例图 小小参与者 参与者也是人(好吧,不全然) 做一点领域分析吧 化整为零,个个击破 别忘了真正的客户是谁 何谓设计模式? OO&D的威力(以及一些小常识) OOA&D工具箱 7 为混乱带来次序:架构 感觉有点头昏吗? 我们需要架构 从功能开始 什么是架构的意义? 架构三问 减少风险 场景有助于减少风险 一次把焦点放在一个功能上 架构是你的设计结构 再访共同性 共同性分析:通往灵活软件之路 什么意思?问客户吧。 减少风险有助于伟大软件自 要点 8 原创性被高估:设计原则 设计原则大集合 开关原则(OCP) OCP,一步一步来 不自我重复原则(DRY) DRY完全关系到一个地方一个需求 单一职责原则(SRP) 找出多重职责 从多重职责到单一职责 Liskov替换原则(LSP) 子类化的误用:误用继承的案例研究 LSP揭露继承结构所隐藏的问题 子类型必须能替换其基类型 违反LSP造成令人困惑的程序代码 将功能性委托给其他类 使用组合将来自其他多个类的行为集合起来 聚合:组合,但没有突然的结束 组合VS.聚合 继承只是选项之一 要点 OOA&D工具箱 9 软件终究为客户服务:重复与测试 你的工具箱满了 伟大软件的编写是迭代进行的 更深入地迭代:两种基本选择 功能驱动开发 用例驱动开发 两种开发方式 功能分析 编写测试场景 测试驱动开发 再探共同性 强调共同性 强调封装 比对你的测试与设计 测试案例解析…… 向客户证明 到目前为止,我们一直在按契约编程 按契约编程关乎信任 防御性编程 将你的应用程序分解成较小的功能块 要点 OOA&D工具箱 10 组合在一起:OOA&D生命周期 开发软件,OOA&D风格 对象村旅游 对象村地铁线路图 功能列表 用例反映使用性,功能反映功能性 现在开始迭代 仔细看看地铁的表示 使用或不使用Line类……那是个问题 对象村地铁的关注要点(Subway类) 保护你的类(还有客户的类) 中场休息 回归需求阶段…… 聚焦于程序代码,然后聚焦于客户 迭代(iteration)让问题比较容易 路线看起来像什么? 让自己看看对象村! 第三次迭代,有人要试试吗? 旅程未结束…… 附录1:本书遗珠 附录2:欢迎光临对象村 |