is neccessary for invoking methods from the current method's superclass definition (class definition of the superclass of the class defining the current method)
Maybe this is not too easy explanation, so look at the following examples:
Class "A" has the following two instance methods
^ self test + 1.
Let's have such a Smalltalk program:
a:= A new. "allocates new instance of class A"
^ a inctest. "return: 2"
I hope, that now it should be more clear what self is
Let's show more complex example ,for which you should be familiar with aspects of inheritance in object-oriented languages, that were not covered in this text:
Class "A" has the following class method defined
Class "B" is a sublass of "A" and has the class methods defined
a:= self new
^ a foo + a goo.
^ self test.
^ super test.
Class "C" is a subclass of "B" and has the following class methods defined
^ self try.
What will be the result of the following messgae expression:
^ C doItAll.
If you have allready understood the semantics of self and super, you should see that answer is: 112.