人大经济论坛下载系统

Excel SPSS Eviews Stata SAS S-Plus&RMatlab Lisrel&AMOS Gauss 其他
返回首页
当前位置: 主页 > 经济类软件及教程 > Matlab >

Guide to MATLAB Object Oriented Programming

文件格式:Pdf 可复制性:可复制 TAG标签: MATLAB guide programming Oriented Object 点击次数: 更新时间:2009-11-03 14:25
介绍

Chapter 1
Introduction...................................................................................................................1
1.1 Examples..................................................................................................................................2
1.2 Object-Oriented Software Development ..................................................................................2
1.2.1 At the Top of Your Game.............................................................................................3
1.2.2 Personal Development..................................................................................................3
1.2.3 Wicked Problems..........................................................................................................5
1.2.4 Extreme Programming..................................................................................................6
1.2.5 MATLAB, Object-Oriented Programming, and You ...................................................8
1.3 Attributes, Behavior, Objects, and Classes ..............................................................................9
1.3.1 From MATLAB Heavyweight to Object-Oriented Thinker ........................................9
1.3.2 Object-Oriented Design..............................................................................................10
1.3.3 Why Use Objects?......................................................................................................11
1.3.4 A Quality Focus .........................................................................................................12
1.3.4.1 Reliability...................................................................................................12
1.3.4.2 Reusability .................................................................................................13
1.3.4.3 Extendibility...............................................................................................14
1.4 Summary................................................................................................................................15
PART 1
Group of Eight ........................................................ 17
Chapter 2
Meeting MATLAB’s Requirements ...........................................................................19
2.1 Variables, Types, Classes, and Objects ..................................................................................19
2.2 What Is a MATLAB Class? ...................................................................................................21
2.2.1 Example: Class Requirements....................................................................................21
2.2.1.1 Class Directory ..........................................................................................22
2.2.1.2 Constructor.................................................................................................22
2.2.1.3 The Test Drive ...........................................................................................24
2.3 Summary................................................................................................................................26
2.4 Independent Investigations .....................................................................................................27

Chapter 3
Member Variables and Member Functions ................................................................29
3.1 Members ................................................................................................................................29
3.2 Accessors and Mutators .........................................................................................................30
3.2.1 A Short Side Trip to Examine Encapsulation ...........................................................31
3.2.1.1 cShape Variables ........................................................................................32
3.2.2 cShape Members ........................................................................................................33
3.2.2.1 cShape Private Member Variables.............................................................33
3.2.2.2 cShape Public Interface .............................................................................34
3.2.3 A Short Side Trip to Examine Function Search Priority ..........................................36
3.2.4 Example Code: Accessors and Mutators, Round 1 ...................................................37
3.2.4.1 Constructor.................................................................................................37
3.2.4.2 Accessors ...................................................................................................37
3.2.4.3 Mutators .....................................................................................................38
3.2.4.4 Combining an Accessor and a Mutator.....................................................39
3.2.4.5 Member Functions.....................................................................................40
3.2.5 Standardization ...........................................................................................................40
3.3 The Test Drive ........................................................................................................................41
3.4 Summary................................................................................................................................42
3.5 Independent Investigations .....................................................................................................43
Chapter 4
Changing the Rules … in Appearance Only .............................................................45
4.1 A Special Accessor and a Special Mutator ...........................................................................45
4.1.1 A Short Side Trip to Examine Overloading ..............................................................45
4.1.1.1 Superiorto and Inferiorto ...........................................................................47
4.1.1.2 The Built-In Function................................................................................48
4.1.2 Overloading the Operators subsref and subsasgn......................................................48
4.1.2.1 Dot-Reference Indexing.............................................................................50
4.1.2.2 subsref Dot-Reference, Attempt 1.............................................................51
4.1.2.3 A New Interface Definition .......................................................................52
4.1.2.4 subsref Dot-Reference, Attempt 2: Separating Public and
Private Variables ........................................................................................53
4.1.2.5 subsref Dot-Reference, Attempt 3: Beyond One-to-One,
Public-to-Private ........................................................................................53
4.1.2.6 subsref Dot-Reference, Attempt 4: Multiple Indexing Levels .................55
4.1.2.7 subsref Dot-Reference, Attempt 5: Operator Conversion Anomaly.........57
4.1.2.8 subsasgn Dot-Reference ............................................................................59
4.1.2.9 Array-Reference Indexing .........................................................................62
4.1.2.10 subsref Array-Reference ............................................................................63
4.1.2.11 subsasgn Array-Reference .........................................................................64
4.1.2.12 Cell-Reference Indexing............................................................................65
4.1.3 Initial Solution for subsref.m .....................................................................................66
4.1.4 Initial Solution for subsasgn.m ..................................................................................68
4.1.5 Operator Overload, mtimes ........................................................................................69
4.2 The Test Drive ........................................................................................................................70
4.2.1 subsasgn Test Drive....................................................................................................70
4.2.2 subsref Test Drive.......................................................................................................72
4.3 Summary................................................................................................................................74
4.4 Independent Investigations .....................................................................................................75

