《MATLAB面向对象编程》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:徐潇,李远编著
  • 出 版 社:北京:北京航空航天大学出版社
  • 出版年份:2015
  • ISBN:9787512416093
  • 页数:334 页
图书介绍:随着MATLAB运算能力的电脑运算能力的越来越强大,以及MATLAB在分布式环境下的支持(包括基于Cluster的计算),我们越来越可以相信MATLAB能够胜任传统编程语言Fortran C++的大规模大运算的工作,加上MATLAB自身语言的优点,使用绝不会逊于传统的语言,所以更好更有效的使用MATLAB语言是十分必要的。

第1部分 面向对象编程初级篇 3

第1章 面向过程和面向对象程序设计 3

1.1 什么是面向过程的编程 3

1.2 什么是面向对象的编程 4

1.2.1 什么是对象(Object) 4

1.2.2 什么是类(Class) 4

1.2.3 什么是统一建模语言(UML) 6

1.3 面向过程编程有哪些局限性 9

1.4 面向对象编程有哪些优点 12

第2章 MATLAB面向对象程序入门 15

2.1 如何定义一个类 15

2.2 如何创建一个对象 16

2.3 类的属性(Property) 18

2.3.1 如何访问对象的属性 18

2.3.2 什么是属性的默认值(Default Value) 18

2.3.3 什么是常量(Constant)属性 19

2.3.4 什么是非独立(Dependent)属性 20

2.3.5 什么是隐藏(Hidden)属性 23

2.4 类的方法(Method) 24

2.4.1 如何定义类的方法 24

2.4.2 如何调用类的方法 26

2.4.3 点调用和函数式调用类方法的区别 27

2.4.4 什么是方法的签名 27

2.4.5 类、对象、属性、方法之间的关系 30

2.4.6 如何用disp方法定制对象的显示 30

2.5 类的构造函数(Constructor) 33

2.5.1 什么是Constructor 33

2.5.2 如何在Constructor中给property赋值 33

2.5.3 如何让Constructor接受不同数目的参数 34

2.5.4 什么是Default Constructor 35

2.5.5 用户一定要定义Constnuctor吗 36

2.6 类的继承 37

2.6.1 什么是继承 37

2.6.2 为什么子类Constructor需要先调用父类Constructor 41

2.6.3 在子类方法中如何调用父类同名方法 43

2.6.4 什么是多态 44

2.7 类之间的基本关系:继承、组合和聚集 45

2.7.1 如何判断B能否继承A 45

2.7.2 企鹅和鸟之间是不是继承关系 45

2.7.3 如何把类组合起来 46

2.7.4 什么是组合聚集关系 48

2.8 Handle类的set和get方法 50

2.8.1 什么是set方法 50

2.8.2 什么是get方法 51

2.9 如何设置属性和方法的访问权限 53

2.9.1 什么是public,protected,private权限 53

2.9.2 如何决定对类的属性和方法设置何种访问权限 56

2.9.3 MATLAB对属性访问的控制与C++和Java有什么不同 57

2.10 Clear Classes到底清除了什么 58

第3章 MATLAB的句柄类和实体值类 60

3.1 引子:参数是如何传递到函数空间中去的 60

3.2 MATLAB的Value Class和Handle Class 64

3.2.1 什么是Value Class和Handle Class 64

3.2.2 Value类对象和Handle类对象拷贝有什么区别 66

3.2.3 Value类对象和Handle类对象赋值有什么区别 66

3.2.4 Value类对象和Handle类对象当做函数参数有什么区别 69

3.2.5 什么情况下使用Value类或Handle类 71

3.3 类的析构函数(Destructor) 76

3.3.1 什么是对象的生存周期 76

3.3.2 什么是析构函数(Destructor) 76

3.3.3 对Object使用clear会发生什么 77

3.3.4 对Object使用delete会发生什么 78

3.3.5 什么情况下delete方法会被自动调用 80

3.3.6 出现异常时delete函数如何被调用 83

3.3.7 何时用户需要自己定义一个delete方法 85

第4章 事件和响应 87

4.1 事件(Event) 87

4.1.1 什么是事件 87

4.1.2 如何定义事件和监听事件 88

4.1.3 为什么需要事件机制 89

4.2 发布者通知观察者对象,但不传递消息 90

