Table of Contents
- why you should learn Smalltalk
- methods versus functions
- programming idioms and programming principles
- the workspace and the transcript
- expressions, receivers, messages, and answers
- methods and arguments
- unary, binary, and keyword methods
- method precedence
- expression separation
- strings
- patterns and instantiation
- arithmetic messages
- integer, floating-point, and rational numbers
- absence of special precedence conventions for arithmetic
- number-class conversion
- method definition
- the self object
- returning from methods
- blank insensitivity and case sensitivity
- message cascading
- string concatenation
- comments
- arguments and parameters
- parameters and local scope
- equal and not equal
- greater than and less than
- negation
- class-membership predicates
- Boolean expressions
ifTrue:
and ifFalse:
- blocks
- local-variable initialization and assignment
- the role of
nil
- local scope
- making programs easier to reuse, read, and debug
- making programs easier to augment, improve, and change
- instance variables, setters, and getters
- derived attributes
- subclasses and superclasses
- inheriting instance variables and methods
- method overriding
- class-membership predicates
- polymorphism
- instance-creation methods and initializors
- definition of new versions of
new
- hiding implementation details
- making programs easier write and maintain
- explicit representation
- the modularity principle
- the no-duplication principle
- the look-it-up principle
- the is-a versus has-a principle
- iteration expressions
whileTrue:
and whileFalse:
timesRepeat:
- methods that use themselves recursively
- the base part and the recursion part
- recursion versus iteration efficiency
- class variables and class-variable access
- class-variable setters and getters
- the Smalltalk dictionary
- creation of new dictionaries
- pool dictionaries
- manipulating arrays of numeric elements
- iterating with elements as parameter values
- iterating with numeric indexes as parameter values
- combining array elements with
inject:into:
- arrays of arrays
- ordered collections of elements
- iteration over ordered collections
- bags and sets
- sorted collections and sort blocks
- creating file streams
- reading strings, integers, and floats from input streams
- writing to output streams
- closing streams
- strings and characters
- reading lines from files
- extracting characters from strings
- converting strings to streams
- understanding field widths and padding characters
- determining the length of a string
- creating strings with specified length and filler
- system simulation
- event queues
- application classes
Time
and Date
objects
- time and date creation, manipulation, and comparison
- use of dates in simulations
- defining binary methods
- creating new classes for numberlike objects
- the walkback window
- the debugger
- the inspector
- the stepper
- senders and implementers
- indicating definitions are expected
- defining class predicates
- announcing errors
- absence of text files
- filing in and filing out
- the chunk-file format
- screen coordinate system
- points and rectangles
- view managers, top panes, and graph panes
- the
createViews
method
- the
when:perform:
method
- pens, lines, and displaying text
- using pens and graphics contexts
- changing colors, widths, and fonts
- drawing plain and filled polygons
- creating list boxes
- loading list boxes with elements
- determining which element has been selected
- sending messages to named views
- activating events with
event:
- menu items, menus, and menu bars
- access to files via file dialogs
- entering the GUI builder
- installing graphical elements
- sizing and alignment
- understanding events and callbacks
- understanding categories and protocols
- filing out categories and protocols
- reading and writing file-stream distinctions
- change and update messages
- dependent parts and views
- using value holders to hold values
- using aspect adapters to translate messages
- application models
- VisualWorks GUI Builder
- defining new viewers
- defining new controllers