Chapter 5
Displaying an Object’s State ......................................................................................77
5.1 Displaying Objects .................................................................................................................77
5.1.1 What Should Be Displayed? ......................................................................................77
5.1.2 Standard Structure Display ........................................................................................79
5.1.3 Public Member Variable Display ...............................................................................80
5.1.3.1 Implementing display.m, Attempt 1 ..........................................................80
5.1.3.2 Implementing display.m, Attempt 2 ..........................................................81
5.2 Developer View ......................................................................................................................83
5.2.1 Implementing display.m with Developer View Options............................................84
5.3 The Test Drive ........................................................................................................................86
5.4 Summary................................................................................................................................88
5.5 Independent Investigations .....................................................................................................88
Chapter 6
fieldnames.m...............................................................................................................91
6.1 fieldnames..............................................................................................................................91
6.2 Code Development .................................................................................................................91
6.3 The Test Drive ........................................................................................................................93
6.4 Summary................................................................................................................................93
6.5 Independent Investigations .....................................................................................................94
Chapter 7
struct.m .......................................................................................................................95
7.1 struct ......................................................................................................................................95
7.2 Code Development .................................................................................................................96
7.3 The Test Drive ........................................................................................................................97
7.4 Summary................................................................................................................................98
7.5 Independent Investigations .....................................................................................................98
Chapter 8
get.m, set.m ................................................................................................................99
8.1 Arguments for the Member Functions get and set................................................................99
8.1.1 For Developers............................................................................................................99
8.1.2 For Clients ................................................................................................................100
8.1.3 Tab Completion ........................................................................................................101
8.2 Code Development ...............................................................................................................101
8.2.1 Implementing get and set .........................................................................................102
8.2.2 Initial get.m...............................................................................................................104
8.2.3 Initial set.m ...............................................................................................................107
8.3 The Test Drive ......................................................................................................................110
8.4 Summary..............................................................................................................................111
8.5 Independent Investigations ...................................................................................................112
Chapter 9
Simplify Using get, set, fieldnames, and struct .......................................................113
9.1 Improving subsref.m.............................................................................................................114
9.2 Improving subsasgn.m..........................................................................................................115
9.3 Improving display.m.............................................................................................................116
9.4 Test Drive.............................................................................................................................118
9.5 Summary..............................................................................................................................121
9.6 Independent Investigations ...................................................................................................122

