内容推荐 面向对象编程(OOP)是现代编程语言(包括C++、Java、C#、Visual Basic.NET、Ruby、Objective-C和Swift)的基础。对象也构成了许多Web技术(如JavaScript、Python和PHP)的基础。 在开始使用面向对象的开发环境之前,了解面向对象的基本概念至关重要。OOP促进了良好的设计实践、代码可移植性和重用性,但是需要转变思维才能完全理解OOP。刚接触OOP的程序员应该抵制直接跳入特定编程语言或建模语言的诱惑,首先花时间学习本书作者提出的“面向对象的思考过程”。 尽管编程技术多年来一直在变化和发展,但是无论平台如何演进,面向对象仍然是一个不变的概念。本书侧重于在过去20年中幸存下来并保持其核心的OOP技术,其中包括新的和扩展的设计模式、避免依赖关系以及SOLID原则,以帮助开发人员使软件设计易于理解、灵活和可维护。 通过阅读本书,你将学到: 面向解决方案的方法; 继承和组合的正确用法; 聚合和联合之间以及接口和实现之间的重要区别。 第5版新增内容: 相比前几版而言,作者对内容做了大量修改,删除了一些与面向对象不太相关的章节,突出了本书的主题,同时引入了设计模式、面向对象设计的SOLID准则等全新章节,补全了面向对象设计思想的方方面面。无论你是否有面向对象编程的经验,本书都适合作为你面向对象思考的旅程的开端。 作者简介 马特·魏斯费尔德(Matt Weisfeld)居住于美国俄亥俄州的克利夫兰市。他既是大学教授、软件开发工程师,也是作家。他在信息技术领域拥有20年的经验,之后进入大学任教。他先后当过软件开发工程师、企业家以及兼职教授。Matt拥有计算机科学硕士学位以及工商管理硕士学位。Matt除了本书之外,Matt还撰写了其他两本关于软件开发的书籍,并在杂志和期刊上发表了多篇文章。这些杂志和期刊包括《developer.com》《Dr.Dobb’s》《C/C++ Users》《Software Development》《Java Report》和国际期刊《Project Management》等。 目录 译者序 前言 致谢 关于作者 第1章 面向对象的概念简介 1.1 基本概念 1.2 对象及遗留系统 1.3 过程式编程与面向对象编程对比 1.4 由面向过程开发过渡到面向对象开发 1.4.1 过程式编程 1.4.2 面向对象编程 1.5 什么是对象 1.5.1 对象数据 1.5.2 对象行为 1.6 什么是类 1.6.1 创建对象 1.6.2 属性 1.6.3 方法 1.6.4 消息 1.7 使用类图作为可视化工具 1.8 封装和数据隐藏 1.8.1 接口 1.8.2 实现 1.8.3 接口/实现范式的一个真实示例 1.8.4 接口/实现范式的模型 1.9 继承 1.9.1 超类和子类 1.9.2 抽象 1.9.3 is-a关系 1.10 多态性 1.11 组合 1.11.1 抽象 1.11.2 has-a关系 1.12 本章小结 第2章 如何以对象的方式进行思考 2.1 清楚接口和实现之间的区别 2.1.1 接口 2.1.2 实现 2.1.3 一个接口/实现示例 2.2 使用抽象思维设计接口 2.3 尽可能提供Z小化的用户接口 2.3.1 确定用户 2.3.2 对象行为 2.3.3 环境约束 2.3.4 识别公共接口 2.3.5 识别实现 2.4 本章小结 2.5 参考文献 第3章 更多面向对象概念 3.1 构造函数 3.1.1 什么是构造函数调用 3.1.2 构造函数中包含什么 3.1.3 默认构造函数 3.1.4 使用多个构造函数 3.1.5 设计构造函数 3.2 错误处理 3.2.1 忽略问题 3.2.2 检查问题并中止应用程序 3.2.3 检查问题并试图恢复 3.2.4 抛出异常 3.3 作用域的重要性 3.3.1 局部属性? 3.3.2 对象属性 3.3.3 类属性 3.4 操作符重载 3.5 多重继承 3.6 对象操作 3.7 本章小结 3.8 参考文献 第4章 类的剖析 4.1 类名 4.2 注释 4.3 属性 4.4 构造函数 4.5 访问器 4.6 公共接口方法 4.7 私有实现方法 4.8 本章小结 4.9 参考文献 第5章 类设计指导 5.1 对现实SJ系统建模 5.2 识别公共接口 5.2.1 Z小化公共接口 5.2.2 隐藏实现 5.3 设计健壮的构造函数(以及析构函数) 5.4 在类中设计错误处理 5.4.1 记录类并使用注释 5.4.2 构建可以合作的对象 5.5 设计时请考虑重用 5.6 设计时请考虑可扩展性 5.6.1 保持命名具有描述性 5.6.2 抽象不可移植的代码 5.6.3 提供一种方式来复制和比较对象 5.6.4 保持尽可能小的作用域 5.7 设计时请考虑可维护性 5.7.1 在开发过程中使用迭代 5.7.2 测试接口 5.8 使用对象持久化 5.9 本章小结 5.10 参考文献 第6章 使用对象进行设计 6.1 设计指导 6.1.1 进行正确的分析 6.1.2 编写工作陈述文档 6.1.3 收集需求 6.1.4 开发系统原型 6.1.5 识别类 6.1.6 确定每个类的职责 6.1.7 确定类之间如何协作 6.1.8 创建类模型来描述系统 6.1.9 在代码中创建用户接口原型 6.2 对象包装 6.2.1 结构化代码 6.2.2 包装结构化代码 6.2.3 包装不可移植的代码 6.2.4 包装已有类 6.3 本章小结 6.4 参考文献 第7章 精通继承和组合 7.1 重用对象 7.2 继承 7.2.1 泛化和特化 7.2.2 设计决策 7.3 组合 7.4 为什么封装是面向对象的本质 7.4.1 继承如何减弱封装 7.4.2 关于多态性的一个具体例子 7.4.3 对象职责 7.4.4 抽象类、虚方法和协议 7.5 本章小结 7.6 参考文献 第8章 框架和重用:使用接口和抽象类进行设计 8.1 代码:重用还是不重用 8.2 什么是框架 8.3 什么是契约 8.3.1 抽象类 8.3.2 接口 8.3.3 综合运用 8.3.4 编译器佐证 8.3.5 创建契约 8.3.6 系统插件 8.4 一个电子商务示例 8.4.1 一个电子商务问题 8.4.2 非重用方式 8.4.3 电子商务解决方案 8.4.4 UML对象模型 8.5 本章小结 8.6 参考文献 第9章 创建对象及面向对象设计 9.1 组合关系 9.2 分阶段构建 9.3 组合类型 9.3.1 聚合 9.3.2 联合 9.3.3 同时使用联合和聚合 9.4 避免依赖 9.5 基数 9.5.1 多个对象联合 9.5.2 可选的联合 9.6 一个综合性示例 9.7 本章小结 9.8 参考文献 第10章 设计模式 10.1 为什么使用设计模式 10.2 Smalltalk的模型/视图/控制器 10.3 设计模式类型 10.3.1 创建型模式 10.3.2 结构型模式 10.3.3 行为型模式 10.4 反模式 10.5 本章小结 10.6 参考文献 第11章 避免依赖和高度耦合的类 11.1 继承、组合和依赖注入 11.1.1 继承 11.1.2 导语 本书是一部D具特色的面向对象技术著作。书中结合代码示例生动透彻地讲述了面向对象思想的精髓,让读者真正学会以对象方式进行思考。本书共15章,在结构上可以分为两部分:D壹部分包括D1-10章,探讨面向对象的基本概念,比如封装、多态、继承等;D二部分包括D11-15章,专注于将这些概念应用于一些通用的面向对象技术中,并结合了一些实用的应用程序。 |