4.3 发布者通知观察者,并且传递消息 91

4.4 删除listener 94

第5章 MATLAB类文件的组织结构 95

5.1 如何使用其他文件夹中的类的定义 95

5.2 如何把类的定义和成员方法的定义分开 96

5.3 如何定义类的局部函数 97

5.4 如何使用Package文件夹管理类 98

5.4.1 Package中的类是如何组织的 98

5.4.2 如何使用Package中的某个类 100

5.4.3 如何导入Package中的所有类 100

5.5 函数和类方法重名到底调用谁 100

5.6 Package中的函数和当前路径上的同名函数谁有优先级 101

第6章 MATLAB对象的保存和载入 102

6.1 save和load命令 102

6.1.1 如何save和load object 102

6.1.2 MAT文件中保存了object中的哪些内容 102

6.1.3 如果类的定义在save之后发生了变化 105

6.2 saveobj和loadobj方法 108

6.2.1 如何定义saveobj方法 108

6.2.2 如何定义loadobj方法 109

6.3 继承情况下的saveobj和loadobj方法 110

6.3.1 存在继承时如何设计saveobj方法 110

6.3.2 存在继承时如何设计loadobj方法 111

6.4 什么是瞬态(Transient)属性 113

6.5 什么是装载时构造(ConstructOnLoad) 114

第7章 面向对象的GUI编程:分离用户界面和模型 116

7.1 如何使用GUIDE进行GUI编程 116

7.2 如何使用程序的方式(Programmatic)进行GUI编程 118

7.3 如何用面向对象的方式进行GUI编程 121

7.4 模型类中应该包括什么 122

7.5 视图类中应该包括什么 124

7.6 控制器类中应该包括什么 126

7.7 如何把Model、View和Controller结合起来 127

7.8 如何设计多视图的GUI以及共享数据 130

7.9 如何设计GUI逻辑架构 135

7.10 如何使用GUI Layout Toolbox对界面自动布局 138

7.10.1 为什么需要布局管理器 138

7.10.2 纵向布局类VBox 140

7.10.3 横向布局类HBox 141

7.10.4 选项卡布局TabPanel 142

7.10.5 网格布局类Grid 143

7.10.6 GUI Layout的复合布局 144

7.10.7 把GUI Layout Toolbox和MVC模式结合起来 145

第2部分 面向对象编程中级篇 149

第8章 类的继承进阶 149

8.1 继承情况下的Constrctor和Destructor 149

8.1.1 什么情况需要手动调用基类的Constructor 149

8.1.2 什么情况可以让MATLAB自动调用基类的Constructor 150

8.1.3 常见错误:没有提供缺省构造函数 151

8.1.4 在Constructor中调用哪个成员方法 152

8.1.5 析构函数被调用的顺序是什么 154

8.2 MATLAB的多重继承 155

8.2.1 什么情况下需要多重继承 155

8.2.2 什么是多重继承 156

8.2.3 构造函数被调用的顺序是什么 157

8.2.4 多重继承如何处理属性重名 158

8.2.5 多重继承如何处理方法重名 159

8.2.6 什么是钻石型继承 160

8.2.7 如何同时继承Value类和Handle类 163

8.3 如何禁止类被继承 165

第9章 类的成员方法进阶 166

9.1 Derived类和Base类同名方法之间有哪几种关系 166

9.1.1 Derived的方法覆盖Base的方法 166

9.1.2 Derived的方法可以扩充Base的同名方法 166

9.1.3 Base的方法可以禁止被Derived重写 167

9.2 什么是静态(Static)方法 168

9.3 同一个类的各个对象如何共享变量 170

9.3.1 什么情况下各个对象需要共享变量 170

9.3.2 如何共享常量属性 170

9.3.3 如何共享变量 171

第10章 抽象类 173

10.1 什么是抽象类(Abstract)和抽象方法 173

10.2 为什么需要抽象类 174

10.3 如何使用抽象类 175

10.3.1 抽象类不能直接用来声明对象 175

10.3.2 子类要实现所有抽象方法 176

第11章 对象数组 178

11.1 如何把对象串接成数组 178

11.2 如何直接声明对象数组 179

11.3 如何使用findobi寻找特定的对象 182

11.4 如何利用Cell array把不同类的对象组合到一起 184

11.5 什么是转换函数 186