Chapter 10
Drawing a Shape ......................................................................................................123
10.1 Ready, Set, Draw..................................................................................................................123
10.1.1 Implementation .........................................................................................................123
10.1.1.1 Modify the Constructor ...........................................................................124
10.1.1.2 Modify fieldnames...................................................................................125
10.1.1.3 Modify get ...............................................................................................125
10.1.1.4 Modify set................................................................................................128
10.1.1.5 Modify mtimes ........................................................................................131
10.1.1.6 Modify reset.............................................................................................132
10.1.1.7 Adding Member Function draw..............................................................132
10.2 Test Drive.............................................................................................................................133
10.3 Summary..............................................................................................................................136
10.4 Independent Investigations ...................................................................................................137
PART 2
Building a Hierarchy ............................................. 139
Chapter 11
Constructor Redux....................................................................................................141
11.1 Specifying Initial Values ......................................................................................................141
11.1.1 Private Member Functions .......................................................................................142
11.2 Generalizing the Constructor ...............................................................................................143
11.2.1 Constructor Helper /private/ctor_ini.m ....................................................................145
11.2.2 Constructor Helper Example /private/ctor_1.m .......................................................146
11.3 Test Drive.............................................................................................................................147
11.4 Summary..............................................................................................................................150
11.5 Independent Investigations ...................................................................................................151
Chapter 12
Constructing Simple Hierarchies with Inheritance..................................................153
12.1 Simple Inheritance................................................................................................................154
12.1.1 Constructor ...............................................................................................................154
12.1.2 Other Standard Member Functions..........................................................................157
12.1.2.1 Child Class fieldnames ............................................................................161
12.1.2.2 Child Class get.........................................................................................162
12.1.2.3 Child Class set .........................................................................................165
12.1.3 Parent Slicing in Nonstandard Member Functions..................................................167
12.1.3.1 draw.m......................................................................................................168
12.1.3.2 mtimes.m..................................................................................................168
12.1.3.3 reset.m......................................................................................................169
12.2 Test Drive.............................................................................................................................169
12.3 Summary..............................................................................................................................173
12.4 Independent Investigations ...................................................................................................174
Chapter 13
Object Arrays with Inheritance ................................................................................175
13.1 When Is a cShape Not a cShape?........................................................................................175
13.1.1 Changes to subsasgn ................................................................................................176
13.1.2 vertcat and horzcat ...................................................................................................177
13.1.3 Test Drive..................................................................................................................178

13.2 Summary..............................................................................................................................182
13.3 Independent Investigations ...................................................................................................182
Chapter 14
Child-Class Members ...............................................................................................183
14.1 Function Redefinition ...........................................................................................................183
14.1.1 /@cStar/private/ctor_ini.m with Private Member Variables ....................................184
14.1.2 /@cStar/fieldnames.m with Additional Public Members ........................................184
14.1.3 /@cStar/get.m with Additional Public Members.....................................................185
14.1.4 /@cStar/set.m with Additional Public Members .....................................................186
14.1.5 /@cStar/draw.m with a Title ....................................................................................187
14.2 Test Drive.............................................................................................................................187
14.3 Summary..............................................................................................................................189
14.4 Independent Investigations ...................................................................................................190
Chapter 15
Constructing Simple Hierarchies with Composition ...............................................191
15.1 Composition.........................................................................................................................191
15.1.1 The cLineStyle Class................................................................................................192
15.1.1.1 cLineStyle’s private/ctor_ini....................................................................193
15.1.1.2 cLineStyle’s fieldnames...........................................................................194
15.1.1.3 cLineStyle’s get .......................................................................................195
15.1.1.4 cLineStyle’s set........................................................................................196
15.1.1.5 cLineStyle’s private/ctor_2 ......................................................................197
15.1.2 Using a Primary cShape and a Secondary cLineStyle ............................................198
15.1.2.1 Composition Changes to cShape’s ctor_ini.m ........................................199
15.1.2.2 Adding LineWeight to cShape’s fieldnames.m.......................................199
15.1.2.3 Composition Changes to cShape’s get.m................................................200
15.1.2.4 Composition Changes to cShape’s set.m ................................................201
15.1.2.5 Composition Changes to cShape’s draw.m.............................................202
15.1.2.6 Composition Changes to cShape’s Other Member Functions................202
15.2 Test Drive.............................................................................................................................203
15.3 Summary..............................................................................................................................204
15.4 Independent Investigations ...................................................................................................206
Chapter 16
General Assignment and Mutator Helper Functions ...............................................209
16.1 Helper Function Strategy .....................................................................................................209
16.1.1 Direct-Link Public Variables ....................................................................................210
16.1.1.1 get and subsref.........................................................................................210
16.1.1.2 set and subsasgn ......................................................................................211
16.1.2 get and set Helper Functions....................................................................................212
16.1.2.1 Helper functions, get, and set..................................................................212
16.1.2.2 Final template for get.m ..........................................................................213
16.1.2.3 Final Template for set.m..........................................................................217
16.1.2.4 Color Helper Function.............................................................................221
16.1.2.5 The Other Classes and Member Functions.............................................222
16.2 Test Drive.............................................................................................................................222
16.3 Summary..............................................................................................................................223
16.4 Independent Investigations ...................................................................................................224

