EARTH WEEK
Go paperless and save 40% on eligible eBooks, 70% on video now through April 26. Shop the sale.
Register your product to gain access to bonus material or receive a coupon.
Topic coverage includes:
With Squeak, developers have a free, complete, portable, high-performance, open source Smalltalk-80 implementation whose virtual machine is written entirely in Smalltalk, making it simple to debug, analyze, and change your code. This book's unique format and bite-size structure makes it easy to learn Squeak -- regardless of your previous experience with objects. Squeak: A Quick Trip to ObjectLand overcomes the traditional Smalltalk learning curve by presenting Squeak in the format of a running conversation between a programmer and an imaginary "Object Wizard." You'll start with the basics of object development, then learn key Squeak concepts that let you write real software almost immediately. Next, build your skills incrementally, mastering numbers, debugging and testing, the class hierarchy, collections, Booleans and blocks, conditional execution, iteration and recursion, streams and files, and more. For every developer who wishes to learn Squeak -- regardless of previous experience.
Click below for Sample Chapter related to this title:
korienekch05.pdf
Preface.
Acknowledgments.
About the Authors.
PART I. WELCOME TO OBJECTLAND.
0. As our Story Begins.PART II. PROGRAMMING IN OBJECTLAND.
4. Smalltalk: The Language.PART III. ADVANCED OBJECTLAND.
13. Object-Oriented Thinking and Design.We have read our share of programming-language books and have learned much and little. The style used by conventional programming-language books is a blend between that of a reference book and that of a code-examples book, with some explanatory comments squeezed in between. When approaching the creation of this book, we never considered writing it in a conventional format. The unconventional nature of Smalltalk demands a novel approach. So, we wrote the book in the form of dialogues involving a human named Jim, who has reasons to converse about the nuances of the object-oriented paradigm, Smalltalk programming, and the Squeak environment. The dialogues take place between Jim and the Objective Wizard (an outspoken, outlandish, and outstanding object) in some chapters, and between Jim and the Objective Librarian (a well-spoken and reflective object) in other chapters.
It bears noting that the setting for this book is the virtual world of ObjectLand. However, since, as of yet, humans are unable to enter ObjectLand, you will want to keep in mind that ObjectLand's real-world analogue is Squeak.The intent of this book is to teach the reader to solve problems in the object-oriented paradigm and to implement solutions using the object-oriented programming language called Smalltalk in the Squeak environment. It must be read from start to finish and read completely. As you read it, you will soon realize that it is not a reference book. It is more like a storybook with To Do Lists. Read it as you would read a story. It has a plot; it has character; it's meant to entertain.
The other big difference between this book and conventional programming books is that you should have a current version of Squeak running in a computer next to you while you are reading. You can participate in the story, and the To Do Lists ask you to complete tasks to reinforce the chapters' information.
The conversation between Jim and the Objective Wizard contains English sentences interspersed with Smalltalk code. You can easily recognize the Smalltalk code because it is always in a different typeface--this one.
This book can be read in about 15 sittings. That's one chapter per sitting. The completion of the To Do Lists is mandatory. A To Do List appears at the conclusion of each chapter. You will notice that the completed To Do code is not included with the book. The reason for this is that we all know you will look at it as soon as a To Do task gets difficult. We don't want you to look at our solutions to these tasks. We want you to work through the difficulties and reap the learning rewards. If you really want to see our solutions, then check the "About the Authors" section to find out where we are.
Learning Smalltalk and the Squeak environment can be a tricky task, but after teaching introductory and advanced Smalltalk classes for a few years, we have figured out how people learn to use Smalltalk. We have found this book's approach to be an extremely effective path to understanding the object-oriented concepts and gaining skill in solving problems by writing squeaky clean code--in Squeak.
Try it, it works!
Once you have completed this book, you probably will not need it again. You will have been introduced to the cast of characters and will have learned the story. You will need a more advanced book. We suggest that you continue your journey up the Smalltalk learning curve by rambling through the list of texts for further reading that we've included in the back of this book--or perhaps, look for a future ObjectLand book someday.
Gene Korienek
Tom Wrensch
Doug Dechow
August 2001
Page numbers followed by f and t indicate figures and tables, respectively.
A
AlignmentMorph class, 254
allSatisfy message, 199–200
Analogy, definition of, 289
and message vs. & message, 184
Animation (thinking tool), 289
problem-solving with, 230
Animation, of objects, 282–286
Anthropomorphism
definition of, 289
problem-solving with, 231–232
Appearance menu item, 51, 51f
Application(s)
definition of, 289
prototypes of, in Smalltalk, 27
Argument, definition of, 289
Arithmetic, 147–157. See also Number class
execution order for, 152
heuristics for, 155
Array(s)
in animation, 283–284
creating, 96
Array collection, 164–167
nil in, 166
Assignment, definition of, 289
B
Background process(es), 200–201
Bag collection, 164–165
Binary message(s), 88, 289–290
Blacky, definition of, 290
Block(s)
definition of, 97, 186–187, 290
types of, 187–190
Blue button, 19, 20f
Boolean class, 183–186
BorderedMorph, 271f
creating, 267–268, 268f
Browser, function of, 60
C
Cartesian coordinate system
viewing, for morphs, 249–250
for visual display, 248–249
Cascade message, 89–91
Categories
browsing, 61, 63f
creating, 66–67, 67f
definition of, 61, 137
finding, 137–138
for messages, 237
for methods, 273–274, 274f, 285, 285t
second-level, 137
top-level, 137
Character(s), definition of, 96
Character class, 151
Class(es)
browsing, 62, 63f
creating, 68, 273, 279–287
definition of, 39, 85, 290
extending, 272–275, 275f
finding, 63–65, 64f, 65f, 135–136, 141
message interfaces for, 237
of Morphic framework, 252–258
objects in, 7
removing, 76
saving, 75
subclasses for, 111, 272–275, 275f
superclasses for, 111
Class comment(s), viewing, 247
Class definition
contents of, 40
creating, 236, 282, 284
inheritance in, 282
methods in, 41
Class hierarchy
inheritance in, 111–112
polymorphic messages in, 110
vs. Smalltalk, 84
for Stream, 175–176
Class method(s), in class definition, 40
Class name(s), syntax for, 86
Class variable(s)
in class definition, 40
definition of, 290
scope and usage of, 98, 103
Code
errors reported by, 122
optimizing, 128–129
collect message, 189
Collection(s), 159–179
saving to files, 217
Collection class(es)
conversion messages for, 173–174
hierarchy of, 161–162
iteration messages for, 189–190
messages for, 162–163
subclasses of, 163–173, 178
Color palette, in changing morph color, 266f
Comparison message(s), 185
Compiler error(s), 122–123
Compiler, in saving methods, 101
Composite morph(s), 252
disassembling, 278–279, 279f
ComputerLand, definition of, 290
Conditional statements, 186
Conversion message, for collections, 173–174
Coordinate system
viewing for morphs, 249–250
for visual display, 248–249
Cursor(s), HandMorph class as, 255–256
D
3D subproject, 18
DataStream class, 210, 215–216
Date class, 151
Debugger, 125–126
definition of, 289
detect message, 199
Dictionary collection, 172
Directory (ies), creating and deleting, 214. See also FileDirectory class
Do it, 29f
definition of, 290
vs. Print it, 28
do message, 189
Drool, superconducting, 290
Dynamic binding
definition of, 290
and polymorphism, 108
E
Embedded code, debugging with, 126–127
Embedding
definition of, 267
disassembling, 278–279, 279f
of morphs, 271–272, 272f
Encapsulation, 107–108, 115, 290
Error(s)
compiler for, 122–123
exceptions for, 202–203
runtime, 122, 123–125
sources for reporting, 122
error: method, 123
Event handling, in mouse click, 282
Exception class, for errors, 202–203
Execution, order of, 91–94, 103, 152, 293. See also Do it
Expression(s), 91
components of, 94–95
definition of, 42
in methods, 43
F
false pseudo variable, 98–99, 183
File(s), 211–213
closing, 213
opening, 72–73, 73f, 211
saving, 74–75, 211
saving objects to, 216–217
File in, 77–78, 77f
File out, 75
FileDirectory class, 210, 214. See also Directory (ies)
FileStream object, 210–211
Float class, 154
fork message, 201
Form class, 280
in animation, 283
Fraction class, 155
Full screen menu items, 53
G
Games subproject, 18
Garbage collector, 290. See also Blacky
get method, 108
Global variable(s), 95
defining, 97
scope and usage of, 98, 103
Wo