高等教育 > 计算机类

面向对象开发技术

书号:9787113312596 套系名称:“十四五”高等学校计算机教育新形态一体化系列教材

作者:何伟 崔立真 董国庆 潘丽 王平辉 出版日期:2024-11-01

定价:56.00 页码 / 开本:无 /16

策划编辑:秦绪好 责任编辑:祁云

适用专业:计算机类 适用层次:高等教育

最新印刷时间:2024-11-01

资源下载
教学课件(暂无) 教学素材(暂无)
习题答案(暂无) 教学案例(暂无)
教学设计(暂无) 教学视频(暂无)
内容简介 前言 目录 作者介绍 图书特色
  • 本书为“十四五”高等学校计算机教育新形态一体化系列教材之一,系统地讲解面向对象开发的思 想、概念、机制和方法,包括:面向对象技术的起源和发展、主要特征以及面向对象技术在编程语言中 的体现和实现机制;面向对象复用技术、建模技术、设计模式、设计原则;构件开发与服务计算技术、 产业界流行的云服务架构、微服务架构等所蕴含的面向对象思想和解决方案。
    
    本书适合作为高等学校计算机科学与技术、软件工程等专业的学生学习面向对象的架构分析、软件 设计、程序实现技术课程的教材,也可供从事软件工程和系统分析、设计、开发等相关工作的科研、工 程人员参考。
  •        面向对象开发技术是关于如何看待软件系统与现实世界的关系,以什么观点来研究问 题并进行求解,以及如何进行系统构造的软件方法学。面向对象开发技术在计算机学科产 生了巨大的影响,在产业界有着广泛应用,已经成为互联网应用、企业级应用、移动应用 等大多数领域主流的开发方法,新兴的基于构件开发、微服务架构、容器技术、面向切面 编程等技术都以面向对象作为基础。作为国内外高校计算机相关专业普遍开设的专业必修 课,面向对象开发技术的教学目标并非是学习一门具体编程语言,而是能够深刻理解对象 开发思想和内涵,能够设计出高质量的程序、编写出高质量的代码,从而培养学生优秀的 程序设计素养。从国内外高校使用的教材和相关书籍来看,它们在内容方面或者是属于软 件工程范畴的 UML 系统分析和设计建模,或者是针对 Java、C++ 等某一门具体编程语言 的教学,其中过多的语言特性和语法细节掩盖了面向对象思想的本质,容易造成学习过程 中的“只见树木 , 不见森林”。
    
    本书针对普通高校计算机、软件工程等专业教学需要编写,系统地讲解面向对象开发 的基本概念、核心机制、高级特征、设计方法,同时内容与产业界新型对象技术衔接,帮 助读者更深刻地理解面向对象思想和开发技术,将对象思想体现到软件建模和程序设计的 实践中,设计出优雅、健壮、可扩展的高质量程序。本书以流行的 Java、C++、Python、 JavaScript 等对象语言为例讲解,但又不拘泥于某一种具体编程语言,使读者更容易做到“触 类旁通”,无论使用哪种程序设计语言都能写出高质量的代码。
    
    本书第 1~8 章讲解面向对象技术的起源和发展、主要特征,结合当今流行的多个面 向对象语言,详细讲解面向对象特征及其在这些语言中的体现和实现机制 ;第 9~11 章讲 解面向对象程序设计方法,包括面向对象建模技术、设计原则和设计模式 ;第 12~14 章 讲解构件开发与服务计算技术,结合业界流行的云服务架构、分布式框架、微服务架构等, 讲解所蕴含的面向对象思想和解决方案,加强读者利用面向对象思想分析和解决问题的 能力。
    
    本书由何伟、崔立真、董国庆、潘丽、王平辉编著。本书编写团队长期承担面向对象开发技术课程的教学和实验任务,拥有多年在软件工程、服务计算、新型软件架构领域的 研究、研发实践和教学经历。本书编写分工如下 :第 1、2 章由崔立真完成,第 3、4 章由 董国庆完成,第 5 至 11 章由何伟完成,第 12、13 章由潘丽完成,第 14 章由王平辉完成。 感谢研究生李招明、钟海婷、姜少伟等同学在素材收集、代码编写和测试等方面对本书的 贡献。 
    
    由于时间和编者水平所限,本书难免存在缺陷和不足之处,恳请读者批评指正。 
    
    编 者 
    
    2024 年 8 
  • 第1章 绪论
    
    1.1 面向对象技术的发展1
    
    1.2 面向对象思想的理解2
    
    1.2.1 一个现实世界的例子3
    
    1.2.2 代理和责任3
    
    1.2.3 抽象4
    
    1.2.4 技术特点总结4
    
    1.3 面向对象软件工程5
    
    1.4 面向对象技术特征5
    
    1.5 面向对象编程语言6
    
    1.6 程序设计范式8
    
    1.6.1 面向机器编程8
    
    1.6.2 面向过程编程8
    
    1.6.3 结构化程序设计9
    
    1.6.4 面向对象编程9
    
    1.6.5 函数式编程9
    
    1.6.6 其他编程范式10
    
    小结10
    
    思考与练习20
    
     
    
    第2章 面向对象基本特征
    
    2.1 面向对象编程基本概念12
    
    2.1.1 对象的概念12
    
    2.1.2 对象的特点13
    
    2.1.3 对象标识13
    
    2.1.4 方法14
    
    2.1.5 消息14
    
    2.1.6 对象持久化.15
    
    2.2 对象的概念和特性12
    
    2.3 信息隐藏(封装)15
    
    2.4 复合对象16
    
    2.5 类的概念和特性16
    
    2.5.1 类的概念16
    
    2.5.2 类的性质17
    
    2.5.3 类和型17
    
    2.5.4 类的实例18
    
    2.5.5 契约与责任18
    
    2.6 抽象性19
    
    2.7 多态性20
    
    小结20
    
     
    
    第3章 类
    
    3.1 类的定义21
    
    3.1.1 类定义的要素22
    
    3.1.2 可视性修饰符24
    
    3.1.3 封装与信息隐藏25
    
    3.2 类的设计31
    
    3.2.1 抽象数据类型31
    
    3.2.2 类设计指南31
    
    3.2.3 契约式设计33
    
    3.3 类主题的变化34
    
    3.3.1 嵌套类(内部类)34
    
    3.3.2 抽象类36
    
    3.3.3 接口37
    
    小结38
    
    第4章 对象创建和消息传递
    
    4.1 对象的创建40
    
    4.1.1 对象创建的语法41
    
    4.1.2 对象数组的创建43
    
    4.2 消息传递44
    
    4.2.1 消息传递的理解.44
    
    4.2.2 消息的类型45
    
    4.2.3 消息传递的语法46
    
    4.2.4 动态联编48
    
    4.3 接收者伪变量49
    
    4.4 内存存储与回收50
    
    4.4.1 指针和内存分配50
    
    4.4.2 内存回收51
    
    4.5 构造函数52
    
    4.5.1 构造函数语法52
    
    4.5.2 构造函数重载53
    
    4.5.3 常量值初始化54
    
    4.6 析构函数与垃圾回收55
    
    4.7 对象的结构57
    
    4.7.1 对象同一和对象相等57
    
    4.7.2 对象赋值和复制的形式59
    
    4.7.3 对象赋值的例子59
    
    小结61
    
    思考与练习61
    
    第5章 元类与反射
    
    5.1 元类64
    
    5.1.1 元类的概念64
    
    5.1.2 类对象65
    
    5.2 反射66
    
    5.2.1 反射的概念66
    
    5.2.2 Java类加载器67
    
    5.3 Java反射API67
    
    5.3.1 Java反射功能68
    
    5.3.2 Java中的类
    
    第7章 多态
    
    7.1 多态的概念100
    
    7.1.1 多态简介101
    
    7.1.2 多态的价值101
    
    7.1.3 多态的形式102
    
    7.2 多态的运行机制103
    
    7.2.1 联编103
    
    7.2.2 绑定过程104
    
    7.3 重载105
    
    7.3.1 重载的作用105
    
    7.3.2 类型签名和范畴106
    
    7.3.3 强制、转换和造型107
    
    7.3.4 重载的解析108
    
    7.4 多态变量109
    
    7.4.1 简单变量109
    
    7.4.2 接收者变量110
    
    7.4.3 反多态(向下造型)111
    
    7.4.4 纯多态(多态方法)111
    
    7.5 泛型112
    
    7.5.1 什么是泛型112
    
    7.5.2 为什么需要泛型113
    
    7.5.3 C++的模板114
    
    7.5.4 Java的泛型116
    
    小结117
    
    思考与练习.117
    
    第8章 代码复用
    
    8.1 代码复用机制120
    
    8.1.1 使用继承120
    
    8.1.2 组合复用的例子121
    
    8.1.3 使用组合123
    
    8.1.4 继承和组合124
    
    8.2 优雅地使用继承126
    
    8.2.1 继承示例一:继承的代价126
    
    8.2.2 继承示例二:多边形绘制127
    
    8.2.3 继承示例三:对象排序129
    
    8.2.4 “即插即用”设计136
    
    8.3 “即插即用”设计136
    
    8.4 类库和框架137
    
    小结137
    
    思考与练习140
    
    第9章 面向对象建模
    
    9.1 UML概述141
    
    9.1.1 静态视图143
    
    9.2.1 类图143
    
    9.2.2 对象图145
    
    9.3 用例图146
    
    9.4 状态机视图147
    
    9.5 活动视图148
    
    9.6 交互视图149
    
    9.7 模型管理视图150
    
    9.8 实现视图151
    
    9.9 部署视图152
    
    小结153
    
    思考与练习153
    
    第10章 面向对象设计原则
    
    10.1 设计原则概述155
    
    第10章 面向对象设计原则
    
    10.1 影响软件可维护性的因素155
    
    10.1.1 面向对象设计原则概览155
    
    10.2 开闭原则156
    
    10.2.1 什么是开闭原则156
    
    10.2.2 开闭原则解析157
    
    10.2.3 开闭原则的示例158
    
    10.3 里氏替换原则160
    
    10.3.1 什么是里氏替换原则160
    
    10.3.2 里氏替换原则解析161
    
    10.3.3 里氏替换原则设计案例164
    
    10.4 依赖倒置原则169
    
    10.4.1 什么是依赖倒置原则169
    
    10.4.2 依赖倒置原则解析169
    
    10.4.3 依赖倒置原则设计案例170
    
    10.5 组合复用原则174
    
    10.5.1 什么是组合复用原则174
    
    10.5.2 组合复用原则解析174
    
    10.5.3 组合复用原则设计案例176
    
    10.6 迪米特法则177
    
    10.6.1 什么是迪米特法则177
    
    10.6.2 迪米特法则解析178
    
    10.6.3 迪米特法则设计案例180
    
    10.7 接口隔离原则183
    
    10.7.1 什么是接口隔离原则183
    
    10.7.2 接口隔离原则解析183
    
    10.7.3 接口隔离原则设计案例185
    
    10.8 单一职责原则188
    
    10.8.1 什么是单一职责原则188
    
    10.8.2 单一职责原则解析189
    
    10.8.3 单一职责原则设计案例190
    
    小结192
    
    思考与练习192
    
    第11章 面向对象设计模式
    
    11.1 设计模式概念196
    
    11.2 创建型模式196
    
    11.2.1 工厂方法模式197
    
    11.2.2 抽象工厂模式198
    
    11.2.3 单例模式200
    
    11.2.4 建造者模式201
    
    11.2.5 原型模式202
    
    11.3 结构型模式203
    
    11.3.1 适配器模式.204
    
    11.3.2 代理模式205
    
    11.3.3 装饰器模式206
    
    11.3.4 桥梁模式207
    
    11.3.5 组合模式208
    
    11.3.6 门面模式210
    
    11.3.7 享元模式211
    
    11.4 行为型模式212
    
    11.4.1 责任链模式212
    
    11.4.2 观察者模式214
    
    11.4.3 策略模式215
    
    11.4.4 迭代器模式215
    
    11.4.5 访问者模式216
    
    11.4.6 命令模式218
    
    11.4.7 状态模式219
    
    11.4.8 模板方法模式219
    
    11.4.9 备忘录模式220
    
    11.4.10 中介模式221
    
    11.4.11 解释器模式222
    
    小结223
    
    思考与练习223
    
    第12章 组件化的程序设计
    
    12.1.1 组件及其特点227
    
    12.1.2 面向组件开发技术228
    
    12.2 软件组件的演变229
    
    12.2.1 传统化项目结构229
    
    12.2.2 模块化项目结构230
    
    12.2.3 组件化项目结构230
    
    12.3 组件化程序设计方法230
    
    12.3.1 轻度组件化231
    
    12.3.2 重度组件化232
    
    12.3.3 组件化开发思维233
    
    小结.233
    
    思考与练习233
    
    第13章 微服务架构
    
    13.1 软件架构设计236
    
    13.1.1 什么是软件架构236
    
    13.1.2 为什么要架构设计237
    
    13.1.3 软件架构设计误区238
    
    13.2 软件架构的演变238
    
    13.2.1 单体架构238
    
    13.2.2 分布式架构239
    
    13.2.3 SOA架构240
    
    13.2.4 微服务架构241
    
    13.3 微服务优点242
    
    13.3.1 微服务核心构成243
    
    13.4 读写分离架构244
    
    13.4.1 读写分离的基本实现244
    
    13.4.2 复制延迟245
    
    13.4.3 分配机制245
    
    13.5 微服务架构实践247
    
    小结248
    
    思考与练习248
    
    第14章 业界著名设计案例
    
    14.1 Spring Boot/Spring Cloud250
    
    14.1.1 观察者模式/发布订阅模式251
    
    14.1.2 工厂模式254
    
    14.1.3 单例模式254
    
    14.1.4 策略和代理模式255
    
    14.2 Dubbo的RPC架构257
    
    14.2.1 工厂方法模式258
    
    14.2.2 装饰器模式258
    
    14.2.3 观察者模式259
    
    14.2.4 动态代理模式259
    
    14.3 Nginx260
    
    14.3.1 反应器模式260
    
    14.3.2 外观模式260
    
    14.3.3 桥接模式261
    
    14.4 Kubernetes261
    
    14.4.1 基本模式262
    
    14.4.2 结构模式262
    
    14.4.3 行为模式263
    
    14.4.4 高级模式263
    
    14.5 Kafka263
    
    14.6 Angular265
    
    14.6.1 依赖注入模式265
    
    14.6.2 模型适配器模式265
    
    14.7 MyBatis266
    
    14.8 Redis缓存数据库267
    
    14.9 云原生数据库CNDB268
    
    14.9.1 多副本模式268
    
    14.9.2 Sidecar模式269
    
    14.9.3 大使模式269
    
    14.9.4 适配器模式.269
    
    小结270
    
    思考与练习270
  • 何伟,山东大学副教授,工学博士,硕士生导师,美国德克萨斯大学达拉斯分校访问学者,中国计算机学会高级会员,主要研究领域为服务计算与分布式协同技术、智能数据分析与预测等。主持和参与国家重点研发计划课题、国家自然科学基金、山东省自然科学基金、山东省科技发展计划、山东省优秀中青年科学家科研奖励基金等国家和省部级项目十余项,在软件学报、中国科学、ACM TKDD、ICDE 2023、IJCAI 2022、ICSOC 20222018、DASFAA 2018、ICWS 2014等国内外重要期刊和会议发表论文30余篇,获得山东省科技进步奖一等奖1项、二等奖2项、计算机应用优秀成果一等奖1项,获国家级教学成果二等奖1项,省级教学成果特等奖1项。讲授本科生专业课程:《面向对象开发技术》、《软件工程》(双语)、《数据库系统》(双语)等,硕士生课程:《大数据智能推荐系统》英文课程、《项目管理》、《软件需求分析》等。崔立真,山东大学特聘教授,博士生导师,泰山学者特聘专家,是中国计算机学会理事、杰出会员、济南分部主席。主要研究方向为软件与数据工程,主持国家重点研发计划项目(项目首席科学家)、课题各1项,国家自然基金重点项目2项,山东省重大创新工程等国家、省部级科研项目30余项,发表高水平学术论文100余篇。担任教育部软件工程专业教指委委员,承担数据科学导论、数据库原理与系统、面向对象开发技术等本科和研究生专业课程,以课程负责人获国家级一流课程一门,以第一完成人获国家教学成果二等奖,入选高校计算机专业优秀教师奖励计划、山东省高等学校教学名师,获山东大学优秀教师、优秀共产党员、教学优秀奖等荣誉称号。董国庆,山东大学副教授、硕士生导师。主讲《面向对象开发技术》、《小组软件过程》等多门本科和研究生课程,主持和参与国家科技支撑计划、山东省科技发展计划、山东省自然科学基金、山东省优秀中青年科学家科研奖励基金等国家和省部级项目以及重大横向项目十余项,在国内外重要期刊和会议发表论文20余篇,多篇被EI收录,多次荣获山东省科技进步奖、山东省计算机应用优秀成果奖。潘丽,山东大学软件学院教授,工学博士,博士生导师,入选山东大学青年学者未来计划。主要从事服务计算、云智能等方面的研究。作为负责人承担完成国家自然科学基金、国家重点研发计划(子课题)、山东省自然科学基金、山东省重点研发计划等多个国家、省部级项目,近三年在国际顶级会议和期刊上发表论文20余篇,获得发明专利授权10余项,取得山东省科技进步二等奖2项。主要课程:《工业软件导论》、《面向对象开发技术》、《服务开发技术》、《服务计算导论》等。王平辉 ,西安交通大学教授,博士生导师,国家级青年人才,主要研究领域为机器学习与数据挖掘、自然语言处理、移动互联网安全、网络图数据挖掘与知识发现等,作为项目负责人主持国家重点研发计划项目、国家自然科学基金优秀青年科学基金项目、教育部-中国移动“人工智能”建设项目等。在SIGMOD、KDD、VLDB、ICDE、WWW、NeurIPS、ACL、IEEE TKDE、IEEE TIFS 等中国计算机学会(CCF)推荐的 A 类会议和期刊上发表学术论文 40 余篇。
  • 本书以流行的 Java、C++、Python、 JavaScript 等对象语言为例讲解,但又不拘泥于某一种具体编程语言,使读者更容易做到“触 类旁通”,无论使用哪种程序设计语言都能写出高质量的代码。