Chapter 17
Class Wizard.............................................................................................................225
17.1 File Dependencies ................................................................................................................226
17.2 Data-Entry Dialog Boxes .....................................................................................................226
17.2.1 Main Class Wizard Dialog .......................................................................................227
17.2.1.1 Header Information Dialog .....................................................................229
17.2.1.2 Parents … Dialog ....................................................................................231
17.2.1.3 Private Variable … Dialog.......................................................................232
17.2.1.4 Concealed Variables … Dialog ...............................................................234
17.2.1.5 Public Variables … Dialog ......................................................................235
17.2.1.6 Constructors … Dialog............................................................................237
17.2.1.7 More … Dialog .......................................................................................238
17.2.1.8 Static Variables … Dialog .......................................................................239
17.2.1.9 Private Functions … Dialog ....................................................................240
17.2.1.10 Public Functions … Dialog.....................................................................242
17.2.1.11 File Menu.................................................................................................243
17.2.1.12 Data Menu ...............................................................................................244
17.2.1.13 Build Class Files Button..........................................................................245
17.3 Summary..............................................................................................................................246
17.4 Independent Investigations ...................................................................................................247
Chapter 18
Class Wizard Versions of the Shape Hierarchy .......................................................249
18.1 cLineStyle Class Wizard Definition Data ............................................................................249
18.1.1 cLineStyle Header Info ............................................................................................250
18.1.2 cLineStyle Private Variables.....................................................................................251
18.1.3 cLineStyle Public Variables......................................................................................253
18.1.4 cLineStyle Constructor Functions............................................................................255
18.1.5 cLineStyle Data Dictionary......................................................................................257
18.1.6 cLineStyle Build Class Files....................................................................................258
18.1.7 cLineStyle Accessor and Mutator Helper Functions ...............................................259
18.2 cShape Class Wizard Definition Data..................................................................................261
18.2.1 cShape Header Info ..................................................................................................261
18.2.2 cShape Private Variables ..........................................................................................261
18.2.3 cShape Concealed Variables.....................................................................................262
18.2.4 cShape Public Variables ...........................................................................................263
18.2.5 cShape Constructor Functions..................................................................................264
18.2.6 cShape Public Functions ..........................................................................................265
18.2.7 cShape Data Dictionary............................................................................................265
18.2.8 cShape Build Class Files..........................................................................................266
18.3 cStar Class Wizard Definition Data .....................................................................................268
18.3.1 cStar Parent...............................................................................................................268
18.3.2 Other cStar Definition Data .....................................................................................269
18.4 cDiamond Class Wizard Definition Data.............................................................................271
18.5 Test Drive.............................................................................................................................271
18.6 Summary..............................................................................................................................272
18.7 Independent Investigations ...................................................................................................275

