图书介绍
MATLAB面向对象编程 从入门到设计模式 第2版PDF|Epub|txt|kindle电子书版本网盘下载
- 徐潇,李远编著 著
- 出版社: 北京:北京航空航天大学出版社
- ISBN:9787512424029
- 出版时间:2017
- 标注页数:469页
- 文件大小:60MB
- 文件页数:491页
- 主题词:Matlab软件-程序设计
PDF下载
下载说明
MATLAB面向对象编程 从入门到设计模式 第2版PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第1部分 面向对象编程初级篇3
第1章 面向过程编程和面向对象编程3
1.1 什么是面向过程编程3
1.2 什么是面向对象编程4
1.2.1 什么是对象4
1.2.2 什么是类4
1.2.3 什么是统一建模语言6
1.3 面向过程编程有哪些局限性9
1.4 面向对象编程有哪些优点13
第2章 MATLAB面向对象编程入门16
2.1 如何定义一个类16
2.2 如何创建一个对象17
2.3 类的属性19
2.3.1 如何访问对象的属性19
2.3.2 什么是属性的默认值19
2.3.3 什么是常量属性21
2.3.4 什么是非独立属性21
2.3.5 什么是隐藏属性25
2.4 类的方法26
2.4.1 如何定义类的方法26
2.4.2 如何调用类的方法27
2.4.3 点调用和函数调用类方法的区别29
2.4.4 什么是方法的签名29
2.4.5 类、对象、属性和方法之间的关系32
2.4.6 如何用disp方法定制对象的显示32
2.5 类的构造函数35
2.5.1 什么是构造函数35
2.5.2 如何在构造函数中给属性赋值36
2.5.3 如何让构造函数接受不同数目的参数36
2.5.4 什么是默认构造函数37
2.5.5 用户一定要定义构造函数吗38
2.6 类的继承39
2.6.1 什么是继承39
2.6.2 为什么子类构造函数需要先调用父类构造函数43
2.6.3 在子类方法中如何调用父类同名方法45
2.6.4 什么是多态46
2.7 类之间的基本关系:继承、组合和聚集47
2.7.1 如何判断B能否继承A47
2.7.2 企鹅和鸟之间是不是继承关系48
2.7.3 如何把类组合起来49
2.7.4 什么是组合聚集关系51
2.8 Handle类的set和get方法52
2.8.1 什么是set方法52
2.8.2 什么是get方法54
2.9 类的属性和方法的访问权限56
2.9.1 什么是public、protected和private权限56
2.9.2 如何设置类的属性和方法的访问权限59
2.9.3 如何更细粒度地控制访问权限60
2.9.4 MATLAB对属性访问的控制与C++和Java有什么不同62
2.10 clear classes到底清除了什么63
2.11 对象根据类定义的改变而自动更新64
第3章 MATLAB的句柄类和实体值类66
3.1 引子:参数是如何传递到函数空间中去的66
3.2 MATLAB的Value类和Handle类70
3.2.1 什么是Value类和Handle类70
3.2.2 Value类对象和Handle类对象复制有什么区别72
3.2.3 Value类对象和Handle类对象赋值有什么区别73
3.2.4 Value类对象和Handle类对象当作函数参数有什么区别76
3.2.5 Value类对象和Handle类对象作为默认值有什么区别77
3.2.6 什么情况下使用Value类或Handle类78
3.3 类的析构函数(Destructor)83
3.3.1 什么是对象的生存周期83
3.3.2 什么是析构函数84
3.3.3 对Object使用clear会发生什么84
3.3.4 对Object使用delete会发生什么85
3.3.5 什么情况下delete方法会被自动调用88
3.3.6 出现异常时delete函数如何被调用91
3.3.7 什么情况下用户需要自己定义一个delete方法92
第4章 事件和响应95
4.1 事件95
4.1.1 什么是事件95
4.1.2 如何定义事件和监听事件96
4.1.3 为什么需要事件机制97
4.2 发布者通知观察者,但不传递消息98
4.3 发布者通知观察者,并且传递消息100
4.4 删除listener103
第5章 MATLAB类文件的组织结构104
5.1 如何使用其他文件夹中类的定义104
5.2 如何把类的定义和成员方法的定义分开105
5.3 如何定义类的局部函数106
5.4 如何使用Package文件夹管理类108
5.4.1 Package中的类是如何组织的108
5.4.2 如何使用Package中的某个类109
5.4.3 如何导入Package中的所有类109
5.5 函数和类方法重名到底调用谁109
5.6 Package中的函数和当前路径上的同名函数谁有优先级110
第6章 MATLAB对象的保存和载入112
6.1 save和load命令112
6.1.1 对象的save和load操作112
6.1.2 MAT文件中保存了对象中的哪些内容112
6.1.3 如果类的定义在save操作之后发生了变化116
6.2 saveobj和loadobj方法118
6.2.1 如何定义saveobj方法118
6.2.2 如何定义loadobj方法119
6.3 继承情况下的saveobj和loadobj方法120
6.3.1 存在继承时如何设计saveobj方法120
6.3.2 存在继承时如何设计loadobj方法122
6.4 什么是瞬态属性123
6.5 什么是装载时构造(ConstructOnLoad)125
第7章 面向对象的GUI编程:分离用户界面和模型127
7.1 如何用GUIDE进行GUI编程127
7.2 如何用面向过程的方式进行GUI编程129
7.3 如何用面向对象的方式进行GUI编程132
7.4 模型类中应该包括什么134
7.5 视图类中应该包括什么135
7.6 控制器类中应该包括什么138
7.7 如何把Model、View和Controller结合起来139
7.8 如何测试MVC的GUI程序141
7.9 如何设计多视图的GUI以及共享数据142
7.10 如何设计GUI逻辑 架构147
7.11 如何使用GUI Layout Toolbox对界面自动布局151
7.11.1 为什么需要布局管理器151
7.11.2 纵向布局器VBox类152
7.11.3 横向布局器HBox类154
7.11.4 选项卡布局器TabPanel类155
7.11.5 网格布局器Grid类156
7.11.6 GUI Layout的复合布局157
7.11.7 把GUI Layout Toolbox和MVC模式结合起来158
7.11.8 GUI Layout Toolbox两个版本的说明160
第2部分 面向对象编程中级篇163
第8章 类的继承进阶163
8.1 继承结构下的构造函数和析构函数163
8.1.1 什么情况需要手动调用基类的构造函数163
8.1.2 什么情况可以让MATLAB自动调用基类的构造函数164
8.1.3 常见错误:没有提供默认构造函数166
8.1.4 在构造函数中调用哪个成员方法167
8.1.5 析构函数被调用的顺序是什么168
8.2 MATLAB的多重继承169
8.2.1 什么情况下需要多重继承169
8.2.2 什么是多重继承170
8.2.3 构造函数被调用的顺序是什么172
8.2.4 多重继承如何处理属性重名172
8.2.5 多重继承如何处理方法重名174
8.2.6 什么是钻石继承175
8.2.7 如何同时继承Value类和Handle类178
8.3 如何禁止类被继承180
第9章 类的成员方法进阶182
9.1 Derived类和Base类同名方法之间有哪几种关系182
9.1.1 Derived类的方法覆盖Base类的方法182
9.1.2 Derived类的方法可以扩充Base类的同名方法183
9.1.3 Base类的方法可以禁止被Derived类重写184
9.2 什么是静态方法184
9.3 同一个类的各个对象如何共享变量186
9.3.1 什么情况下各个对象需要共享变量186
9.3.2 如何共享Constant属性186
9.3.3 如何共享变量187
第10章 抽象类189
10.1 什么是抽象类和抽象方法189
10.2 为什么需要抽象类190
10.3 如何使用抽象类191
10.3.1 抽象类不能直接用来声明对象191
10.3.2 子类要实现所有的抽象方法192
第11章 对象数组195
11.1 如何把对象串接成数组195
11.2 如何直接声明对象数组196
11.3 如何使用findobj函数寻找特定的对象199
11.4 如何利用元胞数组把不同类的对象组合到一起201
11.5 什么是转换函数203
11.6 如何利用转换函数把不同类的对象组合到一起204
11.7 如何用非同类(Heterogeneous)数组盛放不同类对象205
11.7.1 为什么需要非同类数组205
11.7.2 含有不同类对象的数组类型207
11.7.3 使用非同类要避免哪些情况209
11.7.4 如何向量化遍历数组中对象的属性209
11.7.5 如何设计成员方法使其支持向量化遍历211
第12章 类的运算符重载213
12.1 理解MATLAB的subsref和subsasgn函数213
12.1.1 MATLAB如何处理形如a(1,:)的表达式213
12.1.2 MATLAB如何处理形如a{1,:}的表达式214
12.1.3 MATLAB如何处理形如s.f的表达式215
12.2 如何重载subsref函数216
12.3 如何重载subsasgn函数217
12.4 什么情况下重载下标运算符218
12.5 如何重载plus函数219
12.6 MATLAB的Dispatching规则是什么220
12.7 如何判断两个对象是否相同221
12.8 如何让一个对象在行为上像一个函数223
12.9 MATLAB中哪些运算符允许重载226
12.10 实例:运算符重载和量纲分析227
12.10.1 如何表示量纲227
12.10.2 需求和设计:加法和减法229
12.10.3 需求和设计:乘法和除法232
第13章 枚举类型237
13.1 为什么需要枚举类型(Enumeration)237
13.2 什么是枚举类型241
13.3 枚举类型应用实例243
13.3.1 枚举类型的属性243
13.3.2 枚举类型的方法244
13.3.3 枚举类型对象数组246
13.3.4 从基本数据类型中派生枚举类型247
第14章 超类249
14.1 什么是超类249
14.2 如何获得一个类的meta.class对象250
14.3 meta.class对象中有些什么内容252
14.4 如何手动克隆一个对象253
14.5 如何使用matlab.mixin.Copyable自动克隆一个对象259
第3部分 设计模式篇265
第15章 面向对象程序设计的基本思想265
15.1 单一职责原则266
15.2 开放与封闭原则268
15.3 多用组合少用继承原则269
15.4 面向接口编程271
第16章 创建型模式276
16.1 工厂模式:构造不同种类的面条276
16.1.1 简单工厂模式276
16.1.2 工厂模式280
16.1.3 工厂模式总结282
16.1.4 如何进一步去掉switch/if语句283
16.1.5 抽象工厂285
16.1.6 抽象工厂模式总结287
16.2 单例模式:给工程计算添加一个LOG文件288
16.2.1 如何控制对象的数量288
16.2.2 如何删除一个Singleton对象290
16.2.3 应用:如何包装一个对象供全局使用291
16.3 建造者模式:如何用MATLAB构造一辆自行车293
16.3.1 问题的提出293
16.3.2 应用:建造者模式为大规模计算做准备工作297
16.3.3 建造者模式总结298
第17章 装饰者模式302
17.1 装饰者模式的引入302
17.2 面馆菜单代码304
17.3 装饰者模式总结306
第18章 行为模式308
18.1 观察者模式:用MATLAB实现观察者模式308
18.1.1 发布和订阅的基本模型308
18.1.2 订阅者查询发布者的状态311
18.1.3 把发布者和订阅者抽象出来312
18.1.4 观察者模式总结313
18.2 策略模式:分离图像数据和图像处理算法316
18.2.1 问题的提出316
18.2.2 应用:更复杂的分离数据和算法的例子320
18.2.3 策略模式总结321
18.3 遍历器模式:工程科学计算中如何遍历大量数据323
18.3.1 问题的提出323
18.3.2 聚集和遍历器324
18.3.3 遍历器模式总结328
18.4 状态模式:用MATLAB模拟自动贩卖机329
18.4.1 使用if语句的自动贩卖机329
18.4.2 使用状态模式的自动贩卖机335
18.4.3 状态模式总结340
18.5 模板模式:下面条和煮水饺有什么共同之处341
18.5.1 抽象下面条和煮水饺的过程341
18.5.2 应用:把策略和模板模式结合起来346
18.5.3 模板模式总结347
18.6 备忘录模式:实现GUI的undo功能348
18.6.1 如何记录对象的内部状态348
18.6.2 应用:如何利用备忘录模式实现GUI的do和undo操作351
18.6.3 备忘录模式总结356
第4部分 框架篇359
第19章 MATLAB单元测试框架359
19.1 框架概述359
19.2 基于函数的单元测试构造359
19.3 getArea函数的单元测试:版本Ⅰ361
19.4 getArea函数的单元测试:版本Ⅱ和版本Ⅲ366
19.5 测试的准备和清理工作:Test Fixture369
19.6 验证方法:Types of Qualification371
19.7 测试方法论和用测试驱动开发375
19.7.1 开发流程概述375
19.7.2 用测试驱动开发:fibonacci例377
19.7.3 用测试驱动开发:运算符重载和量纲分析381
19.8 基于类的单元测试393
19.8.1 getArea函数的基于类的单元测试393
19.8.2 MVC GUI的基于类的单元测试395
第20章 MATLAB性能测试框架401
20.1 为什么需要MATLAB性能测试框架401
20.2 基于类的性能测试框架403
20.2.1 构造测试类403
20.2.2 测试结果解析405
20.3 误差范围和置信区间407
20.4 性能测试的适用范围讨论410
附录413
附录A 综合实例:如何把面向过程的程序转成面向对象的程序413
附录B MATLAB高级数据结构:containers.Map425
B.1 containers.Map简介425
B.2 数组、元胞数组和结构体的局限性426
B.3 用containers.Map来记录电话号码簿428
B.4 containers.Map的属性和成员方法429
B.5 containers.Map的特点430
B.5.1 containers.Map可以不断地扩张且不需要预分配430
B.5.2 containers.Map可以作为参数在函数内部直接修改431
B.5.3 containers.Map可以增强程序的可读性431
B.5.4 containers.Map提供对数据的快速查找431
B.6 containers.Map的使用实例433
B.6.1 用来存放元素周期表433
B.6.2用来实现快速检索433
附录C MATLAB高级数据结构:table435
C.1 table简介435
C.1.1 为什么需要table数据结构435
C.1.2 通过导入数据构造table对象436
C.1.3 调用table构造函数来构造table对象436
C.1.4通过转换函数构造table对象437
C.2 访问table中的数据438
C.3 table的操作439
C.3.1 删除行列439
C.3.2 添加行列440
C.3.3合并table441
C.3.4操作列数据442
C.3.5排序444
C.3.6筛选和查找445
C.3.7输出到文件445
C.4 其他数据类型之间和table相互转换446
C.5 table之间的操作449
C.6 table的属性和支持的操作452
附录D 对函数的输入进行检查和解析454
D.1 为什么要对函数的输入进行检查454
D.2 validateattributes454
D.2.1 validateattributes的基本使用454
D.2.2 validateattributes的额外提示信息455
D.2.3 validateattributes支持的检查类型和属性457
D.3 validatestring458
D.4 inputParser459
D.4.1 inputParser的基本使用459
D.4.2 inputParser的可选参数和默认参数值设置461
D.4.3 inputParser和validateattributes联合使用462
D.4.4 inputParser的参数名-参数值对的设置462
D.4.5 inputParser解析结构体的输入465
D.5 引子:为什么需要MATLAB的单元测试系统466
参考文献468
写在最后469