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