PART 3
Advanced Strategies .............................................. 277
Chapter 19
Composition and a Simple Container Class ............................................................279
19.1 Building Containers..............................................................................................................279
19.2 Container Implementation ....................................................................................................280
19.2.1 The Standard Framework and the Group of Eight ..................................................280
19.2.1.1 Container Modifications to fieldnames ...................................................281
19.2.1.2 Container Modifications to subsref .........................................................283
19.2.1.3 Container Modifications to subsasgn ......................................................285
19.2.1.4 Container Modifications to get................................................................287
19.2.1.5 Container Modifications to set ................................................................289
19.2.2 Tailoring Built-In Behavior ......................................................................................290
19.2.2.1 Container-Tailored end ............................................................................291
19.2.2.2 Container-Tailored cat, horzcat, vertcat ..................................................291
19.2.2.3 Container-Tailored length, ndims, reshape, and size ..............................293
19.2.3 cShapeArray and numel ...........................................................................................294
19.2.3.1 Container-Tailored num2cell and mat2cell .............................................295
19.2.4 Container Functions That Are Specific to cShape Objects .....................................296
19.2.4.1 cShapeArray times and mtimes...............................................................296
19.2.4.2 cShapeArray draw ...................................................................................298
19.2.4.3 cShapeArray reset....................................................................................299
19.3 Test Drive.............................................................................................................................299
19.4 Summary..............................................................................................................................302
19.5 Independent Investigations ...................................................................................................302
Chapter 20
Static Member Data and Singleton Objects.............................................................303
20.1 Adding Static Data to Our Framework................................................................................303
20.1.1 Hooking Static Data into the Group of Eight..........................................................304
20.1.1.1 Static Variables and the Constructor .......................................................305
20.1.1.2 Static Variables in get and set .................................................................305
20.1.1.3 Static Variables in display .......................................................................306
20.1.2 Overloading loadobj and saveobj.............................................................................307
20.1.3 Counting Assignments..............................................................................................308
20.2 Singleton Objects..................................................................................................................308
20.3 Test Drive.............................................................................................................................309
20.4 Summary..............................................................................................................................311
20.5 Independent Investigations ...................................................................................................312
Chapter 21
Pass-by-Reference Emulation ..................................................................................313
21.1 Assignment without Equal ...................................................................................................313
21.2 Pass-by-Reference Functions ...............................................................................................314
21.3 Pass-by-Reference Draw ......................................................................................................315
21.4 Pass-by-Reference Member Variable: View.........................................................................316
21.4.1 Helpers, get, and subsref with Pass-by-Reference Behavior...................................316
21.4.1.1 Pass-by-Reference Behavior in the Helper .............................................317
21.4.1.2 Pass-by-Reference Code in get.m ...........................................................318
21.4.1.3 Pass-by-Reference Code in subsref.m.....................................................321

21.4.2 Other Group-of-Eight Considerations......................................................................321
21.5 Test Drive.............................................................................................................................322
21.6 Summary..............................................................................................................................324
21.7 Independent Investigations ...................................................................................................324
Chapter 22
Dot Functions and Functors .....................................................................................327
22.1 When Dot-Reference Is Not a Reference ............................................................................327
22.2 When Array-Reference Is Not a Reference .........................................................................332
22.2.1 Functors ....................................................................................................................333
22.2.2 Functor Handles........................................................................................................334
22.2.3 Functor feval.............................................................................................................335
22.2.4 Additional Remarks Concerning Functors...............................................................335
23.3 Test Drive.............................................................................................................................336
22.4 Summary..............................................................................................................................337
22.5 Independent Investigations ...................................................................................................337
Chapter 23
Protected Member Variables and Functions ............................................................339
23.1 How Protected Is Different from Other Visibilities.............................................................339
23.2 Class Elements for Protected ...............................................................................................339
23.2.1 Protected Functions and Advanced Function Handle Techniques ..........................340
23.2.2 Passing Protected Handles from Parent to Child ....................................................340
23.2.3 Accessing and Mutating Protected Variables...........................................................341
23.2.4 Calling Protected Functions .....................................................................................343
23.3 Test Drive.............................................................................................................................344
23.4 Summary..............................................................................................................................345
23.5 Independent Investigations ...................................................................................................346
Chapter 24
Potpourri for $100 ....................................................................................................347
24.1 A Small Assortment of Useful Commands .........................................................................347
24.1.1 objectdirectory ..........................................................................................................347
24.1.2 methods and methodsview .......................................................................................347
24.1.3 functions ...................................................................................................................348
24.2 Other Functions You Might Want to Overload....................................................................348
24.2.1 Functions for Built-in Types ....................................................................................348
24.2.2 subsindex ..................................................................................................................349
24.2.3 isfield........................................................................................................................349
24.3 Summary..............................................................................................................................350
24.4 Independent Investigations ...................................................................................................350
Index
.............................................................................................................................................351

下载地址
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------