Characteristics of Smalltalk-72:
fred move up x inches
Smalltalk influenced the development of other object-oriented languages, such as C++, Objective C, CLOS, Java, and our own Cecil language, as well as others.
examples: "new", "copy"
Date today Time now hours
Array new someCollection copy
examples: new:, at:, at: put:
Array new: 10
someArray at: 1 put: 54
anArray at: 1
examples: + - * /
5 * 9, 3 + 2 * 5
25, NOT 13 Use parens to get what you want: 3 + (2 * 5)
Note that we will very frequently be composing messages -- for example
Time now hours + 1first sends the message
now to the class Time,
which returns the current time (an instance of Time). We then send this
object the message hours, which returns an integer. Then we
send the message + with the argument 1 to this integer,
returning another integer (which will be the current hour plus 1).
Object subclass: #Stack instanceVariableNames: 'anArray top' classVariableNames: '' poolDictionaries: ''Now define some methods:
push: item top := top+1. anArray at: top put: item pop | item | item := anArray at: top. top := top-1. ^ item setsize: n anArray := Array new: n. top := 0.Some code to test the stack:
S := Stack new. S setsize: 10. S inspect. S push: 'hi there'. S push: 3.14159. S popAdding error checking and growing:
push: item
| save |
top := top+1.
top > anArray size ifTrue:
"anArray is about to overflow. make a new array twice as big, and
copy the old values into it"
[save := anArray.
anArray := Array new: 2*save size.
1 to: save size do:
[:k | anArray at: k put: (save at: k)]].
anArray at: top put: item
pop | item |
self isEmpty ifTrue: [self error: 'trying to pop an empty stack'].
item := anArray at: top.
top := top-1.
^ item
isEmpty
^ top=0