11.6 如何利用转换函数把不同类的对象组合到一起 187

11.7 如何用非同类(Heterogeneous)数组盛放不同类对象 188

11.7.1 为什么需要Heterogeneous数组 188

11.7.2 含有不同类对象的数组类型 190

11.7.3 使用Heterogeneous要避免哪些情况 191

11.7.4 如何向量化遍历数组中对象的属性 192

11.7.5 如何设计成员方法使其支持向量化遍历 193

第12章 类的运算符重载 195

12.1 理解MATLAB的subsref和subsasgn函数 195

12.1.1 MATLAB如何处理形如a(1,:)的表达式 195

12.1.2 MATLAB如何处理形如a{1,:}的表达式 196

12.1.3 MATLAB如何处理形如s.f的表达式 197

12.2 如何重载subsref函数 198

12.3 如何重载subsasgn函数 199

12.4 什么情况下重载下标运算符 200

12.5 如何重载plus函数 200

12.6 MATLAB的Dispatching规则是什么 202

12.7 如何判断两个对象是否相同 203

12.8 如何让一个对象在行为上像一个函数 204

12.9 MATLAB中哪些算符允许重载 207

第13章 超类 209

13.1 什么是超类(Meta Class) 209

13.2 如何获得一个类的meta.class对象 210

13.3 meta.class对象中有些什么内容 211

13.4 如何手动克隆一个对象 213

13.5 如何使用matlab.mixin.Copyable自动克隆一个对象 218

第3部分 设计模式篇 225

第14章 面向对象程序设计的基本思想 225

14.1 单一职责原则 226

14.2 开放与封闭原则 227

14.3 多用组合少用继承 229

14.4 面向接口编程 231

第15章 创建型模式 236

15.1 工厂模式:构造不同种类的面条 236

15.1.1 简单工厂模式 236

15.1.2 工厂模式 240

15.1.3 Factory模式总结 242

15.1.4 如何进一步去掉switch/if语句 243

15.1.5 抽象工厂 244

15.1.6 Abstract Factory模式总结 247

15.2 单例模式:给工程计算添加一个LOG文件 247

15.2.1 如何控制对象的数量 247

15.2.2 应用:如何包装一个对象供全局使用 250

15.3 建造者模式:如何用MATLAB构造一辆自行车 252

15.3.1 问题的提出 252

15.3.2 用:Builder模式为大规模计算做准备工作 256

15.3.3 Builder模式总结 257

第16章 构造型模式 261

16.1 装饰者模式:动态地给对象添加额外的职责 261

16.1.1 装饰者模式的引入 261

16.1.2 面馆菜单代码 263

16.1.3 装饰者模式总结 265

第17章 行为模式 267

17.1 观察者模式:用MATLAB实现观察者模式 267

17.1.1 发布和订阅的基本模型 267

17.1.2 订阅者查询发布者的状态 270

17.1.3 把发布者和订阅者抽象出来 271

17.1.4 Observer模式总结 272

17.2 策略模式:分离图像数据和图像处理算法 275

17.2.1 问题的提出 275

17.2.2 应用:更复杂的分离数据和算法的例子 279

17.2.3 Strategy模式总结 280

17.3 遍历者模式:工程科学计算中如何遍历大量数据 281

17.3.1 问题的提出 281

17.3.2 聚集(Aggregator)和遍历者(Iterator) 283

17.3.3 Iterator模式总结 286

17.4 状态模式:用MATLAB模拟自动贩卖机 287

17.4.1 使用if语句的自动贩卖机 288

17.4.2 使用State Pattern的自动贩卖机 293

17.4.3 State模式总结 298

17.5 模板模式:下面条和煮水饺有什么共同之处 300

17.5.1 抽象下面条和煮水饺的过程 300

17.5.2 应用:把策略和模板模式结合起来 304

17.5.3 Template模式总结 304

17.6 备忘录模式:实现GUI的UNDO功能 306

17.6.1 如何记录对象的内部状态 306

17.6.2 应用:如何利用备忘录模式实现GUI的do和undo操作 309

17.6.3 Memento模式总结 314

参考文献 315

附录 319

附录A 如何在MATLAB IDE中切换窗口 319

附录B 综合实例:如何把面向过程的程序转成面向对象的程序 321

索引 332