Smalltalk and Big Ideas: Squeak tutorial
Mark Guzdial
guzdial at cc.gatech.edu
Tue Aug 15 14:21:52 UTC 2000
On the theme of the Squeak tutorial, to let y'all know, that I
shipped the manuscript of my Squeak textbook "Squeak: Object-oriented
design with multimedia applications" to Prentice-Hall a couple weeks
ago. It's expected to be in stock 12/1/2000. Below is the Table of
Contents. Thanks to all who reviewed the earlier versions -- I
really appreciate it!
Mark
TABLE OF CONTENTS
FOREWORD
SOFTWARE: ART, ENGINEERING, MATHEMATICS,
OR SCIENCE?
BY ALAN KAY 10
PREFACE 1
1 APPROACH OF THE BOOK 1
1.1 START FROM WHERE THE STUDENTS ARE 2
1.2 LEARNING INVOLVES TESTING AND FAILURE 4
1.3 GENERATION AND INQUIRY, NOT TRANSMISSION 5
2 CONTENT OF THE BOOK 5
3 ACKNOWLEDGEMENTS 6
PART 1
FOUNDATIONS OF OBJECT-ORIENTED PROGRAMMING AND SQUEAK 8
CHAPTER 1
OBJECTS, SMALLTALK, DYNABOOKS, AND SQUEAK:
WHERE THE OBJECTS COME FROM 9
1 OBJECT-ORIENTED PROGRAMMING 9
2 BIRTH OF OBJECTS 10
3 "A PERSONAL COMPUTER FOR CHILDREN OF ALL AGES" 13
4 BACK TO THE FUTURE 18
5 COMMON ANCESTRY OF OTHER OBJECT-ORIENTED LANGUAGES 21
CHAPTER 2
A TOUR OF SQUEAK 24
1 BASIC RULES OF SMALLTALK 24
2 DOING "NORMAL" THINGS IN SQUEAK 27
2.1 VARIABLES AND STATEMENTS 28
2.2 CONTROL STRUCTURES 30
2.3 LITERALS, NUMBERS, AND OPERATIONS 33
2.4 STRINGS AND ARRAYS 34
2.5 FILES 38
3 DOING "OBJECT" THINGS IN SQUEAK 38
3.1 BLOCKS 39
3.2 VARIABLES AND MEMORY 40
3.3 CREATING CLASSES, INSTANCES, AND METHODS 41
3.4 THE SQUEAK MODEL OF EXECUTION 43
4 USING SQUEAK 45
4.1 STARTING A NEW PROJECT 48
4.2 EXTENDED EXAMPLE: MUPPETS IN SQUEAK 50
5 TOOLS AND STRATEGIES: FINDING MORE IN SQUEAK 57
5.1 FINDING CLASSES: THERE HAS GOT TO BE A WINDOW OR A TEXTFIELD
CLASS AROUND HERE SOMEWHERE. WHERE IS IT? 57
5.2 EXPLORING OBJECTS: I'M EXPLORING A COMPLICATED OBJECT, AND NOW
I'VE GOT A BAZILLION INSPECTORS ALL OVER THE SCREEN. IS THERE SOME
OTHER WAY TO EXPLORE AN OBJECT? 59
5.3 FINDING METHODS: I REMEMBER THERE'S A WAY OF GETTING AN ELEMENT,
'AT'-SOMETHING, BUT I CAN'T FIND IT. 60
5.4 FINDING IMPLEMENTORS: I SEE A REFERENCE TO A METHOD NAMED
FINDTOKENS: (OR WHATEVER). WHERE IS IT? WHAT DOES IT DO? 62
5.5 FINDING SENDERS: THAT'S WHAT FINDTOKENS: DOES. WHO USES IT? 63
5.6 DEBUGGING: I CAN'T FIGURE OUT WHAT MY CODE IS DOING! I'VE GOT AN
ERROR, BUT IT MAKES NO SENSE TO ME. 64
5.7 LEARNING TO USE A CLASS: WHAT ALL DOES STRING OR OTHER
CLASSES UNDERSTAND? 66
5.8 THERE SEEM TO BE A HUGE NUMBER OF COMMAND KEYS. IS THERE A LISTING
SOMEWHERE OF ALL OF THEM? 67
6 HOW DO YOU MAKE AN APPLICATION IN SQUEAK? 68
CHAPTER 3
YOUR FIRST PROGRAM: JOE THE BOX 71
1 ADELE GOLDBERG'S JOE THE BOX 71
2 TOOLS AND STRATEGIES: FILING IN NEW CODE 71
3 PLAYING WITH BOXES 73
3.1 JOE AND JILL AS EXAMPLE OBJECTS 76
3.2 ADDING A NEW KIND OF BOX 77
4 CREATING THE BOX CLASS AND BOX INSTANCES 79
5 BASICS OF DRAWING 81
5.1 CREATING FORMS 81
5.2 TEACHING BOXES TO DRAW 84
5.3 GETTING INPUT FROM THE USER 86
6 EXTENDING BOX TO CREATE NAMEDBOX 87
7 TOOLS AND STRATEGIES:
HOW TO GO FROM "SAMPLE CODE" TO "REUSE" 90
8 IMPROVING BOXES: EFFICIENCY, ANIMATION, AND DESIGN 93
8.1 DRAWING BOXES BETTER 93
8.2 ANIMATING BOXES 95
8.3 DESIGNING BOXES 96
CHAPTER 4
DESIGNING OBJECT SYSTEMS 99
1 THE OBJECT-ORIENTED DESIGN PROCESS 99
1.1 OBJECT-ORIENTED ANALYSIS STAGE 100
1.1.1 Brainstorming Candidate Classes 100
1.1.2 Class Responsibility Collaboration (CRC) Cards 102
1.2 OBJECT-ORIENTED DESIGN STAGE 104
1.2.1 UML Tools 105
1.2.2 Relationships between Classes 105
2 YOUR FIRST DESIGN: A CLOCK 107
2.1 DOING IT QUICKLYAND WRONG 107
2.2 OBJECT-ORIENTED ANALYSIS OF THE CLOCK 108
2.2.1 Brainstorming a Clock 109
2.2.2 CRC Cards for a Clock 109
2.3 OBJECT-ORIENTED DESIGN OF A CLOCK 113
2.3.1 Considering An Alternative Design 115
2.4 OBJECT-ORIENTED PROGRAMMING FOR THE CLOCK 116
2.4.1 Implementing SecondsTicker 117
2.4.2 Side Trip on Processes 118
2.4.3 Implementing the Clock Class 119
3 SPECIALIZING CLOCK AS AN ALARMCLOCK 122
3.1 OOA FOR ALARM CLOCK 122
3.2 OOD FOR ALARM CLOCK 123
3.3 OOP FOR THE ALARMCLOCK 124
4 REUSING THE CLOCK AND ALARMCLOCK 126
4.1 REUSE IN A VCR 126
4.2 REUSE IN AN APPOINTMENTBOOK 129
4.2.1 Programming the Appointment Book 131
4.2.2 Implementing the AppointmentBook with Collections 131
4.2.3 Implementing the Appointments 133
5 IMPLEMENTING MODELS 134
6 RULES OF THUMB FOR GOOD OBJECT-ORIENTED DESIGNS 136
6.1 RECONSIDERING JOE 137
7 TOOLS AND STRATEGIES: PROGRAMMING IN GROUPS 137
7.1 CREATING PROJECTS AND CHANGE SETS 138
7.2 WORKING WITH SOMEONE ELSE'S CHANGES 139
7.3 RECOVERING FROM SOMEONE ELSE'S CHANGES 140
CHAPTER 5
BUILDING USER INTERFACES IN SQUEAK 143
1 ISSUES IN BUILDING A USER INTERFACE 143
2 DEVELOPING MODEL-VIEW-CONTROLLER 144
2.1 ROUND 1: NO SEPARATION AT ALL 145
2.2 ROUND 2: SEPARATE WINDOWS AND BUTTONS 150
2.3 ROUND 3: SEPARATING EVEN THE TEXT 157
2.4 STRENGTHS AND WEAKNESSES OF MODEL-VIEW-CONTROLLER 163
3 BUILDING PLUGGABLE USER INTERFACES IN SQUEAK 165
3.1 CREATING PLUGGABLE INTERFACES IN MVC 167
3.2 CREATING PLUGGABLE INTERFACES IN MORPHIC 171
3.2.1 Introducing Morphic 171
3.2.2 Doing Pluggable Components in Morphic 176
3.3 MENUS AND DIALOGS IN A PLUGGABLE WORLD 181
4 BUILDING MORPHIC USER INTERFACES 183
4.1 PROGRAMMING MORPHS FROM THE VIEWER FRAMEWORK 184
4.1.1 Adding an Instance Variable 186
4.1.2 Making our Ellipse Fall 188
4.1.3 Building the Kicker 190
4.2 PROGRAMMING BASIC VARIABLES AND EVENTS OF MORPHS 192
4.2.1 Instance Variables and Properties 193
4.2.2 Morphic Events 194
4.2.3 Animation 196
4.2.4 Custom menus 196
4.2.5 Structure of Morphic 197
4.3 PROGRAMMING A MORPHIC FALLING OBJECT 198
4.3.1 Implementing the Falling Object 200
4.3.2 Implementing the Kicker 201
4.3.3 Running the Text Falling Simulation 202
4.3.4 Changing the Gravitational Constant 202
5 TOOLS AND STRATEGIES: USING MORPHS THAT YOU
HAVEN'T MET YET 203
CHAPTER 6
DESIGNING USER INTERFACES IN SQUEAK 206
1 KNOW THY USERS FOR THEY ARE NOT YOU 206
1.1 HOW DO YOU DECIDE BETWEEN USER INTERFACE ALTERNATIVES? 207
2 UNDERSTANDING THE USER 208
2.1 UNDERSTANDING THE TASK 209
3 MATCHING USERS TO INTERFACE: AVOIDING USER ERROR 210
4 A USER INTERFACE DESIGN PROCESS 212
5 CRITIQUING OUR CLOCK INTERFACE 214
6 EVALUATION OF USER INTERFACES 215
6.1 EVALUATION BEFORE USER INVOLVEMENT 215
6.2 EVALUATION WITH USERS 216
6.3 EVALUATING GROUPWARE 219
CHAPTER 7
MULTIMEDIA NUTS-AND-BOLTS 221
1 TEXT 221
1.1 EXPLORING SQUEAK'S TEXT 221
1.2 PROGRAMMING SQUEAK'S TEXT 223
2 GRAPHICS AND ANIMATION 225
2.1 SIMPLE GRAPHICS TOOLS 225
2.2 PROGRAMMING SIMPLE GRAPHICS 226
2.3 3-D GRAPHICS FOR END-USERS 228
2.3.1 Programming Wonderland without the Script Editor 232
2.4 FLASH MOVIES 233
3 SOUND 235
3.1 RECORDING, VIEWING, AND EDITING SOUND 235
3.2 SOUND CLASSES 238
3.3 MIDI SUPPORT 240
3.3.1 MIDI Support Classes 243
3.4 SPEECH IN SQUEAK 244
4 NEW MEDIA IN SQUEAK 245
4.1 SQUEAKMOVIES 245
4.2 BOOKMORPHS 248
5 MAKING THE DYNABOOK IN SQUEAK 250
PART 2
CASE STUDIES 252
CHAPTER 8
CASE STUDY: AUDIO NOTES 253
1 MOTIVATION FOR AUDIO NOTES 253
2 USING AUDIO NOTES 253
3 DETAILS ON USE 254
4 OBJECT-ORIENTED DESIGN AND PROGRAMMING OF
AUDIO NOTES 255
4.1 BUILDING THE USER INTERFACE 256
4.2 HANDLING THE NOTES LIST 258
4.3 IMPLEMENTING THE LIST UI 259
4.4 SETTING UI OPTIONS 260
4.5 RECORDING AND PLAYING SOUND 260
5 EVALUATING THE DESIGN AND INTERFACE 264
5.1 HEURISTIC UI EVALUATION 265
CHAPTER 9
CASE STUDY: PLUGGABLE WEB SERVER AND SWIKI 268
1 NETWORKING SUPPORT IN SQUEAK 268
1.1 USER INTERFACES FOR NETWORKING 268
1.2 PROGRAMMING NETWORK ACCESS 270
1.3 WEB SERVING WITH PWS 271
1.3.1 Programming the PWS 272
2 SWIKI AS A PWS APPLICATION 275
2.1.1 Uses of the Swiki 277
2.2 OBJECT DESIGN OF SWIKI 277
2.2.1 Responsibilities of Swiki Classes 278
2.2.2 Critiquing Swiki's Object Design 281
2.2.3 Evaluating Swiki's Usability 281
CHAPTER 10
CASE STUDY: MAT (MULTIMEDIA AUTHORING TOOL) 284
1 MOTIVATION FOR AND USE OF MAT 284
2 OBJECT DESIGN AND PROGRAMMING OF MAT 287
2.1 IMPLEMENTING MAT 289
2.1.1 Drag-and-Drop into MAT 290
2.1.2 Handling the Menu in MAT 291
2.1.3 Generating HTML in the ParagraphEditor 291
3 USER EVALUATION OF MAT 298
CHAPTER 11
CASE STUDY: PROTOTYPING A PLAY-WRITING WORKBENCH 302
1 MOTIVATION AND SETTING THE GOAL 303
2 OBJECT ANALYSIS OF THE WORKBENCH 304
3 IMPLEMENTATION OF THE PLAY WORKBENCH 306
3.1 PROTOTYPE SCRIPTINGBENCH AND SCRIPTINGCONTROLS 306
3.2 IMPLEMENTING THE ACTORS 308
3.3 IMPLEMENTING PLAYING THE SCRIPT 310
4 ITERATING ON THE PLAYBENCH 312
5 EVALUATING THE PLAYBENCH: EXPERT EVALUATION AND
OBSERVATION 314
5.1.1 Summarizing the Evaluation 316
APPENDIX
A QUICK START GUIDE OF SQUEAK EXAMPLES 319
1 CONSTANTS 319
2 CONTROL STRUCTURE EXPRESSIONS INVOLVING BLOCKS 319
3 TESTING OBJECTS 320
4 BASIC OBJECT BEHAVIOR 320
5 BOOLEAN OPERATIONS 320
6 MAGNITUDE AND NUMBER OPERATIONS 321
7 CHARACTER OPERATIONS 322
8 COLLECTION OPERATIONS 322
9 STRING OPERATIONS 323
INDEX 325
--------------------------
Mark Guzdial : Georgia Tech : College of Computing : Atlanta, GA 30332-0280
Associate Professor - Learning Sciences & Technologies.
Collaborative Software Lab - http://coweb.cc.gatech.edu/csl/
(404) 894-5618 : Fax (404) 894-0673 : guzdial at cc.gatech.edu
http://www.cc.gatech.edu/gvu/people/Faculty/Mark.Guzdial.html
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: text/enriched
Size: 10637 bytes
Desc: not available
Url : http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20000815/95674b07/attachment.bin
More information about the Squeak-dev
mailing list
|